[2026-08-21 04:56:58.750] [INFO ] [Ysp.Scheduler] Started. SFTP in 22h 3m, MIS in 3h 3m [2026-08-21 04:56:58.785] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 04:56:58.797] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 04:57:00.307] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 04:57:00.307] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 04:57:00.308] [INFO ] Building initial filter cache... [2026-08-21 04:57:00.325] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=2.2ms idle=907.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-08-21 04:57:00.333] [DEBUG] QUERY OK source="filter_usage" db=0.5ms queue=1.9ms idle=75.2ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 04:57:00.333] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 04:57:00.401] [DEBUG] QUERY OK source="core_transactions" db=11.8ms queue=2.6ms idle=62.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 04:57:00.408] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=2.7ms idle=8.7ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 04:57:00.408] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 04:57:55.235] [INFO ] [Ysp.Scheduler] Started. SFTP in 22h 2m, MIS in 3h 2m [2026-08-21 04:57:55.259] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 04:57:55.269] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 04:57:56.752] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 04:57:56.753] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 04:57:56.753] [INFO ] Building initial filter cache... [2026-08-21 04:57:56.764] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=1.3ms idle=1802.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-08-21 04:57:56.773] [DEBUG] QUERY OK source="filter_usage" db=0.8ms queue=2.3ms idle=866.1ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 04:57:56.773] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 04:57:56.835] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 04:57:56.837] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.6ms idle=74.4ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 04:57:56.842] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=0.7ms idle=68.7ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 04:58:10.455] [INFO ] [Ysp.Scheduler] Started. SFTP in 22h 1m, MIS in 3h 1m [2026-08-21 04:58:10.490] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 04:58:10.504] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 04:58:11.897] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 04:58:11.897] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 04:58:11.898] [INFO ] Building initial filter cache... [2026-08-21 04:58:11.911] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.5ms idle=1695.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-08-21 04:58:11.919] [DEBUG] QUERY OK source="filter_usage" db=0.4ms queue=0.5ms idle=828.7ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 04:58:11.919] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 04:58:11.989] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 04:58:12.011] [DEBUG] QUERY OK source="core_transactions" db=6.7ms queue=3.2ms idle=92.7ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 04:58:12.014] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=0.5ms idle=93.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 04:58:12.053] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=45.7ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 04:58:12.054] [DEBUG] QUERY OK source="merchant_adjustments" db=0.3ms idle=39.9ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 04:58:12.054] [INFO ] [EmailPdfGenerator] Rendering settlement_summary_pdf to PDF: Settlement_Summary_2026-08-06_to_2026-08-06.pdf [2026-08-21 04:58:12.070] [INFO ] [EmailPdfGenerator] ✓ HTML rendered, size: 5736 bytes [2026-08-21 04:58:12.070] [INFO ] [EmailPdfGenerator] ✓ HTML written to /tmp/platform_web_pdf_1219/document.html [2026-08-21 04:58:12.072] [INFO ] [EmailPdfGenerator] Using wkhtmltopdf [2026-08-21 04:58:12.720] [INFO ] [EmailPdfGenerator] ✓ PDF rendered successfully, size: 20736 bytes [2026-08-21 04:59:05.352] [INFO ] [Ysp.Scheduler] Started. SFTP in 22h 0m, MIS in 3h 0m [2026-08-21 04:59:05.413] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 04:59:05.450] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 04:59:07.107] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 04:59:07.107] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 04:59:07.108] [INFO ] Building initial filter cache... [2026-08-21 04:59:07.129] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.8ms idle=406.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-08-21 04:59:07.135] [DEBUG] QUERY OK source="filter_usage" db=0.7ms queue=0.7ms idle=215.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-08-21 04:59:07.136] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 04:59:07.221] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 04:59:07.257] [DEBUG] QUERY OK source="core_transactions" db=10.4ms queue=1.1ms idle=126.3ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 04:59:07.263] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=1.2ms idle=125.9ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 04:59:07.351] [DEBUG] QUERY OK source="core_transactions" db=3.1ms queue=0.2ms idle=92.4ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 04:59:07.353] [DEBUG] QUERY OK source="merchant_adjustments" db=1.3ms idle=88.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 04:59:07.353] [INFO ] [EmailPdfGenerator] Rendering settlement_summary_pdf to PDF: Settlement_Summary_2026-08-06_to_2026-08-06.pdf [2026-08-21 04:59:07.387] [INFO ] [EmailPdfGenerator] ✓ HTML rendered, size: 5736 bytes [2026-08-21 04:59:07.388] [INFO ] [EmailPdfGenerator] ✓ HTML written to /tmp/platform_web_pdf_5794/document.html [2026-08-21 04:59:07.390] [INFO ] [EmailPdfGenerator] Using wkhtmltopdf [2026-08-21 04:59:08.036] [INFO ] [EmailPdfGenerator] ✓ PDF rendered successfully, size: 20736 bytes [2026-08-21 05:02:46.189] [INFO ] [Ysp.Scheduler] Started. SFTP in 21h 57m, MIS in 2h 57m [2026-08-21 05:02:46.229] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 05:02:46.238] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 05:02:47.835] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 05:02:47.836] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 05:02:47.836] [INFO ] Building initial filter cache... [2026-08-21 05:02:47.874] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=1.0ms idle=990.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-08-21 05:02:47.892] [DEBUG] QUERY OK source="filter_usage" db=0.5ms queue=0.6ms idle=30.2ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 05:02:47.892] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 05:02:48.039] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 05:02:48.078] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-08-21 05:02:48.092] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-08-21 05:02:49.053] [DEBUG] Tzdata polling for update. [2026-08-21 05:02:49.898] [DEBUG] Tzdata polling shows the loaded tz database is up to date. [2026-08-21 05:02:54.986] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:02:54.986] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T05:02:54Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T05:02:54Z","value":"24"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T05:02:54Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T05:02:54Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T05:02:54Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T05:02:54Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T05:02:54Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T05:02:54Z","value":"3.8.7.5"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T05:02:54Z","vendor":"MoreFun"} [2026-08-21 05:02:54.991] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T05:02:54Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T05:02:54Z", "value" => "24"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T05:02:54Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T05:02:54Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T05:02:54Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T05:02:54Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T05:02:54Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T05:02:54Z", "value" => "3.8.7.5"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:02:54Z", "vendor" => "MoreFun"} [2026-08-21 05:02:54.991] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.5", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 05:02:55.007] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:02:55.008] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 05:02:55.019] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms queue=3.9ms idle=1096.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-08-21 05:02:55.022] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.7ms idle=97.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-08-21 05:02:55.040] [DEBUG] QUERY OK source="parameter_template_values" db=1.2ms queue=1.7ms idle=11.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-08-21 05:02:55.077] [DEBUG] QUERY OK source="parameter_definitions" db=1.2ms queue=2.0ms idle=52.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-08-21 05:02:55.092] [DEBUG] QUERY OK source="pos_terminal" db=0.6ms queue=1.8ms idle=56.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-08-21 05:02:55.122] [DEBUG] QUERY OK source="pos_merchant" db=0.4ms queue=25.1ms idle=18.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 05:02:55.130] [DEBUG] QUERY OK db=0.9ms queue=0.5ms idle=1419.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 ["626165170000000"] [2026-08-21 05:02:55.130] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 05:02:55.143] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms queue=0.6ms idle=50.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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 05:02:55.151] [DEBUG] QUERY OK source="address" db=0.3ms queue=1.8ms idle=27.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 05:02:55.151] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 05:02:55.164] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 05:02:55.262] [DEBUG] QUERY OK db=22.1ms queue=1.3ms idle=80.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d85fcde07efe49c6c78e846658e7cb6ed61a8bbc885a4c34181555147ebafcb0", 612, 938, ~U[2026-08-21 05:02:55Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 05:02:55], ~N[2026-08-21 05:02:55]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 05:02:55.263] [INFO ] AutoPushService: Created push log 48215 for MF919 params.zip [2026-08-21 05:02:55.270] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 612, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 05:02:55.270] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 05:02:55.285] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 05:02:55.299] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms queue=3.6ms idle=142.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-08-21 05:02:55.309] [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-08-21 05:02:55.356] [DEBUG] QUERY OK db=45.5ms queue=1.0ms idle=62.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "278b7d32b734010121f0ee90880ebfbd82055e304af28e70590478fc87ef3f46", 1923, 17947, ~U[2026-08-21 05:02:55Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 05:02:55], ~N[2026-08-21 05:02:55]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 05:02:55.357] [INFO ] AutoPushService: Created push log 48216 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 05:02:55.357] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 1923, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 05:02:55.357] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 05:02:55.357] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 05:02:55.358] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=58.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-08-21 05:02:55.386] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 05:02:55.391] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms idle=31.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 05:02:55.391] [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-08-21 05:02:55.490] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 05:02:55.490] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 05:02:55.490] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 05:02:55.491] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=132.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-08-21 05:02:55.491] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 05:02:55.491] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 05:02:55.516] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=123.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 05:02:55.536] [DEBUG] QUERY OK source="tms_terminals" db=18.2ms queue=0.8ms idle=25.5ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 05:02:55], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 05:02:55.544] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:02:55.551] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 05:02:55.551] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 05:02:55.551] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 05:02:55.556] [INFO ] Event published: terminal_updated [2026-08-21 05:02:55.577] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.8ms queue=1.5ms idle=58.6ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 05:02:55], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 05:02:55.579] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=1.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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 05:02:55.592] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms queue=1.5ms idle=10.8ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 05:02:55.592] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 05:02:55.668] [DEBUG] QUERY OK source="tms_terminals" db=48.9ms queue=41.4ms idle=41.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.5", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 05:02:55], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:02:55.674] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.6ms idle=81.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-08-21 05:02:55.675] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=7.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-08-21 05:02:55.677] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms 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-08-21 05:02:55.677] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.5", "3.8.5"}] [2026-08-21 05:02:55.845] [DEBUG] QUERY OK source="parameter_push_logs" db=153.3ms queue=0.5ms idle=15.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-08-21 04:32:55]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 05:02:55.845] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.5, target: 3.8.5) [2026-08-21 05:02:55.845] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 05:02:55.864] [DEBUG] QUERY OK source="tms_terminals" db=16.0ms idle=171.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-08-21 05:02:55.867] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms idle=19.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 05:02:55.869] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 05:02:55.870] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:02:55.998] [DEBUG] QUERY OK source="tms_terminals" db=85.2ms queue=42.3ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:02:55], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:02:56.067] [DEBUG] QUERY OK db=57.5ms queue=1.6ms idle=80.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T05:02:54Z", ~N[2026-08-21 05:02:56], ~N[2026-08-21 05:02:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:02:56.074] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76510, oid: "organization_id", upload_time: "2026-08-21T05:02:54Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:02:56], updated_at: ~N[2026-08-21 05:02:56]} [2026-08-21 05:02:56.074] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T05:02:54Z", "value" => "online"} [2026-08-21 05:02:56.120] [DEBUG] QUERY OK db=41.6ms queue=3.7ms idle=76.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T05:02:54Z", "online", "status", 76510, ~N[2026-08-21 05:02:56], ~N[2026-08-21 05:02:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:02:56.120] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774138, itemkey: "status", value: "online", timestamp: "2026-08-21T05:02:54Z", message: "Terminal status update", status_log_id: 76510, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:02:56], updated_at: ~N[2026-08-21 05:02:56]}} [2026-08-21 05:02:56.120] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 05:02:56.166] [DEBUG] QUERY OK source="tms_terminals" db=44.6ms queue=0.4ms idle=54.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:02:56], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-08-21 05:02:56.167] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T05:02:54Z", "value" => "24"} [2026-08-21 05:02:56.220] [DEBUG] QUERY OK db=50.4ms queue=1.3ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T05:02:54Z", "24", "battery", 76510, ~N[2026-08-21 05:02:56], ~N[2026-08-21 05:02:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:02:56.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774139, itemkey: "battery", value: "24", timestamp: "2026-08-21T05:02:54Z", message: "Battery level", status_log_id: 76510, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:02:56], updated_at: ~N[2026-08-21 05:02:56]}} [2026-08-21 05:02:56.220] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T05:02:54Z", "value" => "online"} [2026-08-21 05:02:56.258] [DEBUG] QUERY OK db=37.0ms queue=0.7ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T05:02:54Z", "online", "network", 76510, ~N[2026-08-21 05:02:56], ~N[2026-08-21 05:02:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:02:56.259] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774140, itemkey: "network", value: "online", timestamp: "2026-08-21T05:02:54Z", message: "Network connectivity", status_log_id: 76510, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:02:56], updated_at: ~N[2026-08-21 05:02:56]}} [2026-08-21 05:02:56.259] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 05:02:56.259] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=39.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:02:56], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-08-21 05:02:56.260] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T05:02:54Z", "value" => "0"} [2026-08-21 05:02:56.286] [DEBUG] QUERY OK db=26.1ms idle=2.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T05:02:54Z", "0", "cpu", 76510, ~N[2026-08-21 05:02:56], ~N[2026-08-21 05:02:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:02:56.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774141, itemkey: "cpu", value: "0", timestamp: "2026-08-21T05:02:54Z", message: "CPU usage percentage", status_log_id: 76510, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:02:56], updated_at: ~N[2026-08-21 05:02:56]}} [2026-08-21 05:02:56.287] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T05:02:54Z", "value" => "1.0.0"} [2026-08-21 05:02:56.313] [DEBUG] QUERY OK db=25.5ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T05:02:54Z", "1.0.0", "parameter_config", 76510, ~N[2026-08-21 05:02:56], ~N[2026-08-21 05:02:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:02:56.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774142, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T05:02:54Z", message: "Current parameters version", status_log_id: 76510, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:02:56], updated_at: ~N[2026-08-21 05:02:56]}} [2026-08-21 05:02:56.314] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T05:02:54Z", "value" => "1.0.1"} [2026-08-21 05:02:56.371] [DEBUG] QUERY OK db=57.0ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T05:02:54Z", "1.0.1", "emv_config", 76510, ~N[2026-08-21 05:02:56], ~N[2026-08-21 05:02:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:02:56.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774143, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T05:02:54Z", message: "Current EMV config version", status_log_id: 76510, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:02:56], updated_at: ~N[2026-08-21 05:02:56]}} [2026-08-21 05:02:56.372] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T05:02:54Z", "value" => ""} [2026-08-21 05:02:56.414] [DEBUG] QUERY OK db=40.9ms queue=0.7ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T05:02:54Z", "keys_config", 76510, ~N[2026-08-21 05:02:56], ~N[2026-08-21 05:02:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:02:56.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774144, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T05:02:54Z", message: "Current keys config version", status_log_id: 76510, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:02:56], updated_at: ~N[2026-08-21 05:02:56]}} [2026-08-21 05:02:56.414] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T05:02:54Z", "value" => "3.8.7.5"} [2026-08-21 05:02:56.471] [DEBUG] QUERY OK db=56.9ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T05:02:54Z", "3.8.7.5", "application", 76510, ~N[2026-08-21 05:02:56], ~N[2026-08-21 05:02:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:02:56.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774145, itemkey: "application", value: "3.8.7.5", timestamp: "2026-08-21T05:02:54Z", message: "Current application version", status_log_id: 76510, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:02:56], updated_at: ~N[2026-08-21 05:02:56]}} [2026-08-21 05:02:56.472] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=58.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:02:56], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-08-21 05:02:56.477] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T05:02:55Z"} [2026-08-21 05:02:56.481] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:02:55Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 2, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:03:00.078] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:03:00.078] [INFO ] Incoming JSON payload: {"oid":"e011cf27-4f04-43b3-b6be-7a0ff09a7e79","sn":"98251226730001","uploadTime":"2026-08-21T05:02:59Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"ram_free_mb","value":"881","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:02:59Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:03:00.079] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e011cf27-4f04-43b3-b6be-7a0ff09a7e79", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:02:59Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:02:59Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:02:59Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:02:59Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:02:59Z", "value" => "881"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:02:59Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:02:59Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:02:59Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:02:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:02:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:02:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:02:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:02:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:02:59Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:02:59Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:02:59Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:02:59Z", "vendor" => "morefun"} [2026-08-21 05:03:00.080] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:03:00.080] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:03:00.080] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:03:00.081] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=371.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-08-21 05:03:00.082] [DEBUG] QUERY OK source="parameter_templates" db=0.2ms queue=0.4ms idle=141.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-08-21 05:03:00.082] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:03:00.083] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:03:00.161] [DEBUG] QUERY OK source="tms_terminals" db=35.0ms queue=43.2ms idle=1.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 05:03:00], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 05:03:00.162] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:03:00.162] [INFO ] Event published: terminal_updated [2026-08-21 05:03:00.162] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 05:03:00.162] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 05:03:00.162] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 05:03:00.163] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.7ms queue=0.3ms idle=79.5ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 05:03:00], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 05:03:00.166] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms 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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 05:03:00.168] [DEBUG] QUERY OK source="terminal_group_rules" db=1.7ms queue=0.2ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 05:03:00.168] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 05:03:00.257] [DEBUG] QUERY OK source="tms_terminals" db=51.2ms queue=42.2ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 05:03:00], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:03:00.257] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:03:00.259] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=89.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 05:03:00.300] [DEBUG] QUERY OK source="tms_terminals" db=38.9ms queue=1.2ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:03:00], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:03:00.357] [DEBUG] QUERY OK db=53.7ms queue=2.5ms idle=40.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e011cf27-4f04-43b3-b6be-7a0ff09a7e79", "2026-08-21T05:02:59Z", ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:03:00.357] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76511, oid: "e011cf27-4f04-43b3-b6be-7a0ff09a7e79", upload_time: "2026-08-21T05:02:59Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]} [2026-08-21 05:03:00.357] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:02:59Z", "value" => "morefun"} [2026-08-21 05:03:00.395] [DEBUG] QUERY OK db=37.1ms queue=0.6ms idle=57.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "morefun", "vendor", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:00.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774146, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:00.396] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:02:59Z", "value" => "kiosk_launcher"} [2026-08-21 05:03:00.428] [DEBUG] QUERY OK db=29.8ms queue=2.1ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "kiosk_launcher", "model", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:00.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774147, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:00.428] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:02:59Z", "value" => "1.0"} [2026-08-21 05:03:00.459] [DEBUG] QUERY OK db=30.9ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "1.0", "app_version", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:00.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774148, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:00.460] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:02:59Z", "value" => "13"} [2026-08-21 05:03:00.492] [DEBUG] QUERY OK db=32.0ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "13", "android_version", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:00.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774149, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:00.493] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:02:59Z", "value" => "881"} [2026-08-21 05:03:00.547] [DEBUG] QUERY OK db=53.5ms queue=0.2ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "881", "ram_free_mb", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:00.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774150, itemkey: "ram_free_mb", value: "881", timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:00.547] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:02:59Z", "value" => "WIFI"} [2026-08-21 05:03:00.601] [DEBUG] QUERY OK db=53.2ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "WIFI", "network_type", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:00.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774151, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:00.601] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:02:59Z", "value" => "true"} [2026-08-21 05:03:00.648] [DEBUG] QUERY OK db=46.3ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "true", "kiosk_active", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:00.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774152, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:00.648] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:02:59Z", "value" => ""} [2026-08-21 05:03:00.673] [DEBUG] QUERY OK db=23.8ms queue=0.4ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:02:59Z", "sim_operator", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:00.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774153, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:00.673] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:02:59Z", "value" => "UNKNOWN"} [2026-08-21 05:03:00.731] [DEBUG] QUERY OK db=56.7ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "UNKNOWN", "sim_number", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:00.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774154, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:00.731] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:02:59Z", "value" => "UNKNOWN"} [2026-08-21 05:03:00.817] [DEBUG] QUERY OK db=84.9ms idle=1.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "UNKNOWN", "sim_iccid", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:00.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774155, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:00.817] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:02:59Z", "value" => "UNKNOWN"} [2026-08-21 05:03:00.860] [DEBUG] QUERY OK db=42.3ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "UNKNOWN", "sim_imsi", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:00.860] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774156, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:00.860] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:02:59Z", "value" => "UNKNOWN"} [2026-08-21 05:03:00.898] [DEBUG] QUERY OK db=36.7ms queue=0.1ms idle=16.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "UNKNOWN", "sim_iccid2", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:00.898] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774157, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:00.898] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:02:59Z", "value" => "UNKNOWN"} [2026-08-21 05:03:00.935] [DEBUG] QUERY OK db=36.7ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "UNKNOWN", "sim_imsi2", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:00.935] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774158, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:00.936] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:02:59Z", "value" => "21"} [2026-08-21 05:03:00.977] [DEBUG] QUERY OK db=40.3ms queue=0.8ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "21", "data_usage_mb", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:00.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774159, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:00.977] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:02:59Z", "value" => "0"} [2026-08-21 05:03:01.028] [DEBUG] QUERY OK db=50.4ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "0", "mobile_data_mb", 76511, ~N[2026-08-21 05:03:00], ~N[2026-08-21 05:03:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:01.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774160, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:00], updated_at: ~N[2026-08-21 05:03:00]}} [2026-08-21 05:03:01.029] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:02:59Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:03:01.074] [DEBUG] QUERY OK db=43.6ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:02:59Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76511, ~N[2026-08-21 05:03:01], ~N[2026-08-21 05:03:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:01.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774161, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:02:59Z", message: nil, status_log_id: 76511, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:01], updated_at: ~N[2026-08-21 05:03:01]}} [2026-08-21 05:03:12.856] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:03:12.856] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T05:03:12Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T05:03:12Z","value":"24"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T05:03:12Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T05:03:12Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T05:03:12Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T05:03:12Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T05:03:12Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T05:03:12Z","value":"3.8.7.5"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T05:03:12Z","vendor":"MoreFun"} [2026-08-21 05:03:12.857] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T05:03:12Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T05:03:12Z", "value" => "24"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T05:03:12Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T05:03:12Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T05:03:12Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T05:03:12Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T05:03:12Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T05:03:12Z", "value" => "3.8.7.5"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:03:12Z", "vendor" => "MoreFun"} [2026-08-21 05:03:12.857] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.5", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 05:03:12.857] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:03:12.857] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 05:03:12.859] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=857.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-08-21 05:03:12.860] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=148.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 05:03:12.861] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms idle=1.5ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 05:03:12.863] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.5ms idle=1.5ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 05:03:12.864] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms 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-08-21 05:03:12.904] [DEBUG] QUERY OK source="pos_merchant" db=40.1ms idle=1.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 05:03:12.906] [DEBUG] QUERY OK db=0.4ms queue=0.9ms idle=1193.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 ["626165170000000"] [2026-08-21 05:03:12.906] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 05:03:12.907] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms queue=0.2ms idle=42.3ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 05:03:12.908] [DEBUG] QUERY OK source="address" db=0.6ms queue=0.1ms 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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 05:03:12.908] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 05:03:12.993] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 05:03:13.562] [DEBUG] QUERY OK db=566.6ms queue=0.4ms idle=86.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ff99a7441cc70253dd47c7828c6c8076bf457f6f0474d9dd0096335fc249905c", 2147, 938, ~U[2026-08-21 05:03:12Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 05:03:12], ~N[2026-08-21 05:03:12]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 05:03:13.562] [INFO ] AutoPushService: Created push log 48217 for MF919 params.zip [2026-08-21 05:03:13.562] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 2147, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 05:03:13.562] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 05:03:13.562] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 05:03:13.564] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms idle=560.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-08-21 05:03:13.567] [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-08-21 05:03:13.595] [DEBUG] QUERY OK db=26.3ms idle=7.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "83e4619c76cf1ab437716a6a57aa65e08bcbe947459cad1573787e0c8411a2b1", 2243, 17947, ~U[2026-08-21 05:03:13Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 05:03:13], ~N[2026-08-21 05:03:13]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 05:03:13.596] [INFO ] AutoPushService: Created push log 48218 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 05:03:13.596] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2243, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 05:03:13.596] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 05:03:13.596] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 05:03:13.597] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=32.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-08-21 05:03:13.597] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 05:03:13.599] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.2ms idle=3.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 05:03:13.599] [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-08-21 05:03:13.600] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 05:03:13.601] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 05:03:13.601] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 05:03:13.602] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=4.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 05:03:13.603] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 05:03:13.603] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 05:03:13.604] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=4.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:03:13.649] [DEBUG] QUERY OK source="tms_terminals" db=44.8ms idle=1.4ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 05:03:13], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 05:03:13.649] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:03:13.649] [INFO ] Event published: terminal_updated [2026-08-21 05:03:13.649] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 05:03:13.649] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 05:03:13.649] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 05:03:13.651] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.0ms idle=45.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 05:03:13], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 05:03:13.651] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 05:03:13.652] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms queue=0.1ms idle=0.1ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 05:03:13.652] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 05:03:13.745] [DEBUG] QUERY OK source="tms_terminals" db=53.4ms queue=40.5ms idle=0.2ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.5", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 05:03:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:03:13.746] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=93.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 05:03:13.747] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms queue=0.1ms idle=1.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 05:03:13.747] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=0.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 05:03:13.748] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.5", "3.8.5"}] [2026-08-21 05:03:13.769] [DEBUG] QUERY OK source="parameter_push_logs" db=20.6ms 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-08-21 04:33:13]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 05:03:13.769] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.5, target: 3.8.5) [2026-08-21 05:03:13.769] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 05:03:13.770] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 05:03:13.770] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 05:03:13.771] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 05:03:13.772] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:03:13.909] [DEBUG] QUERY OK source="tms_terminals" db=96.4ms queue=40.5ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:03:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:03:13.933] [DEBUG] QUERY OK db=23.7ms idle=137.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T05:03:12Z", ~N[2026-08-21 05:03:13], ~N[2026-08-21 05:03:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:03:13.933] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76512, oid: "organization_id", upload_time: "2026-08-21T05:03:12Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:13], updated_at: ~N[2026-08-21 05:03:13]} [2026-08-21 05:03:13.933] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T05:03:12Z", "value" => "online"} [2026-08-21 05:03:13.976] [DEBUG] QUERY OK db=42.6ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T05:03:12Z", "online", "status", 76512, ~N[2026-08-21 05:03:13], ~N[2026-08-21 05:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:13.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774162, itemkey: "status", value: "online", timestamp: "2026-08-21T05:03:12Z", message: "Terminal status update", status_log_id: 76512, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:13], updated_at: ~N[2026-08-21 05:03:13]}} [2026-08-21 05:03:13.977] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 05:03:13.977] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T05:03:12Z", "value" => "24"} [2026-08-21 05:03:14.014] [DEBUG] QUERY OK db=36.8ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T05:03:12Z", "24", "battery", 76512, ~N[2026-08-21 05:03:13], ~N[2026-08-21 05:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:14.015] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774163, itemkey: "battery", value: "24", timestamp: "2026-08-21T05:03:12Z", message: "Battery level", status_log_id: 76512, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:13], updated_at: ~N[2026-08-21 05:03:13]}} [2026-08-21 05:03:14.015] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T05:03:12Z", "value" => "online"} [2026-08-21 05:03:14.035] [DEBUG] QUERY OK db=19.9ms idle=10.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T05:03:12Z", "online", "network", 76512, ~N[2026-08-21 05:03:14], ~N[2026-08-21 05:03:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:14.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774164, itemkey: "network", value: "online", timestamp: "2026-08-21T05:03:12Z", message: "Network connectivity", status_log_id: 76512, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:14], updated_at: ~N[2026-08-21 05:03:14]}} [2026-08-21 05:03:14.036] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 05:03:14.036] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T05:03:12Z", "value" => "0"} [2026-08-21 05:03:14.080] [DEBUG] QUERY OK db=43.6ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T05:03:12Z", "0", "cpu", 76512, ~N[2026-08-21 05:03:14], ~N[2026-08-21 05:03:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:14.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774165, itemkey: "cpu", value: "0", timestamp: "2026-08-21T05:03:12Z", message: "CPU usage percentage", status_log_id: 76512, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:14], updated_at: ~N[2026-08-21 05:03:14]}} [2026-08-21 05:03:14.080] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T05:03:12Z", "value" => "1.0.0"} [2026-08-21 05:03:14.125] [DEBUG] QUERY OK db=43.8ms queue=0.7ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T05:03:12Z", "1.0.0", "parameter_config", 76512, ~N[2026-08-21 05:03:14], ~N[2026-08-21 05:03:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:14.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774166, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T05:03:12Z", message: "Current parameters version", status_log_id: 76512, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:14], updated_at: ~N[2026-08-21 05:03:14]}} [2026-08-21 05:03:14.126] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T05:03:12Z", "value" => "1.0.1"} [2026-08-21 05:03:14.180] [DEBUG] QUERY OK db=53.6ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T05:03:12Z", "1.0.1", "emv_config", 76512, ~N[2026-08-21 05:03:14], ~N[2026-08-21 05:03:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:14.181] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774167, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T05:03:12Z", message: "Current EMV config version", status_log_id: 76512, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:14], updated_at: ~N[2026-08-21 05:03:14]}} [2026-08-21 05:03:14.181] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T05:03:12Z", "value" => ""} [2026-08-21 05:03:14.214] [DEBUG] QUERY OK db=30.2ms queue=1.9ms idle=56.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T05:03:12Z", "keys_config", 76512, ~N[2026-08-21 05:03:14], ~N[2026-08-21 05:03:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:14.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774168, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T05:03:12Z", message: "Current keys config version", status_log_id: 76512, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:14], updated_at: ~N[2026-08-21 05:03:14]}} [2026-08-21 05:03:14.214] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T05:03:12Z", "value" => "3.8.7.5"} [2026-08-21 05:03:14.270] [DEBUG] QUERY OK db=55.5ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T05:03:12Z", "3.8.7.5", "application", 76512, ~N[2026-08-21 05:03:14], ~N[2026-08-21 05:03:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:14.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774169, itemkey: "application", value: "3.8.7.5", timestamp: "2026-08-21T05:03:12Z", message: "Current application version", status_log_id: 76512, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:14], updated_at: ~N[2026-08-21 05:03:14]}} [2026-08-21 05:03:14.271] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T05:03:13Z"} [2026-08-21 05:03:14.271] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:03:13Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 6, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:03:15.842] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T05:02:55Z"} [2026-08-21 05:03:15.843] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:02:55Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 3, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:03:30.183] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:03:30.183] [INFO ] Incoming JSON payload: {"oid":"319a07d5-e8d6-4676-a4a0-217fe1e7b992","sn":"98251226730001","uploadTime":"2026-08-21T05:03:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"ram_free_mb","value":"887","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:03:29Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:03:30.186] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "319a07d5-e8d6-4676-a4a0-217fe1e7b992", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:03:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:03:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:03:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:03:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:03:29Z", "value" => "887"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:03:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:03:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:03:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:03:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:03:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:03:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:03:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:03:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:03:29Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:03:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:03:29Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:03:29Z", "vendor" => "morefun"} [2026-08-21 05:03:30.186] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:03:30.186] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:03:30.187] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:03:30.188] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=983.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-08-21 05:03:30.189] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=120.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-08-21 05:03:30.189] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:03:30.192] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:03:30.249] [DEBUG] QUERY OK source="tms_terminals" db=16.9ms queue=40.5ms idle=3.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 05:03:30], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 05:03:30.250] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:03:30.250] [INFO ] Event published: terminal_updated [2026-08-21 05:03:30.250] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 05:03:30.250] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 05:03:30.250] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 05:03:30.251] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.0ms idle=58.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 05:03:30], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 05:03:30.253] [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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 05:03:30.254] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms idle=0.6ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 05:03:30.254] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 05:03:30.326] [DEBUG] QUERY OK source="tms_terminals" db=32.1ms queue=41.6ms 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-08-21 05:03:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:03:30.326] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:03:30.329] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=72.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-08-21 05:03:30.401] [DEBUG] QUERY OK source="tms_terminals" db=28.9ms queue=42.4ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:03:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:03:30.442] [DEBUG] QUERY OK db=40.5ms queue=0.1ms idle=72.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "319a07d5-e8d6-4676-a4a0-217fe1e7b992", "2026-08-21T05:03:29Z", ~N[2026-08-21 05:03:30], ~N[2026-08-21 05:03:30]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:03:30.443] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76513, oid: "319a07d5-e8d6-4676-a4a0-217fe1e7b992", upload_time: "2026-08-21T05:03:29Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:30], updated_at: ~N[2026-08-21 05:03:30]} [2026-08-21 05:03:30.443] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:03:29Z", "value" => "morefun"} [2026-08-21 05:03:30.470] [DEBUG] QUERY OK db=27.0ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "morefun", "vendor", 76513, ~N[2026-08-21 05:03:30], ~N[2026-08-21 05:03:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:30.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774170, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:30], updated_at: ~N[2026-08-21 05:03:30]}} [2026-08-21 05:03:30.471] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:03:29Z", "value" => "kiosk_launcher"} [2026-08-21 05:03:30.548] [DEBUG] QUERY OK db=35.2ms queue=40.8ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "kiosk_launcher", "model", 76513, ~N[2026-08-21 05:03:30], ~N[2026-08-21 05:03:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:30.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774171, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:30], updated_at: ~N[2026-08-21 05:03:30]}} [2026-08-21 05:03:30.548] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:03:29Z", "value" => "1.0"} [2026-08-21 05:03:30.582] [DEBUG] QUERY OK db=33.9ms idle=78.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "1.0", "app_version", 76513, ~N[2026-08-21 05:03:30], ~N[2026-08-21 05:03:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:30.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774172, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:30], updated_at: ~N[2026-08-21 05:03:30]}} [2026-08-21 05:03:30.583] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:03:29Z", "value" => "13"} [2026-08-21 05:03:30.622] [DEBUG] QUERY OK db=39.1ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "13", "android_version", 76513, ~N[2026-08-21 05:03:30], ~N[2026-08-21 05:03:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:30.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774173, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:30], updated_at: ~N[2026-08-21 05:03:30]}} [2026-08-21 05:03:30.623] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:03:29Z", "value" => "887"} [2026-08-21 05:03:30.651] [DEBUG] QUERY OK db=28.1ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "887", "ram_free_mb", 76513, ~N[2026-08-21 05:03:30], ~N[2026-08-21 05:03:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:30.651] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774174, itemkey: "ram_free_mb", value: "887", timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:30], updated_at: ~N[2026-08-21 05:03:30]}} [2026-08-21 05:03:30.652] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:03:29Z", "value" => "WIFI"} [2026-08-21 05:03:30.711] [DEBUG] QUERY OK db=59.2ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "WIFI", "network_type", 76513, ~N[2026-08-21 05:03:30], ~N[2026-08-21 05:03:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:30.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774175, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:30], updated_at: ~N[2026-08-21 05:03:30]}} [2026-08-21 05:03:30.712] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:03:29Z", "value" => "true"} [2026-08-21 05:03:30.758] [DEBUG] QUERY OK db=46.2ms idle=60.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "true", "kiosk_active", 76513, ~N[2026-08-21 05:03:30], ~N[2026-08-21 05:03:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:30.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774176, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:30], updated_at: ~N[2026-08-21 05:03:30]}} [2026-08-21 05:03:30.759] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:03:29Z", "value" => ""} [2026-08-21 05:03:30.808] [DEBUG] QUERY OK db=46.9ms queue=1.6ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:03:29Z", "sim_operator", 76513, ~N[2026-08-21 05:03:30], ~N[2026-08-21 05:03:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:30.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774177, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:30], updated_at: ~N[2026-08-21 05:03:30]}} [2026-08-21 05:03:30.809] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:03:29Z", "value" => "UNKNOWN"} [2026-08-21 05:03:30.837] [DEBUG] QUERY OK db=27.5ms queue=0.1ms idle=51.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "UNKNOWN", "sim_number", 76513, ~N[2026-08-21 05:03:30], ~N[2026-08-21 05:03:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:30.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774178, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:30], updated_at: ~N[2026-08-21 05:03:30]}} [2026-08-21 05:03:30.837] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:03:29Z", "value" => "UNKNOWN"} [2026-08-21 05:03:30.877] [DEBUG] QUERY OK db=39.2ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "UNKNOWN", "sim_iccid", 76513, ~N[2026-08-21 05:03:30], ~N[2026-08-21 05:03:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:30.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774179, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:30], updated_at: ~N[2026-08-21 05:03:30]}} [2026-08-21 05:03:30.877] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:03:29Z", "value" => "UNKNOWN"} [2026-08-21 05:03:30.942] [DEBUG] QUERY OK db=64.1ms queue=0.7ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "UNKNOWN", "sim_imsi", 76513, ~N[2026-08-21 05:03:30], ~N[2026-08-21 05:03:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:30.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774180, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:30], updated_at: ~N[2026-08-21 05:03:30]}} [2026-08-21 05:03:30.943] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:03:29Z", "value" => "UNKNOWN"} [2026-08-21 05:03:30.984] [DEBUG] QUERY OK db=40.5ms idle=66.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "UNKNOWN", "sim_iccid2", 76513, ~N[2026-08-21 05:03:30], ~N[2026-08-21 05:03:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:30.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774181, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:30], updated_at: ~N[2026-08-21 05:03:30]}} [2026-08-21 05:03:30.984] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:03:29Z", "value" => "UNKNOWN"} [2026-08-21 05:03:31.019] [DEBUG] QUERY OK db=34.5ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "UNKNOWN", "sim_imsi2", 76513, ~N[2026-08-21 05:03:30], ~N[2026-08-21 05:03:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:31.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774182, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:30], updated_at: ~N[2026-08-21 05:03:30]}} [2026-08-21 05:03:31.019] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:03:29Z", "value" => "21"} [2026-08-21 05:03:31.068] [DEBUG] QUERY OK db=48.7ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "21", "data_usage_mb", 76513, ~N[2026-08-21 05:03:31], ~N[2026-08-21 05:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:31.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774183, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:31], updated_at: ~N[2026-08-21 05:03:31]}} [2026-08-21 05:03:31.069] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:03:29Z", "value" => "0"} [2026-08-21 05:03:31.120] [DEBUG] QUERY OK db=51.0ms queue=0.2ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "0", "mobile_data_mb", 76513, ~N[2026-08-21 05:03:31], ~N[2026-08-21 05:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:31.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774184, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:31], updated_at: ~N[2026-08-21 05:03:31]}} [2026-08-21 05:03:31.121] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:03:29Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:03:31.153] [DEBUG] QUERY OK db=30.3ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:29Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76513, ~N[2026-08-21 05:03:31], ~N[2026-08-21 05:03:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:03:31.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774185, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:03:29Z", message: nil, status_log_id: 76513, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:03:31], updated_at: ~N[2026-08-21 05:03:31]}} [2026-08-21 05:03:34.045] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T05:03:13Z"} [2026-08-21 05:03:34.046] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:03:13Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 7, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:04:00.310] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:04:00.310] [INFO ] Incoming JSON payload: {"oid":"93f7b877-e60d-48b0-8476-9a60a7a3bb34","sn":"98251226730001","uploadTime":"2026-08-21T05:03:59Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:03:59Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:03:59Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:03:59Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:03:59Z"},{"itemkey":"ram_free_mb","value":"883","timestamp":"2026-08-21T05:03:59Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:03:59Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:03:59Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:03:59Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:03:59Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:03:59Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:03:59Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:03:59Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:03:59Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:03:59Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:03: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:04:00.312] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "93f7b877-e60d-48b0-8476-9a60a7a3bb34", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:03:59Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:03:59Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:03:59Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:03:59Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:03:59Z", "value" => "883"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:03:59Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:03:59Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:03:59Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:03:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:03:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:03:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:03:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:03:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:03:59Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:03:59Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:03: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:03:59Z", "vendor" => "morefun"} [2026-08-21 05:04:00.312] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:04:00.313] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:04:00.314] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:04:00.315] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1159.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-08-21 05:04:00.315] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=158.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-08-21 05:04:00.316] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:04:00.317] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:04:00.318] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:04:00.382] [DEBUG] QUERY OK source="tms_terminals" db=22.3ms queue=40.6ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:04:00], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:04:00.382] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:04:00.383] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=65.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 05:04:00.417] [DEBUG] QUERY OK source="tms_terminals" db=33.4ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:04:00], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:04:00.454] [DEBUG] QUERY OK db=36.7ms idle=34.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "93f7b877-e60d-48b0-8476-9a60a7a3bb34", "2026-08-21T05:03:59Z", ~N[2026-08-21 05:04:00], ~N[2026-08-21 05:04:00]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:04:00.454] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76514, oid: "93f7b877-e60d-48b0-8476-9a60a7a3bb34", upload_time: "2026-08-21T05:03:59Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:00], updated_at: ~N[2026-08-21 05:04:00]} [2026-08-21 05:04:00.455] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:03:59Z", "value" => "morefun"} [2026-08-21 05:04:00.496] [DEBUG] QUERY OK db=41.5ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:59Z", "morefun", "vendor", 76514, ~N[2026-08-21 05:04:00], ~N[2026-08-21 05:04:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:00.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774186, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:00], updated_at: ~N[2026-08-21 05:04:00]}} [2026-08-21 05:04:00.497] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:03:59Z", "value" => "kiosk_launcher"} [2026-08-21 05:04:00.563] [DEBUG] QUERY OK db=65.6ms queue=0.1ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:59Z", "kiosk_launcher", "model", 76514, ~N[2026-08-21 05:04:00], ~N[2026-08-21 05:04:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:00.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774187, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:00], updated_at: ~N[2026-08-21 05:04:00]}} [2026-08-21 05:04:00.563] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:03:59Z", "value" => "1.0"} [2026-08-21 05:04:00.603] [DEBUG] QUERY OK db=39.1ms idle=67.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:59Z", "1.0", "app_version", 76514, ~N[2026-08-21 05:04:00], ~N[2026-08-21 05:04:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:00.603] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774188, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:00], updated_at: ~N[2026-08-21 05:04:00]}} [2026-08-21 05:04:00.603] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:03:59Z", "value" => "13"} [2026-08-21 05:04:00.666] [DEBUG] QUERY OK db=62.0ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:59Z", "13", "android_version", 76514, ~N[2026-08-21 05:04:00], ~N[2026-08-21 05:04:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:00.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774189, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:00], updated_at: ~N[2026-08-21 05:04:00]}} [2026-08-21 05:04:00.667] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:03:59Z", "value" => "883"} [2026-08-21 05:04:00.708] [DEBUG] QUERY OK db=40.5ms queue=0.1ms idle=64.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:59Z", "883", "ram_free_mb", 76514, ~N[2026-08-21 05:04:00], ~N[2026-08-21 05:04:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:00.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774190, itemkey: "ram_free_mb", value: "883", timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:00], updated_at: ~N[2026-08-21 05:04:00]}} [2026-08-21 05:04:00.708] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:03:59Z", "value" => "WIFI"} [2026-08-21 05:04:00.743] [DEBUG] QUERY OK db=34.1ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:59Z", "WIFI", "network_type", 76514, ~N[2026-08-21 05:04:00], ~N[2026-08-21 05:04:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:00.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774191, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:00], updated_at: ~N[2026-08-21 05:04:00]}} [2026-08-21 05:04:00.743] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:03:59Z", "value" => "true"} [2026-08-21 05:04:00.842] [DEBUG] QUERY OK db=98.3ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:59Z", "true", "kiosk_active", 76514, ~N[2026-08-21 05:04:00], ~N[2026-08-21 05:04:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:00.842] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774192, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:00], updated_at: ~N[2026-08-21 05:04:00]}} [2026-08-21 05:04:00.842] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:03:59Z", "value" => ""} [2026-08-21 05:04:00.934] [DEBUG] QUERY OK db=90.9ms queue=0.1ms idle=100.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:03:59Z", "sim_operator", 76514, ~N[2026-08-21 05:04:00], ~N[2026-08-21 05:04:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:00.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774193, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:00], updated_at: ~N[2026-08-21 05:04:00]}} [2026-08-21 05:04:00.934] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:03:59Z", "value" => "UNKNOWN"} [2026-08-21 05:04:01.013] [DEBUG] QUERY OK db=77.2ms idle=89.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:59Z", "UNKNOWN", "sim_number", 76514, ~N[2026-08-21 05:04:00], ~N[2026-08-21 05:04:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:01.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774194, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:00], updated_at: ~N[2026-08-21 05:04:00]}} [2026-08-21 05:04:01.014] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:03:59Z", "value" => "UNKNOWN"} [2026-08-21 05:04:01.100] [DEBUG] QUERY OK db=86.2ms idle=80.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:59Z", "UNKNOWN", "sim_iccid", 76514, ~N[2026-08-21 05:04:01], ~N[2026-08-21 05:04:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:01.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774195, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:01], updated_at: ~N[2026-08-21 05:04:01]}} [2026-08-21 05:04:01.101] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:03:59Z", "value" => "UNKNOWN"} [2026-08-21 05:04:01.147] [DEBUG] QUERY OK db=45.8ms queue=0.1ms idle=88.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:59Z", "UNKNOWN", "sim_imsi", 76514, ~N[2026-08-21 05:04:01], ~N[2026-08-21 05:04:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:01.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774196, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:01], updated_at: ~N[2026-08-21 05:04:01]}} [2026-08-21 05:04:01.147] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:03:59Z", "value" => "UNKNOWN"} [2026-08-21 05:04:01.196] [DEBUG] QUERY OK db=48.4ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:59Z", "UNKNOWN", "sim_iccid2", 76514, ~N[2026-08-21 05:04:01], ~N[2026-08-21 05:04:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:01.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774197, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:01], updated_at: ~N[2026-08-21 05:04:01]}} [2026-08-21 05:04:01.197] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:03:59Z", "value" => "UNKNOWN"} [2026-08-21 05:04:01.232] [DEBUG] QUERY OK db=34.9ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:59Z", "UNKNOWN", "sim_imsi2", 76514, ~N[2026-08-21 05:04:01], ~N[2026-08-21 05:04:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:01.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774198, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:01], updated_at: ~N[2026-08-21 05:04:01]}} [2026-08-21 05:04:01.232] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:03:59Z", "value" => "21"} [2026-08-21 05:04:01.256] [DEBUG] QUERY OK db=23.4ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:59Z", "21", "data_usage_mb", 76514, ~N[2026-08-21 05:04:01], ~N[2026-08-21 05:04:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:01.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774199, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:01], updated_at: ~N[2026-08-21 05:04:01]}} [2026-08-21 05:04:01.256] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:03:59Z", "value" => "0"} [2026-08-21 05:04:01.293] [DEBUG] QUERY OK db=35.8ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03:59Z", "0", "mobile_data_mb", 76514, ~N[2026-08-21 05:04:01], ~N[2026-08-21 05:04:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:01.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774200, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:01], updated_at: ~N[2026-08-21 05:04:01]}} [2026-08-21 05:04:01.294] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:03: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:04:01.337] [DEBUG] QUERY OK db=41.8ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:03: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76514, ~N[2026-08-21 05:04:01], ~N[2026-08-21 05:04:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:01.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774201, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:03:59Z", message: nil, status_log_id: 76514, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:01], updated_at: ~N[2026-08-21 05:04:01]}} [2026-08-21 05:04:30.373] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:04:30.373] [INFO ] Incoming JSON payload: {"oid":"532af8f6-155d-435c-a381-5989baebd697","sn":"98251226730001","uploadTime":"2026-08-21T05:04:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:04:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:04:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:04:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:04:29Z"},{"itemkey":"ram_free_mb","value":"973","timestamp":"2026-08-21T05:04:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:04:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:04:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:04:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:04:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:04:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:04:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:04:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:04:29Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:04:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:04: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:04:30.375] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "532af8f6-155d-435c-a381-5989baebd697", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:04:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:04:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:04:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:04:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:04:29Z", "value" => "973"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:04:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:04:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:04:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:04:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:04:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:04:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:04:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:04:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:04:29Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:04:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:04: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:04:29Z", "vendor" => "morefun"} [2026-08-21 05:04:30.375] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:04:30.375] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:04:30.375] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:04:30.376] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1118.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-08-21 05:04:30.377] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=115.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-08-21 05:04:30.377] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:04:30.378] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:04:30.379] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:04:30.411] [DEBUG] QUERY OK source="tms_terminals" db=30.8ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:04:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:04:30.411] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:04:30.412] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:04:30.440] [DEBUG] QUERY OK source="tms_terminals" db=27.0ms queue=0.1ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:04:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:04:30.453] [DEBUG] QUERY OK db=12.8ms idle=28.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "532af8f6-155d-435c-a381-5989baebd697", "2026-08-21T05:04:29Z", ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:04:30.453] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76515, oid: "532af8f6-155d-435c-a381-5989baebd697", upload_time: "2026-08-21T05:04:29Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]} [2026-08-21 05:04:30.453] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:04:29Z", "value" => "morefun"} [2026-08-21 05:04:30.494] [DEBUG] QUERY OK db=40.1ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04:29Z", "morefun", "vendor", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.494] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774202, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.494] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:04:29Z", "value" => "kiosk_launcher"} [2026-08-21 05:04:30.530] [DEBUG] QUERY OK db=35.3ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04:29Z", "kiosk_launcher", "model", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774203, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.530] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:04:29Z", "value" => "1.0"} [2026-08-21 05:04:30.554] [DEBUG] QUERY OK db=23.2ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04:29Z", "1.0", "app_version", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774204, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.554] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:04:29Z", "value" => "13"} [2026-08-21 05:04:30.582] [DEBUG] QUERY OK db=27.2ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04:29Z", "13", "android_version", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.582] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774205, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.582] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:04:29Z", "value" => "973"} [2026-08-21 05:04:30.618] [DEBUG] QUERY OK db=35.1ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04:29Z", "973", "ram_free_mb", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774206, itemkey: "ram_free_mb", value: "973", timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.618] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:04:29Z", "value" => "WIFI"} [2026-08-21 05:04:30.649] [DEBUG] QUERY OK db=30.5ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04:29Z", "WIFI", "network_type", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774207, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.650] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:04:29Z", "value" => "true"} [2026-08-21 05:04:30.668] [DEBUG] QUERY OK db=17.9ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04:29Z", "true", "kiosk_active", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774208, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.668] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:04:29Z", "value" => ""} [2026-08-21 05:04:30.705] [DEBUG] QUERY OK db=36.2ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:04:29Z", "sim_operator", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774209, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.705] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:04:29Z", "value" => "UNKNOWN"} [2026-08-21 05:04:30.758] [DEBUG] QUERY OK db=52.1ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04:29Z", "UNKNOWN", "sim_number", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774210, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.758] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:04:29Z", "value" => "UNKNOWN"} [2026-08-21 05:04:30.806] [DEBUG] QUERY OK db=46.6ms queue=0.4ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04:29Z", "UNKNOWN", "sim_iccid", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.806] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774211, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.806] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:04:29Z", "value" => "UNKNOWN"} [2026-08-21 05:04:30.838] [DEBUG] QUERY OK db=31.3ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04:29Z", "UNKNOWN", "sim_imsi", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774212, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.838] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:04:29Z", "value" => "UNKNOWN"} [2026-08-21 05:04:30.861] [DEBUG] QUERY OK db=22.3ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04:29Z", "UNKNOWN", "sim_iccid2", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774213, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.861] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:04:29Z", "value" => "UNKNOWN"} [2026-08-21 05:04:30.909] [DEBUG] QUERY OK db=47.2ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04:29Z", "UNKNOWN", "sim_imsi2", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.909] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774214, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.909] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:04:29Z", "value" => "21"} [2026-08-21 05:04:30.943] [DEBUG] QUERY OK db=33.0ms queue=0.1ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04:29Z", "21", "data_usage_mb", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774215, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.944] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:04:29Z", "value" => "0"} [2026-08-21 05:04:30.963] [DEBUG] QUERY OK db=19.3ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04:29Z", "0", "mobile_data_mb", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:30.964] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774216, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:04:30.965] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:04: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:04:31.002] [DEBUG] QUERY OK db=36.3ms queue=0.1ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:04: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76515, ~N[2026-08-21 05:04:30], ~N[2026-08-21 05:04:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:04:31.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774217, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:04:29Z", message: nil, status_log_id: 76515, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:04:30], updated_at: ~N[2026-08-21 05:04:30]}} [2026-08-21 05:07:22.748] [INFO ] [Ysp.Scheduler] Started. SFTP in 21h 52m, MIS in 2h 52m [2026-08-21 05:07:22.909] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 05:07:22.945] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 05:07:26.166] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 05:07:26.168] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 05:07:26.168] [INFO ] Building initial filter cache... [2026-08-21 05:07:26.191] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms queue=1.5ms idle=595.4ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 05:07:26.211] [DEBUG] QUERY OK source="filter_usage" db=0.6ms queue=0.6ms idle=170.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-08-21 05:07:26.212] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 05:07:26.466] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 05:07:26.480] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-08-21 05:07:26.518] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-08-21 05:07:31.521] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:07:31.522] [INFO ] Incoming JSON payload: {"oid":"ee8a45b4-55d2-4481-8dde-7b0ac1fcbed3","sn":"98251226730001","uploadTime":"2026-08-21T05:07:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:07:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:07:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:07:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:07:31Z"},{"itemkey":"ram_free_mb","value":"929","timestamp":"2026-08-21T05:07:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:07:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:07:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:07:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:07:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:07:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:07:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:07:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:07:31Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:07:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:07:31.545] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ee8a45b4-55d2-4481-8dde-7b0ac1fcbed3", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:07:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:07:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:07:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:07:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:07:31Z", "value" => "929"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:07:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:07:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:07:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:07:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:07:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:07:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:07:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:07:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:07:31Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:07:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:07:31Z", "vendor" => "morefun"} [2026-08-21 05:07:31.552] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:07:31.578] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:07:31.578] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:07:31.599] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=3.0ms idle=506.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-08-21 05:07:31.601] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms queue=0.5ms idle=9.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-08-21 05:07:31.601] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:07:31.671] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=2.2ms idle=68.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 05:07:31.770] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:07:31.812] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms queue=2.7ms idle=169.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:07:31], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:07:31.821] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:07:31.824] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=151.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 05:07:31.858] [DEBUG] QUERY OK source="tms_terminals" db=21.3ms idle=39.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:07:31], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:07:31.980] [DEBUG] QUERY OK db=44.4ms queue=0.5ms idle=110.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ee8a45b4-55d2-4481-8dde-7b0ac1fcbed3", "2026-08-21T05:07:31Z", ~N[2026-08-21 05:07:31], ~N[2026-08-21 05:07:31]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:07:32.023] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76517, oid: "ee8a45b4-55d2-4481-8dde-7b0ac1fcbed3", upload_time: "2026-08-21T05:07:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:31], updated_at: ~N[2026-08-21 05:07:31]} [2026-08-21 05:07:32.023] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:07:31Z", "value" => "morefun"} [2026-08-21 05:07:32.068] [DEBUG] QUERY OK db=42.2ms queue=2.0ms idle=165.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07:31Z", "morefun", "vendor", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.077] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774234, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.077] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:07:31Z", "value" => "kiosk_launcher"} [2026-08-21 05:07:32.104] [DEBUG] QUERY OK db=24.3ms queue=2.3ms idle=97.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07:31Z", "kiosk_launcher", "model", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.105] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774235, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.105] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:07:31Z", "value" => "1.0"} [2026-08-21 05:07:32.131] [DEBUG] QUERY OK db=25.6ms idle=6.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07:31Z", "1.0", "app_version", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.131] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774236, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.131] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:07:31Z", "value" => "13"} [2026-08-21 05:07:32.171] [DEBUG] QUERY OK db=39.3ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07:31Z", "13", "android_version", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.171] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774237, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.172] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:07:31Z", "value" => "929"} [2026-08-21 05:07:32.199] [DEBUG] QUERY OK db=27.0ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07:31Z", "929", "ram_free_mb", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.200] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774238, itemkey: "ram_free_mb", value: "929", timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.200] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:07:31Z", "value" => "WIFI"} [2026-08-21 05:07:32.242] [DEBUG] QUERY OK db=38.3ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07:31Z", "WIFI", "network_type", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774239, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.242] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:07:31Z", "value" => "true"} [2026-08-21 05:07:32.287] [DEBUG] QUERY OK db=44.8ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07:31Z", "true", "kiosk_active", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774240, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.288] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:07:31Z", "value" => ""} [2026-08-21 05:07:32.327] [DEBUG] QUERY OK db=36.6ms queue=1.8ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:07:31Z", "sim_operator", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.327] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774241, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.327] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:07:31Z", "value" => "UNKNOWN"} [2026-08-21 05:07:32.381] [DEBUG] QUERY OK db=46.9ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07:31Z", "UNKNOWN", "sim_number", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774242, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.398] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:07:31Z", "value" => "UNKNOWN"} [2026-08-21 05:07:32.427] [DEBUG] QUERY OK db=23.9ms queue=4.2ms idle=71.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07:31Z", "UNKNOWN", "sim_iccid", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774243, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.430] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:07:31Z", "value" => "UNKNOWN"} [2026-08-21 05:07:32.514] [DEBUG] QUERY OK db=83.2ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07:31Z", "UNKNOWN", "sim_imsi", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.514] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774244, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.514] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:07:31Z", "value" => "UNKNOWN"} [2026-08-21 05:07:32.537] [DEBUG] QUERY OK db=22.2ms idle=87.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07:31Z", "UNKNOWN", "sim_iccid2", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774245, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.538] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:07:31Z", "value" => "UNKNOWN"} [2026-08-21 05:07:32.557] [DEBUG] QUERY OK db=18.9ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07:31Z", "UNKNOWN", "sim_imsi2", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.558] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774246, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.558] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:07:31Z", "value" => "21"} [2026-08-21 05:07:32.586] [DEBUG] QUERY OK db=27.7ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07:31Z", "21", "data_usage_mb", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.586] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774247, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.586] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:07:31Z", "value" => "0"} [2026-08-21 05:07:32.639] [DEBUG] QUERY OK db=51.3ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07:31Z", "0", "mobile_data_mb", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774248, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:32.641] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:07:32.674] [DEBUG] QUERY OK db=29.7ms queue=0.2ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76517, ~N[2026-08-21 05:07:32], ~N[2026-08-21 05:07:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:07:32.676] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774249, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:07:31Z", message: nil, status_log_id: 76517, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:07:32], updated_at: ~N[2026-08-21 05:07:32]}} [2026-08-21 05:07:39.556] [INFO ] GET / [2026-08-21 05:07:39.627] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-08-21 05:07:39.982] [INFO ] Sent 200 in 426ms [2026-08-21 05:07:43.691] [INFO ] GET /images/favicon.png [2026-08-21 05:07:44.347] [DEBUG] ** (Phoenix.Router.NoRouteError) no route found for GET /images/favicon.png (PlatformWeb.Router) (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/phoenix/lib/phoenix/router.ex:541: PlatformWeb.Router.call/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.plug_builder_call/2 (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/plug/lib/plug/debugger.ex:155: PlatformWeb.Endpoint."call (overridable 3)"/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.call/2 (phoenix 1.7.21) lib/phoenix/endpoint/sync_code_reload_plug.ex:22: Phoenix.Endpoint.SyncCodeReloadPlug.do_call/4 (bandit 1.10.2) lib/bandit/pipeline.ex:131: Bandit.Pipeline.call_plug!/2 (bandit 1.10.2) lib/bandit/pipeline.ex:42: Bandit.Pipeline.run/5 (bandit 1.10.2) lib/bandit/http1/handler.ex:13: Bandit.HTTP1.Handler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:18: Bandit.DelegatingHandler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:8: Bandit.DelegatingHandler.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 [2026-08-21 05:07:44.798] [INFO ] GET /users/log_in [2026-08-21 05:07:44.798] [DEBUG] Processing with PlatformWeb.UserLoginLive.new/2 Parameters: %{} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-08-21 05:07:44.891] [INFO ] Sent 200 in 92ms [2026-08-21 05:07:46.825] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 27µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "IT49fzZFNTViVlQrFxkKHTA7QSELfRAtnxN2qpTO67yAZP8vxiuBGOdd", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 05:07:47.290] [DEBUG] MOUNT PlatformWeb.UserLoginLive Parameters: %{} Session: %{"_csrf_token" => "OFsMG5azTa-jMI2kHR4cL2tI"} [2026-08-21 05:07:47.291] [DEBUG] Replied in 1ms [2026-08-21 05:07:58.545] [INFO ] POST /users/log_in [2026-08-21 05:07:58.545] [DEBUG] Processing with PlatformWeb.UserSessionController.create/2 Parameters: %{"_csrf_token" => "IT49fzZFNTViVlQrFxkKHTA7QSELfRAtnxN2qpTO67yAZP8vxiuBGOdd", "user" => %{"email" => "demo@mercury.com", "password" => "[FILTERED]", "remember_me" => "on"}} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-08-21 05:07:58.560] [DEBUG] QUERY OK source="users" db=0.4ms queue=0.5ms idle=477.7ms 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-08-21 05:07:58.928] [DEBUG] QUERY OK db=33.8ms queue=1.3ms idle=806.0ms INSERT INTO `users_tokens` (`context`,`token`,`user_id`,`inserted_at`) VALUES (?,?,?,?) ["session", <<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, 3, ~U[2026-08-21 05:07:58Z]] ↳ DaProductApp.Users.generate_user_session_token/1, at: lib/da_product_app/users.ex:312 [2026-08-21 05:07:58.929] [INFO ] Sent 302 in 383ms [2026-08-21 05:07:58.955] [ERROR] ** (Plug.Conn.AlreadySentError) the response was already sent (plug 1.19.1) lib/plug/conn.ex:914: Plug.Conn.put_resp_header/3 (phoenix 1.7.21) lib/phoenix/controller.ex:495: Phoenix.Controller.redirect/2 (platform_web 0.1.0) lib/platform_web/controllers/user_session_controller.ex:1: PlatformWeb.UserSessionController.action/2 (platform_web 0.1.0) lib/platform_web/controllers/user_session_controller.ex:1: PlatformWeb.UserSessionController.phoenix_controller_pipeline/2 (phoenix 1.7.21) lib/phoenix/router.ex:484: Phoenix.Router.__call__/5 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.plug_builder_call/2 (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/plug/lib/plug/debugger.ex:155: PlatformWeb.Endpoint."call (overridable 3)"/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.call/2 (phoenix 1.7.21) lib/phoenix/endpoint/sync_code_reload_plug.ex:22: Phoenix.Endpoint.SyncCodeReloadPlug.do_call/4 (bandit 1.10.2) lib/bandit/pipeline.ex:131: Bandit.Pipeline.call_plug!/2 (bandit 1.10.2) lib/bandit/pipeline.ex:42: Bandit.Pipeline.run/5 (bandit 1.10.2) lib/bandit/http1/handler.ex:13: Bandit.HTTP1.Handler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:18: Bandit.DelegatingHandler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:8: Bandit.DelegatingHandler.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 [2026-08-21 05:07:59.428] [INFO ] GET /dashboard [2026-08-21 05:07:59.429] [DEBUG] Processing with PlatformWeb.DashboardLive.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 05:07:59.446] [DEBUG] QUERY OK source="users_tokens" db=0.5ms queue=0.4ms idle=885.2ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:07:59.439362Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 05:07:59.465] [DEBUG] QUERY OK source="users_tokens" db=2.4ms queue=0.1ms idle=539.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)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:07:59.462288Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-08-21 05:07:59.470] [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-08-20 18:44:09Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-08-21 05:07:59.471] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.6ms idle=866.7ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-08-21 05:07:59.472] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.4ms idle=415.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-08-21 05:07:59.500] [DEBUG] QUERY OK source="tms_terminals" db=26.7ms queue=0.4ms idle=1.2ms 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-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-08-21 05:07:59.507] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=2.6ms idle=32.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-08-21 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-08-21 05:07:59.508] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=7.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:140 [2026-08-21 05:07:59.510] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=1.5ms idle=1.3ms 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-08-21 05:07:59.625] [DEBUG] QUERY OK source="tms_terminals" db=106.2ms queue=1.4ms idle=9.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`area`, t0.`model`, t0.`imei`, t0.`remark`, t0.`vendor`, t0.`group`, t0.`inserted_at`, t0.`updated_at`, s1.`last_seen_at`, (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'battery' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'cpu' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'memory' ORDER BY inserted_at DESC LIMIT 1) FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen_at`, max(st0.`id`) AS `last_status_log_id` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` LEFT OUTER JOIN `tms_terminal_status_logs` AS t2 ON t2.`id` = s1.`last_status_log_id` [] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-08-21 05:07:59.642] [DEBUG] QUERY OK source="ota_configurations" db=1.4ms queue=1.4ms idle=128.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.644] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms queue=0.5ms idle=17.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.650] [DEBUG] QUERY OK source="ota_configurations" db=1.5ms idle=6.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.652] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms queue=1.0ms idle=6.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.653] [DEBUG] QUERY OK source="ota_configurations" db=1.1ms idle=2.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.654] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.659] [DEBUG] QUERY OK source="ota_configurations" db=4.7ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.662] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=8.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.665] [DEBUG] QUERY OK source="ota_configurations" db=2.3ms idle=3.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.667] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.3ms idle=2.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.669] [DEBUG] QUERY OK source="ota_configurations" db=1.2ms idle=2.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.675] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=3.6ms idle=4.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.677] [DEBUG] QUERY OK source="ota_configurations" db=2.1ms idle=6.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.680] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.2ms idle=2.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.687] [DEBUG] QUERY OK source="ota_configurations" db=1.2ms queue=0.1ms idle=8.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.695] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=4.6ms queue=0.1ms idle=10.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.700] [DEBUG] QUERY OK source="ota_configurations" db=4.8ms idle=7.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.701] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=6.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.703] [DEBUG] QUERY OK source="ota_configurations" db=1.3ms idle=1.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.707] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.1ms decode=0.2ms queue=0.1ms idle=3.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.708] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=4.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.709] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=2.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.711] [DEBUG] QUERY OK source="ota_configurations" db=1.5ms 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-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.711] [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-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.713] [DEBUG] QUERY OK source="ota_configurations" db=1.1ms 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-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.714] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=1.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.716] [DEBUG] QUERY OK source="ota_configurations" db=1.3ms idle=1.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.717] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=1.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.720] [DEBUG] QUERY OK source="ota_configurations" db=2.7ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.722] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.7ms idle=3.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.723] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=0.5ms idle=2.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.724] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.725] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms 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-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.727] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=2.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.729] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms queue=0.7ms idle=3.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.730] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=2.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.734] [DEBUG] QUERY OK source="ota_configurations" db=2.3ms queue=0.3ms 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-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.735] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=4.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.736] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms 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-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.736] [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-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.738] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms 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-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.740] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=2.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.741] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=3.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.743] [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-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.745] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=0.1ms idle=2.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.746] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.1ms idle=2.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.747] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms 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-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:07:59.748] [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-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:07:59.839] [DEBUG] QUERY OK source="tms_terminals" db=88.9ms queue=1.1ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:02:59.748480Z], ~U[2026-08-21 04:37:59.748480Z], ~U[2026-08-21 04:07:59.748480Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:07:59.864] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.3ms queue=0.5ms idle=94.1ms 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-08-21 04:07:59]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-08-21 05:07:59.887] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.9ms queue=1.3ms idle=25.9ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 05:06:59]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-08-21 05:07:59.909] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.1ms queue=2.2ms idle=23.1ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:07:59]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-08-21 05:07:59.928] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.6ms idle=23.1ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:07:59]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-08-21 05:07:59.948] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.2ms queue=0.7ms idle=19.6ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:07:59]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-08-21 05:07:59.950] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=20.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-08-21 05:08:00.039] [DEBUG] QUERY OK source="tms_terminals" db=88.6ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:02:59.950683Z], ~U[2026-08-21 04:37:59.950683Z], ~U[2026-08-21 04:07:59.950683Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:08:00.137] [DEBUG] QUERY OK source="tms_terminals" db=97.2ms idle=89.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-08-21 05:03:00.039832Z], ~U[2026-08-21 04:38:00.039832Z], ~U[2026-08-21 04:08:00.039832Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:08:00.238] [DEBUG] QUERY OK source="tms_terminals" db=98.1ms queue=1.3ms idle=75.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-08-21 05:03:00.138685Z], ~U[2026-08-21 04:38:00.138685Z], ~U[2026-08-21 04:08:00.138685Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:08:00.328] [DEBUG] QUERY OK source="tms_terminals" db=89.1ms idle=102.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-08-21 05:03:00.238938Z], ~U[2026-08-21 04:38:00.238938Z], ~U[2026-08-21 04:08:00.238938Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:08:00.399] [INFO ] Sent 200 in 970ms [2026-08-21 05:08:01.964] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:08:01.964] [INFO ] Incoming JSON payload: {"oid":"1aeab873-38af-44d3-857b-5d69b256c644","sn":"98251226730001","uploadTime":"2026-08-21T05:08:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:08:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:08:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:08:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:08:01Z"},{"itemkey":"ram_free_mb","value":"926","timestamp":"2026-08-21T05:08:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:08:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:08:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:08:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:08:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:08:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:08:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:08:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:08:01Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:08:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:08: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:08:01.965] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1aeab873-38af-44d3-857b-5d69b256c644", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:08:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:08:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:08:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:08:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:08:01Z", "value" => "926"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:08:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:08:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:08:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:08:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:08:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:08:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:08:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:08:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:08:01Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:08:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:08: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:08:01Z", "vendor" => "morefun"} [2026-08-21 05:08:01.965] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:08:01.966] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:08:01.966] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:08:01.972] [DEBUG] QUERY OK source="parameter_templates" db=6.3ms idle=971.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-08-21 05:08:01.976] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=904.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 05:08:01.976] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:08:01.976] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:08:01.977] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:08:01.999] [DEBUG] QUERY OK source="tms_terminals" db=21.6ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:08:01], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:08:01.999] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:08:02.005] [DEBUG] QUERY OK source="tms_terminals" db=5.4ms idle=23.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:08:02.056] [DEBUG] QUERY OK source="tms_terminals" db=48.6ms idle=7.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:08:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:08:02.106] [DEBUG] QUERY OK db=48.7ms queue=0.1ms idle=51.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "1aeab873-38af-44d3-857b-5d69b256c644", "2026-08-21T05:08:01Z", ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:08:02.107] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76518, oid: "1aeab873-38af-44d3-857b-5d69b256c644", upload_time: "2026-08-21T05:08:01Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]} [2026-08-21 05:08:02.108] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:08:01Z", "value" => "morefun"} [2026-08-21 05:08:02.141] [DEBUG] QUERY OK db=32.7ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:01Z", "morefun", "vendor", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.142] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774250, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.142] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:08:01Z", "value" => "kiosk_launcher"} [2026-08-21 05:08:02.185] [DEBUG] QUERY OK db=43.0ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:01Z", "kiosk_launcher", "model", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774251, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.186] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:08:01Z", "value" => "1.0"} [2026-08-21 05:08:02.228] [DEBUG] QUERY OK db=36.3ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:01Z", "1.0", "app_version", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.231] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774252, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.231] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:08:01Z", "value" => "13"} [2026-08-21 05:08:02.287] [DEBUG] QUERY OK db=55.3ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:01Z", "13", "android_version", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774253, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.287] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:08:01Z", "value" => "926"} [2026-08-21 05:08:02.313] [DEBUG] QUERY OK db=25.6ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:01Z", "926", "ram_free_mb", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774254, itemkey: "ram_free_mb", value: "926", timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.314] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:08:01Z", "value" => "WIFI"} [2026-08-21 05:08:02.363] [DEBUG] QUERY OK db=29.7ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:01Z", "WIFI", "network_type", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774255, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.372] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:08:01Z", "value" => "true"} [2026-08-21 05:08:02.423] [DEBUG] QUERY OK db=48.5ms idle=59.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:01Z", "true", "kiosk_active", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774256, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.423] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:08:01Z", "value" => ""} [2026-08-21 05:08:02.453] [DEBUG] QUERY OK db=29.0ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:08:01Z", "sim_operator", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774257, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.453] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:08:01Z", "value" => "UNKNOWN"} [2026-08-21 05:08:02.487] [DEBUG] QUERY OK db=33.9ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:01Z", "UNKNOWN", "sim_number", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774258, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.488] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:08:01Z", "value" => "UNKNOWN"} [2026-08-21 05:08:02.530] [DEBUG] QUERY OK db=41.9ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:01Z", "UNKNOWN", "sim_iccid", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774259, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.530] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:08:01Z", "value" => "UNKNOWN"} [2026-08-21 05:08:02.566] [DEBUG] QUERY OK db=29.3ms queue=1.7ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:01Z", "UNKNOWN", "sim_imsi", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774260, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.567] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:08:01Z", "value" => "UNKNOWN"} [2026-08-21 05:08:02.616] [DEBUG] QUERY OK db=36.7ms queue=12.2ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:01Z", "UNKNOWN", "sim_iccid2", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774261, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.617] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:08:01Z", "value" => "UNKNOWN"} [2026-08-21 05:08:02.674] [DEBUG] QUERY OK db=54.9ms queue=2.2ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:01Z", "UNKNOWN", "sim_imsi2", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774262, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.684] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:08:01Z", "value" => "21"} [2026-08-21 05:08:02.733] [DEBUG] QUERY OK db=43.0ms idle=73.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:01Z", "21", "data_usage_mb", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774263, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.741] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:08:01Z", "value" => "0"} [2026-08-21 05:08:02.763] [DEBUG] QUERY OK db=21.6ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:01Z", "0", "mobile_data_mb", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774264, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:02.764] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:08: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:08:02.815] [DEBUG] QUERY OK db=49.9ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76518, ~N[2026-08-21 05:08:02], ~N[2026-08-21 05:08:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:02.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774265, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:08:01Z", message: nil, status_log_id: 76518, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:02], updated_at: ~N[2026-08-21 05:08:02]}} [2026-08-21 05:08:03.295] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 27µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "BxYaN2V_UycCfiNnC1suBCULAWFjFXAuaIEn37eMmItRy9H0Wy4Q5C3c", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 05:08:04.039] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 39µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "BxYaN2V_UycCfiNnC1suBCULAWFjFXAuaIEn37eMmItRy9H0Wy4Q5C3c", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 05:08:04.039] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "BxYaN2V_UycCfiNnC1suBCULAWFjFXAuaIEn37eMmItRy9H0Wy4Q5C3c", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 05:08:04.577] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 34µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "BxYaN2V_UycCfiNnC1suBCULAWFjFXAuaIEn37eMmItRy9H0Wy4Q5C3c", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 05:08:05.626] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 47µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "BxYaN2V_UycCfiNnC1suBCULAWFjFXAuaIEn37eMmItRy9H0Wy4Q5C3c", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 05:08:07.073] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 33µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "BxYaN2V_UycCfiNnC1suBCULAWFjFXAuaIEn37eMmItRy9H0Wy4Q5C3c", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 05:08:07.504] [DEBUG] MOUNT PlatformWeb.DashboardLive Parameters: %{} Session: %{"_csrf_token" => "f__YVH6jo7W5rbf4rr50VVCM", "live_socket_id" => "users_sessions:jyq_OqdMqka0uVK8iPzNvmYuNByLIEJVbWW0HHCRW-o=", "user_token" => <<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>} [2026-08-21 05:08:07.506] [DEBUG] QUERY OK source="users_tokens" db=0.9ms idle=423.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)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:08:07.505009Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 05:08:07.507] [DEBUG] QUERY OK source="users_tokens" db=0.8ms queue=0.5ms idle=424.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)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:08:07.506441Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-08-21 05:08:07.508] [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-08-20 18:44:09Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-08-21 05:08:07.508] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.2ms idle=902.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-08-21 05:08:07.509] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=404.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-08-21 05:08:07.538] [DEBUG] QUERY OK source="tms_terminals" db=29.1ms 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-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-08-21 05:08:07.540] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=29.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-08-21 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-08-21 05:08:07.541] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:140 [2026-08-21 05:08:07.541] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.0ms 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-08-21 05:08:07.726] [DEBUG] QUERY OK source="tms_terminals" db=183.9ms idle=1.1ms 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-08-21 05:08:07.736] [DEBUG] QUERY OK source="ota_configurations" db=2.8ms idle=191.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.738] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=0.2ms idle=11.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.739] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms idle=2.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.740] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.3ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.743] [DEBUG] QUERY OK source="ota_configurations" db=2.4ms queue=0.2ms 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-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.745] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=1.3ms idle=3.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.746] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms 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-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.747] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.750] [DEBUG] QUERY OK source="ota_configurations" db=2.6ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.750] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=3.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.753] [DEBUG] QUERY OK source="ota_configurations" db=2.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-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.754] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=2.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.756] [DEBUG] QUERY OK source="ota_configurations" db=1.5ms 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-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.756] [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-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.758] [DEBUG] QUERY OK source="ota_configurations" db=1.6ms queue=0.1ms 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-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.761] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.4ms idle=2.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.766] [DEBUG] QUERY OK source="ota_configurations" db=4.1ms idle=3.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.770] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=3.6ms idle=4.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.774] [DEBUG] QUERY OK source="ota_configurations" db=1.3ms idle=6.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.776] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.1ms queue=0.8ms idle=4.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.779] [DEBUG] QUERY OK source="ota_configurations" db=1.9ms idle=2.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.780] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.0ms idle=2.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.781] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=1.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.783] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.2ms idle=1.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.785] [DEBUG] QUERY OK source="ota_configurations" db=1.6ms idle=2.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.786] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=2.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.786] [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-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.788] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.4ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.792] [DEBUG] QUERY OK source="ota_configurations" db=1.9ms idle=3.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.793] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=4.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.794] [DEBUG] QUERY OK source="ota_configurations" db=0.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-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.795] [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-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.797] [DEBUG] QUERY OK source="ota_configurations" db=1.0ms idle=1.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.797] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.798] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.799] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.800] [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-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.803] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.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-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.808] [DEBUG] QUERY OK source="ota_configurations" db=5.1ms idle=3.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.810] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.6ms idle=5.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.813] [DEBUG] QUERY OK source="ota_configurations" db=1.9ms queue=0.3ms 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-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.814] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=3.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.817] [DEBUG] QUERY OK source="ota_configurations" db=2.1ms queue=0.3ms 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-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.819] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.5ms idle=3.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.822] [DEBUG] QUERY OK source="ota_configurations" db=2.1ms queue=0.2ms 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-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.823] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=3.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.825] [DEBUG] QUERY OK source="ota_configurations" db=1.9ms 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-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:07.825] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=2.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:07.942] [DEBUG] QUERY OK source="tms_terminals" db=116.4ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:03:07.825968Z], ~U[2026-08-21 04:38:07.825968Z], ~U[2026-08-21 04:08:07.825968Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:08:07.974] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=31.4ms idle=117.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-08-21 04:08:07]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-08-21 05:08:07.999] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.7ms queue=0.1ms idle=32.3ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 05:07:07]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-08-21 05:08:08.022] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.6ms idle=25.7ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:08:08]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-08-21 05:08:08.044] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.3ms idle=22.4ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:08:08]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-08-21 05:08:08.070] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=25.3ms queue=0.1ms idle=23.0ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:08:08]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-08-21 05:08:08.072] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=26.1ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-08-21 05:08:08.217] [DEBUG] QUERY OK source="tms_terminals" db=144.0ms idle=2.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-08-21 05:03:08.073006Z], ~U[2026-08-21 04:38:08.073006Z], ~U[2026-08-21 04:08:08.073006Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:08:08.375] [DEBUG] QUERY OK source="tms_terminals" db=157.7ms idle=106.9ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:03:08.217637Z], ~U[2026-08-21 04:38:08.217637Z], ~U[2026-08-21 04:08:08.217637Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:08:08.517] [DEBUG] QUERY OK source="tms_terminals" db=141.2ms idle=158.9ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:03:08.375982Z], ~U[2026-08-21 04:38:08.375982Z], ~U[2026-08-21 04:08:08.375982Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:08:08.629] [DEBUG] QUERY OK source="tms_terminals" db=111.4ms idle=142.4ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:03:08.517806Z], ~U[2026-08-21 04:38:08.517806Z], ~U[2026-08-21 04:08:08.517806Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:08:08.630] [DEBUG] Replied in 1125ms [2026-08-21 05:08:08.635] [DEBUG] Duplicate channel join for topic "lv:phx-GM25xDMNf2sIxAKi" in Phoenix.LiveView.Socket. Closing existing channel for new join. [2026-08-21 05:08:08.637] [DEBUG] MOUNT PlatformWeb.DashboardLive Parameters: %{} Session: %{"_csrf_token" => "f__YVH6jo7W5rbf4rr50VVCM", "live_socket_id" => "users_sessions:jyq_OqdMqka0uVK8iPzNvmYuNByLIEJVbWW0HHCRW-o=", "user_token" => <<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>} [2026-08-21 05:08:08.638] [DEBUG] QUERY OK source="users_tokens" db=0.5ms queue=0.1ms idle=1131.7ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:08:08.637858Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 05:08:08.640] [DEBUG] QUERY OK source="users_tokens" db=1.6ms idle=1131.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:08:08.638955Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-08-21 05:08:08.641] [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-08-20 18:44:09Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-08-21 05:08:08.643] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=2.2ms idle=123.7ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-08-21 05:08:08.644] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=14.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-08-21 05:08:08.676] [DEBUG] QUERY OK source="tms_terminals" db=30.9ms idle=1.0ms 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-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-08-21 05:08:08.677] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=31.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-08-21 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-08-21 05:08:08.678] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:140 [2026-08-21 05:08:08.679] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`status` IN ('connected','online','Online')) [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:143 [2026-08-21 05:08:08.805] [DEBUG] QUERY OK source="tms_terminals" db=125.2ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`area`, t0.`model`, t0.`imei`, t0.`remark`, t0.`vendor`, t0.`group`, t0.`inserted_at`, t0.`updated_at`, s1.`last_seen_at`, (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'battery' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'cpu' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'memory' ORDER BY inserted_at DESC LIMIT 1) FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen_at`, max(st0.`id`) AS `last_status_log_id` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` LEFT OUTER JOIN `tms_terminal_status_logs` AS t2 ON t2.`id` = s1.`last_status_log_id` [] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-08-21 05:08:08.806] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=126.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.807] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.808] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms 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-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.809] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.810] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=1.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.812] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=1.3ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.814] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=0.1ms idle=2.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.815] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms queue=0.7ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.817] [DEBUG] QUERY OK source="ota_configurations" db=1.5ms 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-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.818] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=2.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.821] [DEBUG] QUERY OK source="ota_configurations" db=3.0ms 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-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.822] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=0.2ms idle=3.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.823] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=1.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.824] [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-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.824] [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-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.825] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.826] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.827] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.827] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms queue=0.1ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.828] [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-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.829] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.830] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=0.1ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.831] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=1.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.832] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.833] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=1.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.834] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.835] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=0.2ms 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-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.836] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms queue=0.1ms idle=1.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.837] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.837] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.838] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.839] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.840] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.841] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.841] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.842] [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-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.843] [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-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.844] [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-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.844] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.845] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.846] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.846] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.847] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms 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-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.848] [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-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.848] [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-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.849] [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-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.849] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms 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-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:08:08.850] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.1ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:08:08.955] [DEBUG] QUERY OK source="tms_terminals" db=104.9ms 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-08-21 05:03:08.850620Z], ~U[2026-08-21 04:38:08.850620Z], ~U[2026-08-21 04:08:08.850620Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:08:08.986] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=30.5ms idle=105.9ms 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-08-21 04:08:08]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-08-21 05:08:09.007] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.6ms idle=31.3ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 05:07:08]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-08-21 05:08:09.033] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=23.5ms idle=22.6ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:08:09]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-08-21 05:08:09.055] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.9ms idle=25.3ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:08:09]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-08-21 05:08:09.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=27.3ms queue=0.3ms idle=22.9ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:08:09]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-08-21 05:08:09.086] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms idle=28.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-08-21 05:08:09.200] [DEBUG] QUERY OK source="tms_terminals" db=112.7ms queue=0.1ms idle=3.4ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:03:09.086881Z], ~U[2026-08-21 04:38:09.086881Z], ~U[2026-08-21 04:08:09.086881Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:08:09.318] [DEBUG] QUERY OK source="tms_terminals" db=115.9ms idle=85.4ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:03:09.200235Z], ~U[2026-08-21 04:38:09.200235Z], ~U[2026-08-21 04:08:09.200235Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:08:09.432] [DEBUG] QUERY OK source="tms_terminals" db=113.2ms idle=0.4ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:03:09.319072Z], ~U[2026-08-21 04:38:09.319072Z], ~U[2026-08-21 04:08:09.319072Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:08:09.579] [DEBUG] QUERY OK source="tms_terminals" db=145.5ms idle=91.9ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:03:09.432793Z], ~U[2026-08-21 04:38:09.432793Z], ~U[2026-08-21 04:08:09.432793Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:08:09.580] [DEBUG] Replied in 942ms [2026-08-21 05:08:18.966] [WARN ] navigate event to "http://localhost:5329/admin/settlements/tid-master" failed because you are redirecting across live_sessions. A full page reload will be performed instead [2026-08-21 05:08:19.730] [INFO ] GET /admin/settlements/tid-master [2026-08-21 05:08:19.731] [DEBUG] Processing with PlatformWeb.SettlementLive.TidMasterBrowser.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 05:08:19.733] [DEBUG] QUERY OK source="users_tokens" db=0.5ms idle=1651.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:08:19.732072Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 05:08:19.745] [DEBUG] QUERY OK source="tid_masters" db=0.3ms queue=0.4ms idle=1137.2ms SELECT count(t0.`id`) FROM `tid_masters` AS t0 [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.load_rows/1, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:413 [2026-08-21 05:08:19.754] [DEBUG] QUERY OK source="tid_masters" db=1.7ms queue=1.8ms idle=594.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 ORDER BY t0.`merchant_name_legal`, t0.`mid` LIMIT 500 [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.load_rows/1, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:419 [2026-08-21 05:08:19.757] [DEBUG] QUERY OK source="tid_masters" db=1.5ms queue=0.7ms idle=9.3ms SELECT DISTINCT t0.`bank_code` FROM `tid_masters` AS t0 WHERE (NOT (t0.`bank_code` IS NULL)) ORDER BY t0.`bank_code` [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.mount/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:52 [2026-08-21 05:08:19.758] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.2ms idle=3.1ms SELECT DISTINCT t0.`mcc_code` FROM `tid_masters` AS t0 WHERE (NOT (t0.`mcc_code` IS NULL)) ORDER BY t0.`mcc_code` [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.mount/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:53 [2026-08-21 05:08:19.759] [DEBUG] QUERY OK source="tid_masters" db=0.2ms queue=0.3ms idle=1.2ms SELECT DISTINCT t0.`onboarding_source` FROM `tid_masters` AS t0 WHERE (NOT (t0.`onboarding_source` IS NULL)) ORDER BY t0.`onboarding_source` [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.mount/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:54 [2026-08-21 05:08:19.761] [INFO ] Sent 200 in 30ms [2026-08-21 05:08:20.810] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 41µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "LisVDiE8d1wNZmBkXyRfYwsCGEU5BicdHtJWwtA6bQ7Q-F9Wyp-uoPdP", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 05:08:21.221] [DEBUG] MOUNT PlatformWeb.SettlementLive.TidMasterBrowser Parameters: %{} Session: %{"_csrf_token" => "f__YVH6jo7W5rbf4rr50VVCM", "live_socket_id" => "users_sessions:jyq_OqdMqka0uVK8iPzNvmYuNByLIEJVbWW0HHCRW-o=", "user_token" => <<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>} [2026-08-21 05:08:21.222] [DEBUG] QUERY OK source="users_tokens" db=0.5ms queue=0.2ms idle=1139.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)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:08:21.221666Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 05:08:21.225] [DEBUG] QUERY OK source="tid_masters" db=1.7ms idle=1062.1ms SELECT count(t0.`id`) FROM `tid_masters` AS t0 [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.load_rows/1, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:413 [2026-08-21 05:08:21.227] [DEBUG] QUERY OK source="tid_masters" db=1.3ms queue=0.2ms idle=58.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 ORDER BY t0.`merchant_name_legal`, t0.`mid` LIMIT 500 [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.load_rows/1, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:419 [2026-08-21 05:08:21.229] [DEBUG] QUERY OK source="tid_masters" db=1.1ms idle=2.2ms SELECT DISTINCT t0.`bank_code` FROM `tid_masters` AS t0 WHERE (NOT (t0.`bank_code` IS NULL)) ORDER BY t0.`bank_code` [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.mount/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:52 [2026-08-21 05:08:21.230] [DEBUG] QUERY OK source="tid_masters" db=0.7ms idle=1.7ms SELECT DISTINCT t0.`mcc_code` FROM `tid_masters` AS t0 WHERE (NOT (t0.`mcc_code` IS NULL)) ORDER BY t0.`mcc_code` [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.mount/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:53 [2026-08-21 05:08:21.232] [DEBUG] QUERY OK source="tid_masters" db=2.1ms idle=1.1ms SELECT DISTINCT t0.`onboarding_source` FROM `tid_masters` AS t0 WHERE (NOT (t0.`onboarding_source` IS NULL)) ORDER BY t0.`onboarding_source` [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.mount/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:54 [2026-08-21 05:08:21.232] [DEBUG] Replied in 11ms [2026-08-21 05:08:21.232] [DEBUG] HANDLE PARAMS in PlatformWeb.SettlementLive.TidMasterBrowser Parameters: %{} [2026-08-21 05:08:21.232] [DEBUG] Replied in 125µs [2026-08-21 05:08:32.055] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:08:32.056] [INFO ] Incoming JSON payload: {"oid":"fe44180d-782a-4a27-8c59-16eec3c393a5","sn":"98251226730001","uploadTime":"2026-08-21T05:08:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"ram_free_mb","value":"920","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:08:31Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:08:32.057] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "fe44180d-782a-4a27-8c59-16eec3c393a5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:08:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:08:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:08:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:08:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:08:31Z", "value" => "920"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:08:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:08:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:08:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:08:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:08:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:08:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:08:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:08:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:08:31Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:08:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:08:31Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:08:31Z", "vendor" => "morefun"} [2026-08-21 05:08:32.057] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:08:32.057] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:08:32.057] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:08:32.059] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=1450.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-08-21 05:08:32.062] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms queue=0.7ms idle=847.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-08-21 05:08:32.062] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:08:32.063] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=3.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:08:32.064] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:08:32.109] [DEBUG] QUERY OK source="tms_terminals" db=43.9ms queue=0.8ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:08:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:08:32.109] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:08:32.111] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:08:32.162] [DEBUG] QUERY OK source="tms_terminals" db=50.9ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:08:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:08:32.198] [DEBUG] QUERY OK db=34.9ms queue=0.7ms idle=51.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "fe44180d-782a-4a27-8c59-16eec3c393a5", "2026-08-21T05:08:31Z", ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:08:32.199] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76519, oid: "fe44180d-782a-4a27-8c59-16eec3c393a5", upload_time: "2026-08-21T05:08:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]} [2026-08-21 05:08:32.199] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:08:31Z", "value" => "morefun"} [2026-08-21 05:08:32.233] [DEBUG] QUERY OK db=33.6ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "morefun", "vendor", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.233] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774266, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.233] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:08:31Z", "value" => "kiosk_launcher"} [2026-08-21 05:08:32.277] [DEBUG] QUERY OK db=43.0ms queue=0.5ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "kiosk_launcher", "model", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.278] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774267, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.278] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:08:31Z", "value" => "1.0"} [2026-08-21 05:08:32.323] [DEBUG] QUERY OK db=44.0ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "1.0", "app_version", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774268, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.323] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:08:31Z", "value" => "13"} [2026-08-21 05:08:32.377] [DEBUG] QUERY OK db=52.7ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "13", "android_version", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774269, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.377] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:08:31Z", "value" => "920"} [2026-08-21 05:08:32.507] [DEBUG] QUERY OK db=130.0ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "920", "ram_free_mb", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.508] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774270, itemkey: "ram_free_mb", value: "920", timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.508] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:08:31Z", "value" => "WIFI"} [2026-08-21 05:08:32.532] [DEBUG] QUERY OK db=23.3ms queue=0.1ms idle=131.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "WIFI", "network_type", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774271, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.532] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:08:31Z", "value" => "true"} [2026-08-21 05:08:32.578] [DEBUG] QUERY OK db=45.4ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "true", "kiosk_active", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774272, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.578] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:08:31Z", "value" => ""} [2026-08-21 05:08:32.618] [DEBUG] QUERY OK db=38.0ms queue=0.9ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:08:31Z", "sim_operator", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774273, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.619] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:08:31Z", "value" => "UNKNOWN"} [2026-08-21 05:08:32.654] [DEBUG] QUERY OK db=33.7ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "UNKNOWN", "sim_number", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774274, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.654] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:08:31Z", "value" => "UNKNOWN"} [2026-08-21 05:08:32.732] [DEBUG] QUERY OK db=77.3ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "UNKNOWN", "sim_iccid", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774275, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.732] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:08:31Z", "value" => "UNKNOWN"} [2026-08-21 05:08:32.783] [DEBUG] QUERY OK db=50.0ms idle=78.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "UNKNOWN", "sim_imsi", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774276, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.783] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:08:31Z", "value" => "UNKNOWN"} [2026-08-21 05:08:32.816] [DEBUG] QUERY OK db=32.8ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "UNKNOWN", "sim_iccid2", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774277, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.817] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:08:31Z", "value" => "UNKNOWN"} [2026-08-21 05:08:32.874] [DEBUG] QUERY OK db=56.2ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "UNKNOWN", "sim_imsi2", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774278, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.874] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:08:31Z", "value" => "21"} [2026-08-21 05:08:32.918] [DEBUG] QUERY OK db=43.1ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "21", "data_usage_mb", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774279, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.918] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:08:31Z", "value" => "0"} [2026-08-21 05:08:32.942] [DEBUG] QUERY OK db=22.6ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "0", "mobile_data_mb", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.942] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774280, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:08:32.943] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:08:31Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:08:32.984] [DEBUG] QUERY OK db=40.5ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:08:31Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76519, ~N[2026-08-21 05:08:32], ~N[2026-08-21 05:08:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:08:32.985] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774281, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:08:31Z", message: nil, status_log_id: 76519, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:08:32], updated_at: ~N[2026-08-21 05:08:32]}} [2026-08-21 05:09:02.193] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:09:02.194] [INFO ] Incoming JSON payload: {"oid":"2b402238-b969-4ea5-b610-2ff05c26edf1","sn":"98251226730001","uploadTime":"2026-08-21T05:09:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:09:01Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:09:02.195] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2b402238-b969-4ea5-b610-2ff05c26edf1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:09:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:09:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:09:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:09:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:09:01Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:09:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:09:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:09:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:09:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:09:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:09:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:09:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:09:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:09:01Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:09:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:09:01Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:09:01Z", "vendor" => "morefun"} [2026-08-21 05:09:02.195] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:09:02.195] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:09:02.195] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:09:02.201] [DEBUG] QUERY OK source="parameter_templates" db=5.8ms idle=1194.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-08-21 05:09:02.221] [DEBUG] QUERY OK source="parameter_templates" db=19.4ms idle=873.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-08-21 05:09:02.221] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:09:02.230] [DEBUG] QUERY OK source="tms_terminals" db=8.8ms idle=20.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:09:02.230] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:09:02.280] [DEBUG] QUERY OK source="tms_terminals" db=49.3ms idle=9.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:09:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:09:02.280] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:09:02.286] [DEBUG] QUERY OK source="tms_terminals" db=5.7ms idle=50.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-08-21 05:09:02.346] [DEBUG] QUERY OK source="tms_terminals" db=59.4ms idle=6.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:09:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:09:02.411] [DEBUG] QUERY OK db=64.4ms queue=0.3ms idle=8.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2b402238-b969-4ea5-b610-2ff05c26edf1", "2026-08-21T05:09:01Z", ~N[2026-08-21 05:09:02], ~N[2026-08-21 05:09:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:09:02.411] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76520, oid: "2b402238-b969-4ea5-b610-2ff05c26edf1", upload_time: "2026-08-21T05:09:01Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:02], updated_at: ~N[2026-08-21 05:09:02]} [2026-08-21 05:09:02.412] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:09:01Z", "value" => "morefun"} [2026-08-21 05:09:02.430] [DEBUG] QUERY OK db=18.1ms idle=68.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "morefun", "vendor", 76520, ~N[2026-08-21 05:09:02], ~N[2026-08-21 05:09:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:02.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774282, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:02], updated_at: ~N[2026-08-21 05:09:02]}} [2026-08-21 05:09:02.430] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:09:01Z", "value" => "kiosk_launcher"} [2026-08-21 05:09:02.496] [DEBUG] QUERY OK db=61.6ms queue=1.1ms idle=20.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "kiosk_launcher", "model", 76520, ~N[2026-08-21 05:09:02], ~N[2026-08-21 05:09:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:02.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774283, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:02], updated_at: ~N[2026-08-21 05:09:02]}} [2026-08-21 05:09:02.498] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:09:01Z", "value" => "1.0"} [2026-08-21 05:09:02.546] [DEBUG] QUERY OK db=46.6ms idle=69.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "1.0", "app_version", 76520, ~N[2026-08-21 05:09:02], ~N[2026-08-21 05:09:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:02.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774284, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:02], updated_at: ~N[2026-08-21 05:09:02]}} [2026-08-21 05:09:02.547] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:09:01Z", "value" => "13"} [2026-08-21 05:09:02.585] [DEBUG] QUERY OK db=38.5ms idle=53.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "13", "android_version", 76520, ~N[2026-08-21 05:09:02], ~N[2026-08-21 05:09:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:02.586] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774285, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:02], updated_at: ~N[2026-08-21 05:09:02]}} [2026-08-21 05:09:02.586] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:09:01Z", "value" => "930"} [2026-08-21 05:09:02.635] [DEBUG] QUERY OK db=47.5ms queue=1.5ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "930", "ram_free_mb", 76520, ~N[2026-08-21 05:09:02], ~N[2026-08-21 05:09:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:02.635] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774286, itemkey: "ram_free_mb", value: "930", timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:02], updated_at: ~N[2026-08-21 05:09:02]}} [2026-08-21 05:09:02.635] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:09:01Z", "value" => "WIFI"} [2026-08-21 05:09:02.760] [DEBUG] QUERY OK db=122.1ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "WIFI", "network_type", 76520, ~N[2026-08-21 05:09:02], ~N[2026-08-21 05:09:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:02.761] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774287, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:02], updated_at: ~N[2026-08-21 05:09:02]}} [2026-08-21 05:09:02.761] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:09:01Z", "value" => "true"} [2026-08-21 05:09:03.003] [DEBUG] QUERY OK db=241.5ms idle=126.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "true", "kiosk_active", 76520, ~N[2026-08-21 05:09:02], ~N[2026-08-21 05:09:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:03.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774288, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:02], updated_at: ~N[2026-08-21 05:09:02]}} [2026-08-21 05:09:03.006] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:09:01Z", "value" => ""} [2026-08-21 05:09:03.043] [DEBUG] QUERY OK db=36.8ms idle=248.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:09:01Z", "sim_operator", 76520, ~N[2026-08-21 05:09:03], ~N[2026-08-21 05:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:03.044] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774289, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:03], updated_at: ~N[2026-08-21 05:09:03]}} [2026-08-21 05:09:03.044] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:09:01Z", "value" => "UNKNOWN"} [2026-08-21 05:09:03.164] [DEBUG] QUERY OK db=119.6ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "UNKNOWN", "sim_number", 76520, ~N[2026-08-21 05:09:03], ~N[2026-08-21 05:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:03.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774290, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:03], updated_at: ~N[2026-08-21 05:09:03]}} [2026-08-21 05:09:03.164] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:09:01Z", "value" => "UNKNOWN"} [2026-08-21 05:09:03.263] [DEBUG] QUERY OK db=89.7ms queue=8.9ms idle=120.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "UNKNOWN", "sim_iccid", 76520, ~N[2026-08-21 05:09:03], ~N[2026-08-21 05:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:03.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774291, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:03], updated_at: ~N[2026-08-21 05:09:03]}} [2026-08-21 05:09:03.284] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:09:01Z", "value" => "UNKNOWN"} [2026-08-21 05:09:03.394] [DEBUG] QUERY OK db=80.3ms queue=17.5ms idle=129.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "UNKNOWN", "sim_imsi", 76520, ~N[2026-08-21 05:09:03], ~N[2026-08-21 05:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:03.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774292, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:03], updated_at: ~N[2026-08-21 05:09:03]}} [2026-08-21 05:09:03.402] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:09:01Z", "value" => "UNKNOWN"} [2026-08-21 05:09:03.470] [DEBUG] QUERY OK db=63.1ms queue=4.5ms idle=18.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "UNKNOWN", "sim_iccid2", 76520, ~N[2026-08-21 05:09:03], ~N[2026-08-21 05:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:03.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774293, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:03], updated_at: ~N[2026-08-21 05:09:03]}} [2026-08-21 05:09:03.470] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:09:01Z", "value" => "UNKNOWN"} [2026-08-21 05:09:03.544] [DEBUG] QUERY OK db=72.9ms idle=79.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "UNKNOWN", "sim_imsi2", 76520, ~N[2026-08-21 05:09:03], ~N[2026-08-21 05:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:03.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774294, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:03], updated_at: ~N[2026-08-21 05:09:03]}} [2026-08-21 05:09:03.544] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:09:01Z", "value" => "21"} [2026-08-21 05:09:03.590] [DEBUG] QUERY OK db=45.1ms idle=74.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "21", "data_usage_mb", 76520, ~N[2026-08-21 05:09:03], ~N[2026-08-21 05:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:03.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774295, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:03], updated_at: ~N[2026-08-21 05:09:03]}} [2026-08-21 05:09:03.590] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:09:01Z", "value" => "0"} [2026-08-21 05:09:03.667] [DEBUG] QUERY OK db=62.7ms queue=0.1ms idle=60.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "0", "mobile_data_mb", 76520, ~N[2026-08-21 05:09:03], ~N[2026-08-21 05:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:03.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774296, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:03], updated_at: ~N[2026-08-21 05:09:03]}} [2026-08-21 05:09:03.687] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:09:01Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:09:03.771] [DEBUG] QUERY OK db=82.8ms idle=97.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:01Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76520, ~N[2026-08-21 05:09:03], ~N[2026-08-21 05:09:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:03.806] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774297, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:09:01Z", message: nil, status_log_id: 76520, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:03], updated_at: ~N[2026-08-21 05:09:03]}} [2026-08-21 05:09:32.274] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:09:32.274] [INFO ] Incoming JSON payload: {"oid":"717474ae-e2d1-4448-acfc-39f677552514","sn":"98251226730001","uploadTime":"2026-08-21T05:09:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:09:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:09:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:09:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:09:31Z"},{"itemkey":"ram_free_mb","value":"930","timestamp":"2026-08-21T05:09:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:09:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:09:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:09:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:09:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:09:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:09:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:09:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:09:31Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:09:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:09: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:09:32.275] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "717474ae-e2d1-4448-acfc-39f677552514", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:09:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:09:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:09:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:09:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:09:31Z", "value" => "930"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:09:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:09:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:09:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:09:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:09:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:09:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:09:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:09:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:09:31Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:09:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:09: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:09:31Z", "vendor" => "morefun"} [2026-08-21 05:09:32.275] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:09:32.275] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:09:32.275] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:09:32.280] [DEBUG] QUERY OK source="parameter_templates" db=4.7ms idle=1624.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-08-21 05:09:32.288] [DEBUG] QUERY OK source="parameter_templates" db=6.0ms queue=1.4ms idle=729.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-08-21 05:09:32.288] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:09:32.289] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=8.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:09:32.290] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:09:32.332] [DEBUG] QUERY OK source="tms_terminals" db=40.2ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:09:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:09:32.332] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:09:32.335] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:09:32.359] [DEBUG] QUERY OK source="tms_terminals" db=23.7ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:09:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:09:32.404] [DEBUG] QUERY OK db=42.6ms queue=1.5ms idle=24.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "717474ae-e2d1-4448-acfc-39f677552514", "2026-08-21T05:09:31Z", ~N[2026-08-21 05:09:32], ~N[2026-08-21 05:09:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:09:32.404] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76521, oid: "717474ae-e2d1-4448-acfc-39f677552514", upload_time: "2026-08-21T05:09:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:32], updated_at: ~N[2026-08-21 05:09:32]} [2026-08-21 05:09:32.404] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:09:31Z", "value" => "morefun"} [2026-08-21 05:09:32.447] [DEBUG] QUERY OK db=41.9ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:31Z", "morefun", "vendor", 76521, ~N[2026-08-21 05:09:32], ~N[2026-08-21 05:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:32.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774298, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:32], updated_at: ~N[2026-08-21 05:09:32]}} [2026-08-21 05:09:32.448] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:09:31Z", "value" => "kiosk_launcher"} [2026-08-21 05:09:32.501] [DEBUG] QUERY OK db=52.8ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:31Z", "kiosk_launcher", "model", 76521, ~N[2026-08-21 05:09:32], ~N[2026-08-21 05:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:32.502] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774299, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:32], updated_at: ~N[2026-08-21 05:09:32]}} [2026-08-21 05:09:32.502] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:09:31Z", "value" => "1.0"} [2026-08-21 05:09:32.535] [DEBUG] QUERY OK db=33.0ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:31Z", "1.0", "app_version", 76521, ~N[2026-08-21 05:09:32], ~N[2026-08-21 05:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:32.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774300, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:32], updated_at: ~N[2026-08-21 05:09:32]}} [2026-08-21 05:09:32.535] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:09:31Z", "value" => "13"} [2026-08-21 05:09:32.573] [DEBUG] QUERY OK db=37.3ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:31Z", "13", "android_version", 76521, ~N[2026-08-21 05:09:32], ~N[2026-08-21 05:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:32.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774301, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:32], updated_at: ~N[2026-08-21 05:09:32]}} [2026-08-21 05:09:32.576] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:09:31Z", "value" => "930"} [2026-08-21 05:09:32.610] [DEBUG] QUERY OK db=33.2ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:31Z", "930", "ram_free_mb", 76521, ~N[2026-08-21 05:09:32], ~N[2026-08-21 05:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:32.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774302, itemkey: "ram_free_mb", value: "930", timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:32], updated_at: ~N[2026-08-21 05:09:32]}} [2026-08-21 05:09:32.610] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:09:31Z", "value" => "WIFI"} [2026-08-21 05:09:32.634] [DEBUG] QUERY OK db=23.4ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:31Z", "WIFI", "network_type", 76521, ~N[2026-08-21 05:09:32], ~N[2026-08-21 05:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:32.634] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774303, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:32], updated_at: ~N[2026-08-21 05:09:32]}} [2026-08-21 05:09:32.634] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:09:31Z", "value" => "true"} [2026-08-21 05:09:32.665] [DEBUG] QUERY OK db=30.3ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:31Z", "true", "kiosk_active", 76521, ~N[2026-08-21 05:09:32], ~N[2026-08-21 05:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:32.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774304, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:32], updated_at: ~N[2026-08-21 05:09:32]}} [2026-08-21 05:09:32.665] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:09:31Z", "value" => ""} [2026-08-21 05:09:32.755] [DEBUG] QUERY OK db=88.9ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:09:31Z", "sim_operator", 76521, ~N[2026-08-21 05:09:32], ~N[2026-08-21 05:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:32.755] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774305, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:32], updated_at: ~N[2026-08-21 05:09:32]}} [2026-08-21 05:09:32.755] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:09:31Z", "value" => "UNKNOWN"} [2026-08-21 05:09:32.831] [DEBUG] QUERY OK db=75.0ms idle=91.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:31Z", "UNKNOWN", "sim_number", 76521, ~N[2026-08-21 05:09:32], ~N[2026-08-21 05:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:32.831] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774306, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:32], updated_at: ~N[2026-08-21 05:09:32]}} [2026-08-21 05:09:32.831] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:09:31Z", "value" => "UNKNOWN"} [2026-08-21 05:09:32.906] [DEBUG] QUERY OK db=75.0ms idle=76.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:31Z", "UNKNOWN", "sim_iccid", 76521, ~N[2026-08-21 05:09:32], ~N[2026-08-21 05:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:32.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774307, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:32], updated_at: ~N[2026-08-21 05:09:32]}} [2026-08-21 05:09:32.907] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:09:31Z", "value" => "UNKNOWN"} [2026-08-21 05:09:32.972] [DEBUG] QUERY OK db=64.6ms queue=0.1ms idle=76.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:31Z", "UNKNOWN", "sim_imsi", 76521, ~N[2026-08-21 05:09:32], ~N[2026-08-21 05:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:32.972] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774308, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:32], updated_at: ~N[2026-08-21 05:09:32]}} [2026-08-21 05:09:32.972] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:09:31Z", "value" => "UNKNOWN"} [2026-08-21 05:09:32.984] [DEBUG] QUERY OK db=10.8ms idle=66.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:31Z", "UNKNOWN", "sim_iccid2", 76521, ~N[2026-08-21 05:09:32], ~N[2026-08-21 05:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:32.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774309, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:32], updated_at: ~N[2026-08-21 05:09:32]}} [2026-08-21 05:09:32.984] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:09:31Z", "value" => "UNKNOWN"} [2026-08-21 05:09:33.011] [DEBUG] QUERY OK db=26.3ms idle=12.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:31Z", "UNKNOWN", "sim_imsi2", 76521, ~N[2026-08-21 05:09:32], ~N[2026-08-21 05:09:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:33.011] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774310, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:32], updated_at: ~N[2026-08-21 05:09:32]}} [2026-08-21 05:09:33.011] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:09:31Z", "value" => "21"} [2026-08-21 05:09:33.060] [DEBUG] QUERY OK db=48.3ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:31Z", "21", "data_usage_mb", 76521, ~N[2026-08-21 05:09:33], ~N[2026-08-21 05:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:33.060] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774311, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:33], updated_at: ~N[2026-08-21 05:09:33]}} [2026-08-21 05:09:33.060] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:09:31Z", "value" => "0"} [2026-08-21 05:09:33.117] [DEBUG] QUERY OK db=56.8ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09:31Z", "0", "mobile_data_mb", 76521, ~N[2026-08-21 05:09:33], ~N[2026-08-21 05:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:33.117] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774312, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:33], updated_at: ~N[2026-08-21 05:09:33]}} [2026-08-21 05:09:33.118] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:09: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:09:33.147] [DEBUG] QUERY OK db=28.2ms idle=59.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:09: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76521, ~N[2026-08-21 05:09:33], ~N[2026-08-21 05:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:09:33.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774313, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:09:31Z", message: nil, status_log_id: 76521, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:09:33], updated_at: ~N[2026-08-21 05:09:33]}} [2026-08-21 05:10:02.706] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:10:02.706] [INFO ] Incoming JSON payload: {"oid":"8bea5438-a1aa-4811-95b5-70cfecfbd326","sn":"98251226730001","uploadTime":"2026-08-21T05:10:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:10:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:10:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:10:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:10:01Z"},{"itemkey":"ram_free_mb","value":"927","timestamp":"2026-08-21T05:10:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:10:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:10:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:10:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:10:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:10:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:10:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:10:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:10:01Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:10:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:10:02.713] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8bea5438-a1aa-4811-95b5-70cfecfbd326", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:10:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:10:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:10:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:10:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:10:01Z", "value" => "927"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:10:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:10:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:10:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:10:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:10:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:10:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:10:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:10:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:10:01Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:10:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:10:01Z", "vendor" => "morefun"} [2026-08-21 05:10:02.715] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:10:02.715] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:10:02.715] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:10:02.723] [DEBUG] QUERY OK source="parameter_templates" db=8.0ms idle=1022.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-08-21 05:10:02.729] [DEBUG] QUERY OK source="parameter_templates" db=5.4ms idle=18.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-08-21 05:10:02.729] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:10:02.739] [DEBUG] QUERY OK source="tms_terminals" db=8.0ms idle=7.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:10:02.739] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:10:02.835] [DEBUG] QUERY OK source="tms_terminals" db=92.3ms decode=0.3ms idle=10.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:10:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:10:02.846] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:10:02.850] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms idle=107.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-08-21 05:10:02.951] [DEBUG] QUERY OK source="tms_terminals" db=93.5ms idle=25.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:10:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:10:03.066] [DEBUG] QUERY OK db=114.4ms queue=0.1ms idle=0.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "8bea5438-a1aa-4811-95b5-70cfecfbd326", "2026-08-21T05:10:01Z", ~N[2026-08-21 05:10:02], ~N[2026-08-21 05:10:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:10:03.066] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76522, oid: "8bea5438-a1aa-4811-95b5-70cfecfbd326", upload_time: "2026-08-21T05:10:01Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:02], updated_at: ~N[2026-08-21 05:10:02]} [2026-08-21 05:10:03.066] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:10:01Z", "value" => "morefun"} [2026-08-21 05:10:03.120] [DEBUG] QUERY OK db=41.4ms queue=3.6ms idle=123.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:01Z", "morefun", "vendor", 76522, ~N[2026-08-21 05:10:03], ~N[2026-08-21 05:10:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:03.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774314, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:03], updated_at: ~N[2026-08-21 05:10:03]}} [2026-08-21 05:10:03.121] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:10:01Z", "value" => "kiosk_launcher"} [2026-08-21 05:10:03.194] [DEBUG] QUERY OK db=72.5ms idle=54.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:01Z", "kiosk_launcher", "model", 76522, ~N[2026-08-21 05:10:03], ~N[2026-08-21 05:10:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:03.194] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774315, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:03], updated_at: ~N[2026-08-21 05:10:03]}} [2026-08-21 05:10:03.194] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:10:01Z", "value" => "1.0"} [2026-08-21 05:10:03.273] [DEBUG] QUERY OK db=65.8ms idle=86.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:01Z", "1.0", "app_version", 76522, ~N[2026-08-21 05:10:03], ~N[2026-08-21 05:10:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:03.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774316, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:03], updated_at: ~N[2026-08-21 05:10:03]}} [2026-08-21 05:10:03.273] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:10:01Z", "value" => "13"} [2026-08-21 05:10:03.339] [DEBUG] QUERY OK db=64.7ms idle=80.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:01Z", "13", "android_version", 76522, ~N[2026-08-21 05:10:03], ~N[2026-08-21 05:10:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:03.339] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774317, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:03], updated_at: ~N[2026-08-21 05:10:03]}} [2026-08-21 05:10:03.339] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:10:01Z", "value" => "927"} [2026-08-21 05:10:03.424] [DEBUG] QUERY OK db=77.0ms queue=2.1ms idle=71.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:01Z", "927", "ram_free_mb", 76522, ~N[2026-08-21 05:10:03], ~N[2026-08-21 05:10:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:03.424] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774318, itemkey: "ram_free_mb", value: "927", timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:03], updated_at: ~N[2026-08-21 05:10:03]}} [2026-08-21 05:10:03.425] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:10:01Z", "value" => "WIFI"} [2026-08-21 05:10:03.560] [DEBUG] QUERY OK db=135.3ms idle=86.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:01Z", "WIFI", "network_type", 76522, ~N[2026-08-21 05:10:03], ~N[2026-08-21 05:10:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:03.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774319, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:03], updated_at: ~N[2026-08-21 05:10:03]}} [2026-08-21 05:10:03.561] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:10:01Z", "value" => "true"} [2026-08-21 05:10:03.670] [DEBUG] QUERY OK db=108.6ms idle=136.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:01Z", "true", "kiosk_active", 76522, ~N[2026-08-21 05:10:03], ~N[2026-08-21 05:10:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:03.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774320, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:03], updated_at: ~N[2026-08-21 05:10:03]}} [2026-08-21 05:10:03.670] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:10:01Z", "value" => ""} [2026-08-21 05:10:03.768] [DEBUG] QUERY OK db=98.1ms idle=110.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:10:01Z", "sim_operator", 76522, ~N[2026-08-21 05:10:03], ~N[2026-08-21 05:10:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:03.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774321, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:03], updated_at: ~N[2026-08-21 05:10:03]}} [2026-08-21 05:10:03.769] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:10:01Z", "value" => "UNKNOWN"} [2026-08-21 05:10:03.837] [DEBUG] QUERY OK db=67.8ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:01Z", "UNKNOWN", "sim_number", 76522, ~N[2026-08-21 05:10:03], ~N[2026-08-21 05:10:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:03.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774322, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:03], updated_at: ~N[2026-08-21 05:10:03]}} [2026-08-21 05:10:03.837] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:10:01Z", "value" => "UNKNOWN"} [2026-08-21 05:10:03.917] [DEBUG] QUERY OK db=79.4ms idle=69.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:01Z", "UNKNOWN", "sim_iccid", 76522, ~N[2026-08-21 05:10:03], ~N[2026-08-21 05:10:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:03.917] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774323, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:03], updated_at: ~N[2026-08-21 05:10:03]}} [2026-08-21 05:10:03.917] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:10:01Z", "value" => "UNKNOWN"} [2026-08-21 05:10:04.014] [DEBUG] QUERY OK db=95.9ms idle=80.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:01Z", "UNKNOWN", "sim_imsi", 76522, ~N[2026-08-21 05:10:03], ~N[2026-08-21 05:10:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:04.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774324, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:03], updated_at: ~N[2026-08-21 05:10:03]}} [2026-08-21 05:10:04.016] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:10:01Z", "value" => "UNKNOWN"} [2026-08-21 05:10:04.112] [DEBUG] QUERY OK db=94.9ms idle=99.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:01Z", "UNKNOWN", "sim_iccid2", 76522, ~N[2026-08-21 05:10:04], ~N[2026-08-21 05:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:04.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774325, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:04], updated_at: ~N[2026-08-21 05:10:04]}} [2026-08-21 05:10:04.114] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:10:01Z", "value" => "UNKNOWN"} [2026-08-21 05:10:04.200] [DEBUG] QUERY OK db=73.0ms queue=4.4ms idle=108.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:01Z", "UNKNOWN", "sim_imsi2", 76522, ~N[2026-08-21 05:10:04], ~N[2026-08-21 05:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:04.200] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774326, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:04], updated_at: ~N[2026-08-21 05:10:04]}} [2026-08-21 05:10:04.200] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:10:01Z", "value" => "21"} [2026-08-21 05:10:04.257] [DEBUG] QUERY OK db=56.4ms idle=89.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:01Z", "21", "data_usage_mb", 76522, ~N[2026-08-21 05:10:04], ~N[2026-08-21 05:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:04.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774327, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:04], updated_at: ~N[2026-08-21 05:10:04]}} [2026-08-21 05:10:04.257] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:10:01Z", "value" => "0"} [2026-08-21 05:10:04.350] [DEBUG] QUERY OK db=91.8ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:01Z", "0", "mobile_data_mb", 76522, ~N[2026-08-21 05:10:04], ~N[2026-08-21 05:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:04.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774328, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:04], updated_at: ~N[2026-08-21 05:10:04]}} [2026-08-21 05:10:04.351] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:10:04.437] [DEBUG] QUERY OK db=85.6ms idle=93.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76522, ~N[2026-08-21 05:10:04], ~N[2026-08-21 05:10:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:04.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774329, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:10:01Z", message: nil, status_log_id: 76522, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:04], updated_at: ~N[2026-08-21 05:10:04]}} [2026-08-21 05:10:04.533] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 05:10:04.659] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 05:10:04.847] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 05:10:20.847] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 05:10:32.777] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:10:32.777] [INFO ] Incoming JSON payload: {"oid":"72a736f5-e179-4690-b6a3-f490be8e6b1b","sn":"98251226730001","uploadTime":"2026-08-21T05:10:32Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:10:32Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:10:32Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:10:32Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:10:32Z"},{"itemkey":"ram_free_mb","value":"924","timestamp":"2026-08-21T05:10:32Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:10:32Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:10:32Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:10:32Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:10:32Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:10:32Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:10:32Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:10:32Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:10:32Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:10:32Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:10:32.778] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "72a736f5-e179-4690-b6a3-f490be8e6b1b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:10:32Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:10:32Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:10:32Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:10:32Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:10:32Z", "value" => "924"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:10:32Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:10:32Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:10:32Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:10:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:10:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:10:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:10:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:10:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:10:32Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:10:32Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:10:32Z", "vendor" => "morefun"} [2026-08-21 05:10:32.779] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:10:32.779] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:10:32.779] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:10:32.782] [DEBUG] QUERY OK source="parameter_templates" db=3.1ms idle=871.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-08-21 05:10:32.783] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=113.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-08-21 05:10:32.784] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:10:32.785] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:10:32.786] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:10:32.855] [DEBUG] QUERY OK source="tms_terminals" db=68.9ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:10:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:10:32.855] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:10:32.856] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:10:32.944] [DEBUG] QUERY OK source="tms_terminals" db=87.6ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:10:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:10:33.016] [DEBUG] QUERY OK db=71.0ms idle=32.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "72a736f5-e179-4690-b6a3-f490be8e6b1b", "2026-08-21T05:10:32Z", ~N[2026-08-21 05:10:32], ~N[2026-08-21 05:10:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:10:33.018] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76523, oid: "72a736f5-e179-4690-b6a3-f490be8e6b1b", upload_time: "2026-08-21T05:10:32Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:32], updated_at: ~N[2026-08-21 05:10:32]} [2026-08-21 05:10:33.018] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:10:32Z", "value" => "morefun"} [2026-08-21 05:10:33.073] [DEBUG] QUERY OK db=54.3ms idle=74.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:32Z", "morefun", "vendor", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774330, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.074] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:10:32Z", "value" => "kiosk_launcher"} [2026-08-21 05:10:33.143] [DEBUG] QUERY OK db=68.8ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:32Z", "kiosk_launcher", "model", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.143] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774331, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.143] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:10:32Z", "value" => "1.0"} [2026-08-21 05:10:33.192] [DEBUG] QUERY OK db=47.8ms idle=70.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:32Z", "1.0", "app_version", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774332, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.192] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:10:32Z", "value" => "13"} [2026-08-21 05:10:33.327] [DEBUG] QUERY OK db=134.1ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:32Z", "13", "android_version", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774333, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.328] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:10:32Z", "value" => "924"} [2026-08-21 05:10:33.355] [DEBUG] QUERY OK db=27.1ms idle=136.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:32Z", "924", "ram_free_mb", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774334, itemkey: "ram_free_mb", value: "924", timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.356] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:10:32Z", "value" => "WIFI"} [2026-08-21 05:10:33.398] [DEBUG] QUERY OK db=41.4ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:32Z", "WIFI", "network_type", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.399] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774335, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.399] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:10:32Z", "value" => "true"} [2026-08-21 05:10:33.447] [DEBUG] QUERY OK db=47.4ms queue=0.1ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:32Z", "true", "kiosk_active", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774336, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.448] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:10:32Z", "value" => ""} [2026-08-21 05:10:33.499] [DEBUG] QUERY OK db=50.0ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:10:32Z", "sim_operator", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774337, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.499] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:10:32Z", "value" => "UNKNOWN"} [2026-08-21 05:10:33.565] [DEBUG] QUERY OK db=65.7ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:32Z", "UNKNOWN", "sim_number", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774338, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.566] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:10:32Z", "value" => "UNKNOWN"} [2026-08-21 05:10:33.607] [DEBUG] QUERY OK db=39.6ms idle=68.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:32Z", "UNKNOWN", "sim_iccid", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774339, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.607] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:10:32Z", "value" => "UNKNOWN"} [2026-08-21 05:10:33.649] [DEBUG] QUERY OK db=41.5ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:32Z", "UNKNOWN", "sim_imsi", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.651] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774340, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.651] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:10:32Z", "value" => "UNKNOWN"} [2026-08-21 05:10:33.706] [DEBUG] QUERY OK db=54.7ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:32Z", "UNKNOWN", "sim_iccid2", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774341, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.707] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:10:32Z", "value" => "UNKNOWN"} [2026-08-21 05:10:33.787] [DEBUG] QUERY OK db=80.4ms idle=57.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:32Z", "UNKNOWN", "sim_imsi2", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.788] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774342, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.788] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:10:32Z", "value" => "21"} [2026-08-21 05:10:33.823] [DEBUG] QUERY OK db=33.4ms queue=0.1ms idle=83.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:32Z", "21", "data_usage_mb", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774343, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.823] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:10:32Z", "value" => "0"} [2026-08-21 05:10:33.871] [DEBUG] QUERY OK db=47.0ms queue=0.1ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10:32Z", "0", "mobile_data_mb", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774344, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:33.877] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:10:33.939] [DEBUG] QUERY OK db=50.4ms queue=0.1ms idle=59.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76523, ~N[2026-08-21 05:10:33], ~N[2026-08-21 05:10:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:10:33.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774345, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:10:32Z", message: nil, status_log_id: 76523, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:10:33], updated_at: ~N[2026-08-21 05:10:33]}} [2026-08-21 05:10:59.688] [DEBUG] HANDLE EVENT "sync_merchant" in PlatformWeb.SettlementLive.TidMasterBrowser Parameters: %{"id" => "15"} [2026-08-21 05:10:59.693] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.5ms idle=1019.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`id` = ?) [15] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.handle_event/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:371 [2026-08-21 05:10:59.701] [INFO ] [ApprovalSync] On-demand sync for mms_user_id=1716 [2026-08-21 05:10:59.708] [DEBUG] QUERY OK source="users" db=0.8ms queue=0.8ms idle=34.1ms SELECT u0.`id`, u0.`name`, u0.`email`, u0.`phone`, u0.`status`, u0.`contract_approval_status`, u0.`contract_approved_at`, u0.`mcc_id`, u0.`meta`, u0.`products`, u0.`created_at`, u0.`updated_at` FROM `users` AS u0 WHERE (u0.`id` = ?) [1716] ↳ SettlementCore.Mms.ApprovalSync.fetch_user/1, at: lib/settlement_core/mms/approval_sync.ex:264 [2026-08-21 05:10:59.715] [DEBUG] QUERY OK source="user_metadata" db=0.5ms queue=0.5ms idle=41.3ms SELECT u0.`id`, u0.`user_id`, u0.`merchant_id`, u0.`mc_code`, u0.`merchant_refrence_number`, u0.`currency_code`, u0.`transaction_currency`, u0.`country_code`, u0.`group_code`, u0.`bank_code`, u0.`bankUser_id`, u0.`date_added`, u0.`date_updated`, u0.`created_at`, u0.`updated_at` FROM `user_metadata` AS u0 WHERE (u0.`user_id` = ?) LIMIT 1 [1716] ↳ SettlementCore.Mms.ApprovalSync.fetch_metadata/1, at: lib/settlement_core/mms/approval_sync.ex:282 [2026-08-21 05:10:59.722] [DEBUG] QUERY OK source="merchant_stores" db=0.6ms queue=1.6ms idle=12.1ms SELECT m0.`id`, m0.`user_id`, m0.`dba_name`, m0.`is_primary`, m0.`status`, m0.`created_at`, m0.`updated_at` FROM `merchant_stores` AS m0 WHERE ((m0.`user_id` = ?) AND (m0.`is_primary` = 1)) LIMIT 1 [1716] ↳ SettlementCore.Mms.ApprovalSync.build_tid_master_attrs/1, at: lib/settlement_core/mms/approval_sync.ex:124 [2026-08-21 05:10:59.738] [DEBUG] QUERY OK source="mdr_templates" db=1.0ms queue=0.6ms idle=15.0ms SELECT m0.`id`, m0.`merchant_id`, m0.`name`, m0.`description`, m0.`is_default`, m0.`is_custom`, m0.`is_modified`, m0.`mcc_id`, m0.`sub_mcc`, m0.`effective_from`, m0.`effective_to`, m0.`status`, m0.`created_by`, m0.`updated_by`, m0.`created_at`, m0.`updated_at` FROM `mdr_templates` AS m0 WHERE (m0.`merchant_id` = ?) AND (m0.`status` = 1) AND (m0.`effective_from` <= ?) AND ((m0.`effective_to` IS NULL) OR (m0.`effective_to` >= ?)) ORDER BY m0.`effective_from` DESC, m0.`id` DESC LIMIT 1 [1716, ~D[2026-08-21], ~D[2026-08-21]] ↳ SettlementCore.Mms.ApprovalSync.build_mdr_snapshot/1, at: lib/settlement_core/mms/approval_sync.ex:304 [2026-08-21 05:10:59.746] [DEBUG] QUERY OK source="kyc_requests" db=0.6ms queue=0.7ms idle=22.2ms SELECT k0.`id`, k0.`user_id`, k0.`kyc_method_id`, k0.`status`, k0.`data`, k0.`created_at`, k0.`updated_at` FROM `kyc_requests` AS k0 WHERE (k0.`user_id` = ?) AND (k0.`kyc_method_id` = 13) ORDER BY k0.`id` DESC LIMIT 1 [1716] ↳ SettlementCore.Mms.ApprovalSync.build_tid_master_attrs/1, at: lib/settlement_core/mms/approval_sync.ex:126 [2026-08-21 05:10:59.752] [DEBUG] QUERY OK source="virtual_iban" db=0.5ms queue=0.9ms idle=18.8ms SELECT v0.`id`, v0.`user_id`, v0.`original_iban`, v0.`virtual_iban`, v0.`created_at`, v0.`updated_at` FROM `virtual_iban` AS v0 WHERE (v0.`user_id` = ?) ORDER BY v0.`id` DESC LIMIT 1 [1716] ↳ SettlementCore.Mms.ApprovalSync.build_tid_master_attrs/1, at: lib/settlement_core/mms/approval_sync.ex:127 [2026-08-21 05:10:59.760] [DEBUG] QUERY OK source="mccs" db=0.7ms queue=1.4ms idle=11.4ms SELECT m0.`id`, m0.`code`, m0.`description`, m0.`category`, m0.`risk_tier`, m0.`status`, m0.`created_at`, m0.`updated_at` FROM `mccs` AS m0 WHERE (m0.`id` = ?) [363] ↳ SettlementCore.Mms.ApprovalSync.fetch_mcc/1, at: lib/settlement_core/mms/approval_sync.ex:217 [2026-08-21 05:10:59.767] [DEBUG] QUERY OK db=1.1ms queue=0.5ms idle=739.6ms SELECT pt.terminalid FROM pos_merchant pm JOIN pos_terminal pt ON pt.pos_merchant_id = pm.id WHERE pm.merchantid = ? ["627574280000000"] [2026-08-21 05:10:59.780] [DEBUG] QUERY OK source="tid_masters" db=0.9ms queue=0.8ms idle=85.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mms_user_id` = ?) [1716] ↳ SettlementCore.Context.upsert_tid_master/1, at: lib/settlement_core/context.ex:980 [2026-08-21 05:10:59.861] [DEBUG] QUERY OK source="tid_masters" db=54.0ms queue=27.3ms idle=13.1ms UPDATE `tid_masters` SET `mms_synced_at` = ?, `updated_at` = ? WHERE `id` = ? [~N[2026-08-21 05:10:59], ~N[2026-08-21 05:10:59], 15] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.handle_event/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:373 [2026-08-21 05:10:59.863] [DEBUG] QUERY OK source="tid_masters" db=1.1ms queue=0.1ms idle=82.1ms SELECT count(t0.`id`) FROM `tid_masters` AS t0 [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.load_rows/1, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:413 [2026-08-21 05:10:59.866] [DEBUG] QUERY OK source="tid_masters" db=2.7ms idle=1.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 ORDER BY t0.`merchant_name_legal`, t0.`mid` LIMIT 500 [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.load_rows/1, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:419 [2026-08-21 05:10:59.867] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.1ms idle=3.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`id` = ?) [15] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.handle_event/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:376 [2026-08-21 05:10:59.868] [DEBUG] Replied in 180ms [2026-08-21 05:11:02.893] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:11:02.894] [INFO ] Incoming JSON payload: {"oid":"f3ae5370-2b12-4e4f-8715-1c4da61c3644","sn":"98251226730001","uploadTime":"2026-08-21T05:11:02Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:11:02Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:11:02Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:11:02Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:11:02Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T05:11:02Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:11:02Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:11:02Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:11:02Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:11:02Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:11:02Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:11:02Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:11:02Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:11:02Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:11:02Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:11:02.904] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f3ae5370-2b12-4e4f-8715-1c4da61c3644", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:11:02Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:11:02Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:11:02Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:11:02Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:11:02Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:11:02Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:11:02Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:11:02Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:11:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:11:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:11:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:11:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:11:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:11:02Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:11:02Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:11:02Z", "vendor" => "morefun"} [2026-08-21 05:11:02.904] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:11:02.904] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:11:02.905] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:11:02.907] [DEBUG] QUERY OK source="parameter_templates" db=2.6ms idle=1233.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-08-21 05:11:02.912] [DEBUG] QUERY OK source="parameter_templates" db=4.0ms idle=867.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-08-21 05:11:02.913] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:11:02.919] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=9.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:11:02.920] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:11:02.968] [DEBUG] QUERY OK source="tms_terminals" db=47.3ms queue=0.2ms idle=8.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:11:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:11:02.968] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:11:02.970] [DEBUG] QUERY OK source="tms_terminals" db=1.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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:11:03.012] [DEBUG] QUERY OK source="tms_terminals" db=41.4ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:11:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:11:03.071] [DEBUG] QUERY OK db=58.6ms queue=0.1ms idle=42.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "f3ae5370-2b12-4e4f-8715-1c4da61c3644", "2026-08-21T05:11:02Z", ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:11:03.071] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76524, oid: "f3ae5370-2b12-4e4f-8715-1c4da61c3644", upload_time: "2026-08-21T05:11:02Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]} [2026-08-21 05:11:03.071] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:11:02Z", "value" => "morefun"} [2026-08-21 05:11:03.113] [DEBUG] QUERY OK db=39.9ms queue=1.3ms idle=20.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:02Z", "morefun", "vendor", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:03.113] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774346, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:03.114] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:11:02Z", "value" => "kiosk_launcher"} [2026-08-21 05:11:03.176] [DEBUG] QUERY OK db=62.2ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:02Z", "kiosk_launcher", "model", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:03.176] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774347, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:03.176] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:11:02Z", "value" => "1.0"} [2026-08-21 05:11:03.237] [DEBUG] QUERY OK db=60.5ms idle=63.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:02Z", "1.0", "app_version", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:03.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774348, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:03.238] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:11:02Z", "value" => "13"} [2026-08-21 05:11:03.335] [DEBUG] QUERY OK db=84.6ms queue=0.1ms idle=73.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:02Z", "13", "android_version", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:03.335] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774349, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:03.335] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:11:02Z", "value" => "921"} [2026-08-21 05:11:03.394] [DEBUG] QUERY OK db=58.2ms queue=0.5ms idle=98.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:02Z", "921", "ram_free_mb", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:03.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774350, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:03.395] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:11:02Z", "value" => "WIFI"} [2026-08-21 05:11:03.590] [DEBUG] QUERY OK db=195.2ms idle=60.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:02Z", "WIFI", "network_type", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:03.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774351, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:03.591] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:11:02Z", "value" => "true"} [2026-08-21 05:11:03.626] [DEBUG] QUERY OK db=35.0ms idle=196.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:02Z", "true", "kiosk_active", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:03.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774352, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:03.626] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:11:02Z", "value" => ""} [2026-08-21 05:11:03.668] [DEBUG] QUERY OK db=41.2ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:11:02Z", "sim_operator", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:03.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774353, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:03.669] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:11:02Z", "value" => "UNKNOWN"} [2026-08-21 05:11:03.734] [DEBUG] QUERY OK db=65.0ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:02Z", "UNKNOWN", "sim_number", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:03.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774354, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:03.734] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:11:02Z", "value" => "UNKNOWN"} [2026-08-21 05:11:03.792] [DEBUG] QUERY OK db=57.5ms idle=66.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:02Z", "UNKNOWN", "sim_iccid", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:03.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774355, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:03.796] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:11:02Z", "value" => "UNKNOWN"} [2026-08-21 05:11:03.834] [DEBUG] QUERY OK db=38.6ms idle=61.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:02Z", "UNKNOWN", "sim_imsi", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:03.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774356, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:03.835] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:11:02Z", "value" => "UNKNOWN"} [2026-08-21 05:11:03.878] [DEBUG] QUERY OK db=42.6ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:02Z", "UNKNOWN", "sim_iccid2", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:03.879] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774357, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:03.879] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:11:02Z", "value" => "UNKNOWN"} [2026-08-21 05:11:03.928] [DEBUG] QUERY OK db=49.0ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:02Z", "UNKNOWN", "sim_imsi2", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:03.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774358, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:03.932] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:11:02Z", "value" => "21"} [2026-08-21 05:11:03.989] [DEBUG] QUERY OK db=56.9ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:02Z", "21", "data_usage_mb", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:03.990] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774359, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:03.990] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:11:02Z", "value" => "0"} [2026-08-21 05:11:04.047] [DEBUG] QUERY OK db=56.4ms idle=61.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:02Z", "0", "mobile_data_mb", 76524, ~N[2026-08-21 05:11:03], ~N[2026-08-21 05:11:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:04.049] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774360, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:03], updated_at: ~N[2026-08-21 05:11:03]}} [2026-08-21 05:11:04.050] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:11:04.115] [DEBUG] QUERY OK db=61.0ms queue=0.6ms idle=5.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76524, ~N[2026-08-21 05:11:04], ~N[2026-08-21 05:11:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:04.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774361, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:11:02Z", message: nil, status_log_id: 76524, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:04], updated_at: ~N[2026-08-21 05:11:04]}} [2026-08-21 05:11:05.746] [INFO ] GET /dashboard [2026-08-21 05:11:05.747] [DEBUG] Processing with PlatformWeb.DashboardLive.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 05:11:05.752] [DEBUG] QUERY OK source="users_tokens" db=4.3ms idle=1577.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)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:11:05.747700Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 05:11:05.753] [DEBUG] QUERY OK source="users_tokens" db=0.5ms queue=0.3ms idle=588.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:11:05.752546Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-08-21 05:11:05.753] [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-08-20 18:44:09Z], ...>, flash: %{}, live_action: :index} [2026-08-21 05:11:05.759] [DEBUG] QUERY OK source="tms_terminals" db=5.3ms idle=686.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-08-21 05:11:05.760] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=88.1ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-08-21 05:11:05.794] [DEBUG] QUERY OK source="tms_terminals" db=33.4ms idle=1.2ms 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-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-08-21 05:11:05.796] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms queue=1.0ms idle=33.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-08-21 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-08-21 05:11:05.797] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=2.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:140 [2026-08-21 05:11:05.800] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms 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-08-21 05:11:05.935] [DEBUG] QUERY OK source="tms_terminals" db=134.6ms idle=3.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`area`, t0.`model`, t0.`imei`, t0.`remark`, t0.`vendor`, t0.`group`, t0.`inserted_at`, t0.`updated_at`, s1.`last_seen_at`, (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'battery' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'cpu' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'memory' ORDER BY inserted_at DESC LIMIT 1) FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen_at`, max(st0.`id`) AS `last_status_log_id` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` LEFT OUTER JOIN `tms_terminal_status_logs` AS t2 ON t2.`id` = s1.`last_status_log_id` [] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-08-21 05:11:05.947] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms idle=145.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:05.953] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=5.8ms idle=11.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:05.969] [DEBUG] QUERY OK source="ota_configurations" db=5.9ms idle=13.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:05.972] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.0ms queue=0.7ms idle=16.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:05.980] [DEBUG] QUERY OK source="ota_configurations" db=7.4ms idle=6.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:05.983] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=10.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:05.988] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms queue=3.5ms idle=3.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.005] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=16.5ms idle=4.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.008] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms queue=0.4ms idle=18.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.013] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.0ms queue=1.3ms idle=6.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.031] [DEBUG] QUERY OK source="ota_configurations" db=14.6ms queue=0.1ms idle=8.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.032] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms queue=0.1ms idle=18.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.037] [DEBUG] QUERY OK source="ota_configurations" db=4.5ms idle=10.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.046] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.5ms idle=5.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.047] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms queue=0.1ms idle=9.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.050] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.5ms idle=7.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.057] [DEBUG] QUERY OK source="ota_configurations" db=2.3ms queue=0.2ms idle=7.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.065] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=5.3ms queue=1.7ms idle=7.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.067] [DEBUG] QUERY OK source="ota_configurations" db=2.2ms idle=7.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.072] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.8ms queue=0.1ms idle=5.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.081] [DEBUG] QUERY OK source="ota_configurations" db=8.7ms idle=0.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.088] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=6.7ms idle=0.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.094] [DEBUG] QUERY OK source="ota_configurations" db=1.9ms queue=0.1ms idle=3.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.096] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.3ms idle=0.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.098] [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-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.105] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=7.0ms idle=2.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.113] [DEBUG] QUERY OK source="ota_configurations" db=7.3ms idle=7.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.120] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=6.2ms idle=8.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.123] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=9.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.127] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.6ms queue=0.3ms idle=5.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.131] [DEBUG] QUERY OK source="ota_configurations" db=3.3ms idle=4.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.134] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.3ms idle=4.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.158] [DEBUG] QUERY OK source="ota_configurations" db=14.4ms idle=12.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.171] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.7ms queue=0.3ms idle=33.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.172] [DEBUG] QUERY OK source="ota_configurations" db=1.0ms idle=13.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.181] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=3.9ms idle=1.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.187] [DEBUG] QUERY OK source="ota_configurations" db=5.5ms idle=9.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.190] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms queue=1.4ms idle=11.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.195] [DEBUG] QUERY OK source="ota_configurations" db=3.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-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.197] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.0ms idle=5.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.199] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms queue=0.6ms idle=2.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.203] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=3.2ms idle=2.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.207] [DEBUG] QUERY OK source="ota_configurations" db=4.2ms idle=3.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.210] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=7.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.214] [DEBUG] QUERY OK source="ota_configurations" db=1.8ms queue=1.6ms idle=3.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.218] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.5ms idle=4.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.228] [DEBUG] QUERY OK source="ota_configurations" db=5.0ms queue=3.9ms idle=5.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:06.230] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.6ms idle=11.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:06.373] [DEBUG] QUERY OK source="tms_terminals" db=142.1ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:06:06.230779Z], ~U[2026-08-21 04:41:06.230779Z], ~U[2026-08-21 04:11:06.230779Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:11:06.419] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=45.4ms idle=142.9ms 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-08-21 04:11:06]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-08-21 05:11:06.452] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=31.7ms queue=0.2ms idle=47.6ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 05:10:06]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-08-21 05:11:06.477] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.6ms idle=33.9ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:11:06]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-08-21 05:11:06.512] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=34.0ms idle=25.7ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:11:06]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-08-21 05:11:06.550] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=36.5ms queue=0.4ms idle=35.7ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:11:06]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-08-21 05:11:06.553] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=38.2ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-08-21 05:11:06.677] [DEBUG] QUERY OK source="tms_terminals" db=123.5ms idle=2.9ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:06:06.553250Z], ~U[2026-08-21 04:41:06.553250Z], ~U[2026-08-21 04:11:06.553250Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:11:06.788] [DEBUG] QUERY OK source="tms_terminals" db=110.4ms idle=124.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-08-21 05:06:06.677381Z], ~U[2026-08-21 04:41:06.677381Z], ~U[2026-08-21 04:11:06.677381Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:11:06.905] [DEBUG] QUERY OK source="tms_terminals" db=116.9ms idle=111.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-08-21 05:06:06.788410Z], ~U[2026-08-21 04:41:06.788410Z], ~U[2026-08-21 04:11:06.788410Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:11:07.010] [DEBUG] QUERY OK source="tms_terminals" db=101.9ms queue=0.3ms idle=119.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-08-21 05:06:06.906005Z], ~U[2026-08-21 04:41:06.906005Z], ~U[2026-08-21 04:11:06.906005Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:11:07.018] [INFO ] Sent 200 in 1272ms [2026-08-21 05:11:08.346] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 36µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "KyYQaSRlVCkGaCZtPyYTbkAUAngAGRQEMyO0r-bCi_qXMDuZ2f7HVOWI", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 05:11:08.927] [DEBUG] MOUNT PlatformWeb.DashboardLive Parameters: %{} Session: %{"_csrf_token" => "f__YVH6jo7W5rbf4rr50VVCM", "live_socket_id" => "users_sessions:jyq_OqdMqka0uVK8iPzNvmYuNByLIEJVbWW0HHCRW-o=", "user_token" => <<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>} [2026-08-21 05:11:08.932] [DEBUG] QUERY OK source="users_tokens" db=2.5ms idle=1761.3ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:11:08.929701Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 05:11:08.935] [DEBUG] QUERY OK source="users_tokens" db=2.3ms idle=1764.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)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:11:08.932723Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-08-21 05:11:08.935] [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-08-20 18:44:09Z], ...>, flash: %{}, live_action: :index} [2026-08-21 05:11:08.937] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=826.6ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-08-21 05:11:08.939] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=265.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-08-21 05:11:08.978] [DEBUG] QUERY OK source="tms_terminals" db=38.4ms queue=0.1ms idle=2.4ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 INNER JOIN `tms_terminal_status_logs` AS t1 ON t1.`terminal_id` = t0.`id` WHERE (t1.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-08-21 05:11:08.980] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.4ms idle=39.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-08-21 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-08-21 05:11:08.981] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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-08-21 05:11:08.984] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=1.0ms 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-08-21 05:11:09.123] [DEBUG] QUERY OK source="tms_terminals" db=139.2ms queue=0.1ms idle=2.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`area`, t0.`model`, t0.`imei`, t0.`remark`, t0.`vendor`, t0.`group`, t0.`inserted_at`, t0.`updated_at`, s1.`last_seen_at`, (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'battery' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'cpu' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'memory' ORDER BY inserted_at DESC LIMIT 1) FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen_at`, max(st0.`id`) AS `last_status_log_id` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` LEFT OUTER JOIN `tms_terminal_status_logs` AS t2 ON t2.`id` = s1.`last_status_log_id` [] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-08-21 05:11:09.127] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=2.3ms 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-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.129] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.9ms idle=3.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.131] [DEBUG] QUERY OK source="ota_configurations" db=1.1ms idle=2.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.134] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=3.4ms queue=0.1ms idle=1.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.138] [DEBUG] QUERY OK source="ota_configurations" db=3.1ms idle=4.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.146] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.9ms idle=9.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.150] [DEBUG] QUERY OK source="ota_configurations" db=3.3ms idle=8.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.152] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.7ms idle=4.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.155] [DEBUG] QUERY OK source="ota_configurations" db=2.8ms idle=2.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.158] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.5ms idle=3.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.162] [DEBUG] QUERY OK source="ota_configurations" db=3.4ms idle=3.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.165] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.4ms queue=0.5ms idle=4.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.170] [DEBUG] QUERY OK source="ota_configurations" db=4.9ms idle=3.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.171] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=5.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.174] [DEBUG] QUERY OK source="ota_configurations" db=2.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-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.176] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.2ms idle=3.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.183] [DEBUG] QUERY OK source="ota_configurations" db=5.5ms idle=2.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.194] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=11.2ms idle=6.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.197] [DEBUG] QUERY OK source="ota_configurations" db=2.6ms idle=12.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.201] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=3.1ms idle=3.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.210] [DEBUG] QUERY OK source="ota_configurations" db=6.3ms queue=0.1ms idle=6.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.228] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=8.4ms queue=0.1ms idle=18.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.232] [DEBUG] QUERY OK source="ota_configurations" db=3.8ms idle=18.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.239] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=6.1ms idle=4.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.244] [DEBUG] QUERY OK source="ota_configurations" db=4.7ms idle=6.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.252] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=7.1ms idle=5.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.253] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=7.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.254] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.3ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.259] [DEBUG] QUERY OK source="ota_configurations" db=4.7ms 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-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.261] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.6ms idle=5.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.262] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=2.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.267] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=4.6ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.270] [DEBUG] QUERY OK source="ota_configurations" db=2.4ms idle=5.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.272] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.6ms idle=3.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.275] [DEBUG] QUERY OK source="ota_configurations" db=2.2ms idle=2.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.279] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=3.7ms queue=0.1ms idle=2.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.282] [DEBUG] QUERY OK source="ota_configurations" db=2.3ms idle=4.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.288] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=6.2ms idle=3.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.292] [DEBUG] QUERY OK source="ota_configurations" db=3.3ms idle=6.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.296] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=3.7ms idle=4.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.302] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms queue=4.8ms idle=4.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.303] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=6.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.305] [DEBUG] QUERY OK source="ota_configurations" db=1.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-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.309] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.8ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.315] [DEBUG] QUERY OK source="ota_configurations" db=5.3ms idle=4.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.324] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=5.4ms queue=0.1ms idle=9.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.328] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=12.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 05:11:09.329] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.9ms idle=4.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 05:11:09.473] [DEBUG] QUERY OK source="tms_terminals" db=143.8ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:06:09.329664Z], ~U[2026-08-21 04:41:09.329664Z], ~U[2026-08-21 04:11:09.329664Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:11:09.522] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=46.1ms idle=146.4ms SELECT DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i'), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) GROUP BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') ORDER BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') [~N[2026-08-21 04:11:09]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-08-21 05:11:09.550] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=27.8ms idle=49.2ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 05:10:09]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-08-21 05:11:09.591] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=38.5ms idle=30.2ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:11:09]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-08-21 05:11:09.623] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=32.4ms idle=40.4ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:11:09]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-08-21 05:11:09.670] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=44.7ms idle=34.7ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 04:11:09]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-08-21 05:11:09.672] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=47.4ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-08-21 05:11:09.800] [DEBUG] QUERY OK source="tms_terminals" db=126.7ms queue=0.6ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:06:09.672564Z], ~U[2026-08-21 04:41:09.672564Z], ~U[2026-08-21 04:11:09.672564Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:11:09.964] [DEBUG] QUERY OK source="tms_terminals" db=163.8ms idle=128.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-08-21 05:06:09.800416Z], ~U[2026-08-21 04:41:09.800416Z], ~U[2026-08-21 04:11:09.800416Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:11:10.063] [DEBUG] QUERY OK source="tms_terminals" db=98.1ms idle=164.9ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:06:09.964797Z], ~U[2026-08-21 04:41:09.964797Z], ~U[2026-08-21 04:11:09.964797Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:11:10.217] [DEBUG] QUERY OK source="tms_terminals" db=153.7ms idle=99.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-08-21 05:06:10.063534Z], ~U[2026-08-21 04:41:10.063534Z], ~U[2026-08-21 04:11:10.063534Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 05:11:10.217] [DEBUG] Replied in 1291ms [2026-08-21 05:11:15.180] [WARN ] navigate event to "http://localhost:5329/admin/settlements/mis" failed because you are redirecting across live_sessions. A full page reload will be performed instead [2026-08-21 05:11:15.811] [INFO ] GET /admin/settlements/mis [2026-08-21 05:11:15.811] [DEBUG] Processing with PlatformWeb.SettlementLive.MisApproval.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 05:11:15.813] [DEBUG] QUERY OK source="users_tokens" db=1.0ms idle=1639.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)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:11:15.811980Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 05:11:15.840] [DEBUG] QUERY OK source="settlement_mis" db=14.3ms queue=2.0ms idle=680.0ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-08-21 05:11:15.852] [INFO ] Sent 200 in 41ms [2026-08-21 05:11:16.666] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 34µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "CRQJCiYnZgYhcy1ZPRYObgRFfUIGDzIhoKVSpoPlNDzlOthZv7HrPYql", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 05:11:17.371] [DEBUG] MOUNT PlatformWeb.SettlementLive.MisApproval Parameters: %{} Session: %{"_csrf_token" => "f__YVH6jo7W5rbf4rr50VVCM", "live_socket_id" => "users_sessions:jyq_OqdMqka0uVK8iPzNvmYuNByLIEJVbWW0HHCRW-o=", "user_token" => <<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>} [2026-08-21 05:11:17.373] [DEBUG] QUERY OK source="users_tokens" db=1.2ms idle=1198.3ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:11:17.371690Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 05:11:17.380] [DEBUG] QUERY OK source="settlement_mis" db=6.2ms queue=0.1ms idle=1220.5ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-08-21 05:11:17.381] [DEBUG] Replied in 9ms [2026-08-21 05:11:32.350] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "f__YVH6jo7W5rbf4rr50VVCM", "live_socket_id" => "users_sessions:jyq_OqdMqka0uVK8iPzNvmYuNByLIEJVbWW0HHCRW-o=", "user_token" => <<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>} [2026-08-21 05:11:32.353] [DEBUG] QUERY OK source="users_tokens" db=0.5ms queue=1.4ms idle=1167.2ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:11:32.350968Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 05:11:32.375] [DEBUG] QUERY OK source="core_transactions" db=2.3ms queue=1.0ms idle=697.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:11:32.387] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=2.0ms idle=158.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:11:32.391] [DEBUG] QUERY OK source="core_transactions" db=1.2ms queue=0.6ms idle=13.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:11:32.393] [DEBUG] QUERY OK source="tid_masters" db=1.2ms queue=0.6ms idle=4.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:11:32.394] [DEBUG] Replied in 43ms [2026-08-21 05:11:32.961] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:11:32.962] [INFO ] Incoming JSON payload: {"oid":"0933fba5-375b-4192-aaa3-0eb48d1870ed","sn":"98251226730001","uploadTime":"2026-08-21T05:11:32Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:11:32Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:11:32Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:11:32Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:11:32Z"},{"itemkey":"ram_free_mb","value":"918","timestamp":"2026-08-21T05:11:32Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:11:32Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:11:32Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:11:32Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:11:32Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:11:32Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:11:32Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:11:32Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:11:32Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:11:32Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:11:32.963] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0933fba5-375b-4192-aaa3-0eb48d1870ed", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:11:32Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:11:32Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:11:32Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:11:32Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:11:32Z", "value" => "918"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:11:32Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:11:32Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:11:32Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:11:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:11:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:11:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:11:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:11:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:11:32Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:11:32Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:11:32Z", "vendor" => "morefun"} [2026-08-21 05:11:32.963] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:11:32.963] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:11:32.963] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:11:32.969] [DEBUG] QUERY OK source="parameter_templates" db=5.4ms idle=572.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-08-21 05:11:32.970] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=575.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-08-21 05:11:32.970] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:11:32.973] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=2.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:11:32.975] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:11:33.010] [DEBUG] QUERY OK source="tms_terminals" db=35.1ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:11:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:11:33.010] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:11:33.013] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=37.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:11:33.063] [DEBUG] QUERY OK source="tms_terminals" db=49.6ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:11:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:11:33.097] [DEBUG] QUERY OK db=33.8ms idle=50.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0933fba5-375b-4192-aaa3-0eb48d1870ed", "2026-08-21T05:11:32Z", ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:11:33.098] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76525, oid: "0933fba5-375b-4192-aaa3-0eb48d1870ed", upload_time: "2026-08-21T05:11:32Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]} [2026-08-21 05:11:33.099] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:11:32Z", "value" => "morefun"} [2026-08-21 05:11:33.123] [DEBUG] QUERY OK db=23.4ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:32Z", "morefun", "vendor", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774362, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.126] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:11:32Z", "value" => "kiosk_launcher"} [2026-08-21 05:11:33.177] [DEBUG] QUERY OK db=51.0ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:32Z", "kiosk_launcher", "model", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.178] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774363, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.178] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:11:32Z", "value" => "1.0"} [2026-08-21 05:11:33.235] [DEBUG] QUERY OK db=54.1ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:32Z", "1.0", "app_version", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.235] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774364, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.235] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:11:32Z", "value" => "13"} [2026-08-21 05:11:33.309] [DEBUG] QUERY OK db=73.7ms idle=5.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:32Z", "13", "android_version", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.310] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774365, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.310] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:11:32Z", "value" => "918"} [2026-08-21 05:11:33.355] [DEBUG] QUERY OK db=44.2ms queue=0.2ms idle=75.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:32Z", "918", "ram_free_mb", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774366, itemkey: "ram_free_mb", value: "918", timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.356] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:11:32Z", "value" => "WIFI"} [2026-08-21 05:11:33.399] [DEBUG] QUERY OK db=42.3ms queue=0.9ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:32Z", "WIFI", "network_type", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.400] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774367, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.400] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:11:32Z", "value" => "true"} [2026-08-21 05:11:33.463] [DEBUG] QUERY OK db=62.8ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:32Z", "true", "kiosk_active", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.465] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774368, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.467] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:11:32Z", "value" => ""} [2026-08-21 05:11:33.491] [DEBUG] QUERY OK db=23.4ms idle=68.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:11:32Z", "sim_operator", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774369, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.492] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:11:32Z", "value" => "UNKNOWN"} [2026-08-21 05:11:33.543] [DEBUG] QUERY OK db=50.3ms queue=0.1ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:32Z", "UNKNOWN", "sim_number", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774370, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.544] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:11:32Z", "value" => "UNKNOWN"} [2026-08-21 05:11:33.606] [DEBUG] QUERY OK db=61.7ms idle=52.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:32Z", "UNKNOWN", "sim_iccid", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774371, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.606] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:11:32Z", "value" => "UNKNOWN"} [2026-08-21 05:11:33.680] [DEBUG] QUERY OK db=70.2ms queue=3.2ms idle=63.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:32Z", "UNKNOWN", "sim_imsi", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774372, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.681] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:11:32Z", "value" => "UNKNOWN"} [2026-08-21 05:11:33.728] [DEBUG] QUERY OK db=47.3ms idle=75.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:32Z", "UNKNOWN", "sim_iccid2", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774373, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.733] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:11:32Z", "value" => "UNKNOWN"} [2026-08-21 05:11:33.779] [DEBUG] QUERY OK db=43.2ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:32Z", "UNKNOWN", "sim_imsi2", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774374, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.780] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:11:32Z", "value" => "21"} [2026-08-21 05:11:33.829] [DEBUG] QUERY OK db=47.7ms queue=0.1ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:32Z", "21", "data_usage_mb", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774375, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.830] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:11:32Z", "value" => "0"} [2026-08-21 05:11:33.855] [DEBUG] QUERY OK db=24.1ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11:32Z", "0", "mobile_data_mb", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774376, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:11:33.857] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:11:33.890] [DEBUG] QUERY OK db=30.8ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76525, ~N[2026-08-21 05:11:33], ~N[2026-08-21 05:11:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:11:33.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774377, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:11:32Z", message: nil, status_log_id: 76525, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:11:33], updated_at: ~N[2026-08-21 05:11:33]}} [2026-08-21 05:12:03.332] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:12:03.332] [INFO ] Incoming JSON payload: {"oid":"bbc41524-3232-432e-b98b-5bf9d5a2c1f6","sn":"98251226730001","uploadTime":"2026-08-21T05:12:02Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:12:02Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:12:02Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:12:02Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:12:02Z"},{"itemkey":"ram_free_mb","value":"929","timestamp":"2026-08-21T05:12:02Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:12:02Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:12:02Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:12:02Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:12:02Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:12:02Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:12:02Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:12:02Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:12:02Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:12:02Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:12:03.332] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bbc41524-3232-432e-b98b-5bf9d5a2c1f6", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:12:02Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:12:02Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:12:02Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:12:02Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:12:02Z", "value" => "929"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:12:02Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:12:02Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:12:02Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:12:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:12:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:12:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:12:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:12:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:12:02Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:12:02Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:12:02Z", "vendor" => "morefun"} [2026-08-21 05:12:03.333] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:12:03.333] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:12:03.333] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:12:03.336] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=2.9ms idle=1656.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-08-21 05:12:03.342] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=994.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-08-21 05:12:03.343] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:12:03.349] [DEBUG] QUERY OK source="tms_terminals" db=5.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-08-21 05:12:03.351] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:12:03.393] [DEBUG] QUERY OK source="tms_terminals" db=41.6ms idle=11.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:12:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:12:03.393] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:12:03.402] [DEBUG] QUERY OK source="tms_terminals" db=7.8ms idle=29.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:12:03.463] [DEBUG] QUERY OK source="tms_terminals" db=53.2ms idle=16.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:12:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:12:03.487] [DEBUG] QUERY OK db=23.4ms queue=0.1ms idle=61.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "bbc41524-3232-432e-b98b-5bf9d5a2c1f6", "2026-08-21T05:12:02Z", ~N[2026-08-21 05:12:03], ~N[2026-08-21 05:12:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:12:03.487] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76526, oid: "bbc41524-3232-432e-b98b-5bf9d5a2c1f6", upload_time: "2026-08-21T05:12:02Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:03], updated_at: ~N[2026-08-21 05:12:03]} [2026-08-21 05:12:03.487] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:12:02Z", "value" => "morefun"} [2026-08-21 05:12:03.533] [DEBUG] QUERY OK db=45.5ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:02Z", "morefun", "vendor", 76526, ~N[2026-08-21 05:12:03], ~N[2026-08-21 05:12:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:03.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774378, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:03], updated_at: ~N[2026-08-21 05:12:03]}} [2026-08-21 05:12:03.534] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:12:02Z", "value" => "kiosk_launcher"} [2026-08-21 05:12:03.582] [DEBUG] QUERY OK db=47.9ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:02Z", "kiosk_launcher", "model", 76526, ~N[2026-08-21 05:12:03], ~N[2026-08-21 05:12:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:03.586] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774379, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:03], updated_at: ~N[2026-08-21 05:12:03]}} [2026-08-21 05:12:03.586] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:12:02Z", "value" => "1.0"} [2026-08-21 05:12:03.641] [DEBUG] QUERY OK db=54.3ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:02Z", "1.0", "app_version", 76526, ~N[2026-08-21 05:12:03], ~N[2026-08-21 05:12:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:03.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774380, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:03], updated_at: ~N[2026-08-21 05:12:03]}} [2026-08-21 05:12:03.641] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:12:02Z", "value" => "13"} [2026-08-21 05:12:03.699] [DEBUG] QUERY OK db=56.8ms idle=59.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:02Z", "13", "android_version", 76526, ~N[2026-08-21 05:12:03], ~N[2026-08-21 05:12:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:03.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774381, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:03], updated_at: ~N[2026-08-21 05:12:03]}} [2026-08-21 05:12:03.699] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:12:02Z", "value" => "929"} [2026-08-21 05:12:03.734] [DEBUG] QUERY OK db=34.6ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:02Z", "929", "ram_free_mb", 76526, ~N[2026-08-21 05:12:03], ~N[2026-08-21 05:12:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:03.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774382, itemkey: "ram_free_mb", value: "929", timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:03], updated_at: ~N[2026-08-21 05:12:03]}} [2026-08-21 05:12:03.734] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:12:02Z", "value" => "WIFI"} [2026-08-21 05:12:03.780] [DEBUG] QUERY OK db=44.7ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:02Z", "WIFI", "network_type", 76526, ~N[2026-08-21 05:12:03], ~N[2026-08-21 05:12:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:03.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774383, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:03], updated_at: ~N[2026-08-21 05:12:03]}} [2026-08-21 05:12:03.780] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:12:02Z", "value" => "true"} [2026-08-21 05:12:03.828] [DEBUG] QUERY OK db=41.9ms queue=0.1ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:02Z", "true", "kiosk_active", 76526, ~N[2026-08-21 05:12:03], ~N[2026-08-21 05:12:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:03.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774384, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:03], updated_at: ~N[2026-08-21 05:12:03]}} [2026-08-21 05:12:03.829] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:12:02Z", "value" => ""} [2026-08-21 05:12:03.885] [DEBUG] QUERY OK db=56.1ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:12:02Z", "sim_operator", 76526, ~N[2026-08-21 05:12:03], ~N[2026-08-21 05:12:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:03.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774385, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:03], updated_at: ~N[2026-08-21 05:12:03]}} [2026-08-21 05:12:03.886] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:12:02Z", "value" => "UNKNOWN"} [2026-08-21 05:12:03.912] [DEBUG] QUERY OK db=24.6ms queue=0.8ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:02Z", "UNKNOWN", "sim_number", 76526, ~N[2026-08-21 05:12:03], ~N[2026-08-21 05:12:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:03.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774386, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:03], updated_at: ~N[2026-08-21 05:12:03]}} [2026-08-21 05:12:03.912] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:12:02Z", "value" => "UNKNOWN"} [2026-08-21 05:12:03.955] [DEBUG] QUERY OK db=42.6ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:02Z", "UNKNOWN", "sim_iccid", 76526, ~N[2026-08-21 05:12:03], ~N[2026-08-21 05:12:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:03.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774387, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:03], updated_at: ~N[2026-08-21 05:12:03]}} [2026-08-21 05:12:03.956] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:12:02Z", "value" => "UNKNOWN"} [2026-08-21 05:12:03.985] [DEBUG] QUERY OK db=28.8ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:02Z", "UNKNOWN", "sim_imsi", 76526, ~N[2026-08-21 05:12:03], ~N[2026-08-21 05:12:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:03.986] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774388, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:03], updated_at: ~N[2026-08-21 05:12:03]}} [2026-08-21 05:12:03.986] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:12:02Z", "value" => "UNKNOWN"} [2026-08-21 05:12:04.029] [DEBUG] QUERY OK db=38.2ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:02Z", "UNKNOWN", "sim_iccid2", 76526, ~N[2026-08-21 05:12:03], ~N[2026-08-21 05:12:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:04.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774389, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:03], updated_at: ~N[2026-08-21 05:12:03]}} [2026-08-21 05:12:04.030] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:12:02Z", "value" => "UNKNOWN"} [2026-08-21 05:12:04.077] [DEBUG] QUERY OK db=36.2ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:02Z", "UNKNOWN", "sim_imsi2", 76526, ~N[2026-08-21 05:12:04], ~N[2026-08-21 05:12:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:04.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774390, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:04], updated_at: ~N[2026-08-21 05:12:04]}} [2026-08-21 05:12:04.081] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:12:02Z", "value" => "21"} [2026-08-21 05:12:04.119] [DEBUG] QUERY OK db=31.1ms queue=0.1ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:02Z", "21", "data_usage_mb", 76526, ~N[2026-08-21 05:12:04], ~N[2026-08-21 05:12:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:04.124] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774391, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:04], updated_at: ~N[2026-08-21 05:12:04]}} [2026-08-21 05:12:04.125] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:12:02Z", "value" => "0"} [2026-08-21 05:12:04.177] [DEBUG] QUERY OK db=52.3ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:02Z", "0", "mobile_data_mb", 76526, ~N[2026-08-21 05:12:04], ~N[2026-08-21 05:12:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:04.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774392, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:04], updated_at: ~N[2026-08-21 05:12:04]}} [2026-08-21 05:12:04.180] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:12:04.209] [DEBUG] QUERY OK db=23.8ms idle=61.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76526, ~N[2026-08-21 05:12:04], ~N[2026-08-21 05:12:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:04.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774393, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:12:02Z", message: nil, status_log_id: 76526, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:04], updated_at: ~N[2026-08-21 05:12:04]}} [2026-08-21 05:12:04.438] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["VISA"]} [2026-08-21 05:12:04.445] [DEBUG] QUERY OK source="core_transactions" db=3.2ms queue=1.9ms idle=234.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "VISA"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:12:04.470] [DEBUG] QUERY OK source="merchant_adjustments" db=11.3ms idle=70.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:12:04.497] [DEBUG] QUERY OK source="core_transactions" db=21.3ms idle=31.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:12:04.510] [DEBUG] QUERY OK source="tid_masters" db=2.2ms queue=4.1ms idle=33.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:12:04.510] [DEBUG] Replied in 72ms [2026-08-21 05:12:08.260] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 05:12:08.263] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=855.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:12:08.265] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms queue=0.2ms idle=582.7ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:12:08.267] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=0.1ms idle=3.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:12:08.268] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=0.4ms idle=2.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:12:08.269] [DEBUG] Replied in 8ms [2026-08-21 05:12:10.455] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["VISA"]} [2026-08-21 05:12:10.465] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=8.2ms idle=775.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "VISA"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:12:10.466] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms queue=0.4ms idle=37.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:12:10.508] [DEBUG] QUERY OK source="core_transactions" db=41.5ms idle=1.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:12:10.512] [DEBUG] QUERY OK source="tid_masters" db=2.6ms queue=0.8ms idle=42.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:12:10.512] [DEBUG] Replied in 57ms [2026-08-21 05:12:12.777] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 05:12:12.779] [DEBUG] QUERY OK source="core_transactions" db=1.0ms idle=1051.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:12:12.781] [DEBUG] QUERY OK source="merchant_adjustments" db=1.0ms queue=0.2ms idle=344.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:12:12.782] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=1.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:12:12.783] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.8ms idle=1.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:12:12.783] [DEBUG] Replied in 6ms [2026-08-21 05:12:16.763] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["AMEX"]} [2026-08-21 05:12:16.766] [DEBUG] QUERY OK source="core_transactions" db=1.6ms queue=0.7ms idle=312.3ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "AMEX"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:12:16.767] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms idle=86.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:12:16.807] [DEBUG] QUERY OK source="core_transactions" db=39.1ms idle=2.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:12:16.809] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=1.0ms idle=40.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:12:16.809] [DEBUG] Replied in 46ms [2026-08-21 05:12:26.151] [INFO ] Running offline device check... [2026-08-21 05:12:26.151] [INFO ] Starting offline device check... [2026-08-21 05:12:26.154] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=1.7ms idle=640.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 05:12:26.168] [INFO ] Starting scheduled rule validation [2026-08-21 05:12:26.168] [DEBUG] Validating missing assignments [2026-08-21 05:12:26.172] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.1ms queue=3.5ms idle=617.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:12:26.186] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.0ms 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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.190] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.191] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms queue=3.5ms idle=0.7ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-08-21 05:12:26.195] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=0.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-08-21 05:12:26.199] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms queue=4.0ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.199] [DEBUG] Re-applied 0 rules during validation [2026-08-21 05:12:26.199] [DEBUG] Validating invalid assignments [2026-08-21 05:12:26.199] [DEBUG] Validating rule consistency [2026-08-21 05:12:26.199] [DEBUG] Updating group terminal counts [2026-08-21 05:12:26.200] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.203] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.205] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=1.1ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.207] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.209] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.211] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.220] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.225] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.242] [DEBUG] QUERY OK source="terminal_groups" db=2.9ms queue=1.5ms idle=12.3ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-08-21 05:12:26.250] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.6ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.248] [DEBUG] QUERY OK source="terminal_groups" db=2.0ms queue=3.2ms idle=0.3ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:249 [2026-08-21 05:12:26.260] [DEBUG] QUERY OK source="terminal_groups" db=3.0ms queue=4.8ms idle=4.2ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-08-21 05:12:26.262] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.4ms queue=0.9ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.262] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms queue=1.4ms idle=0.3ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:258 [2026-08-21 05:12:26.266] [DEBUG] QUERY OK source="terminal_group_rules" db=2.0ms queue=0.5ms idle=1.2ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:259 [2026-08-21 05:12:26.267] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms queue=1.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.269] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.270] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.285] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms queue=1.5ms idle=12.5ms 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-08-21 05:12:26.288] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.0ms queue=1.8ms idle=0.7ms 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-08-21 05:12:26.290] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=1.2ms idle=0.3ms 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-08-21 05:12:26.290] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-08-21 05:12:26.290] [INFO ] Rule validation completed - applied 0 fixes [2026-08-21 05:12:26.298] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=27.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.301] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=8.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.305] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.308] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.310] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.311] [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-08-21 05:12:26.363] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=52.0ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.365] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=52.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:12:26.367] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.381] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.382] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=14.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.388] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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-08-21 05:12:26.393] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.395] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.403] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.3ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.407] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms queue=0.6ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.409] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.410] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.413] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.415] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.416] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.416] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.417] [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-08-21 05:12:26.421] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.423] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.424] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.426] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.430] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.431] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.434] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.437] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=5.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.438] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.439] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.439] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.440] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:12:26.440] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-08-21 05:12:26.441] [INFO ] Offline device check completed successfully [2026-08-21 05:12:33.426] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:12:33.426] [INFO ] Incoming JSON payload: {"oid":"1a40acb9-7d7f-4132-a3e9-4f88338676c7","sn":"98251226730001","uploadTime":"2026-08-21T05:12:33Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"ram_free_mb","value":"927","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:12:33Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:12:33.427] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1a40acb9-7d7f-4132-a3e9-4f88338676c7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:12:33Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:12:33Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:12:33Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:12:33Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:12:33Z", "value" => "927"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:12:33Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:12:33Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:12:33Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:12:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:12:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:12:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:12:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:12:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:12:33Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:12:33Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:12:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:12:33Z", "vendor" => "morefun"} [2026-08-21 05:12:33.428] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:12:33.428] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:12:33.428] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:12:33.429] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1747.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-08-21 05:12:33.429] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=876.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-08-21 05:12:33.430] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:12:33.430] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.2ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:12:33.431] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:12:33.487] [DEBUG] QUERY OK source="tms_terminals" db=55.9ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:12:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:12:33.487] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:12:33.489] [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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:12:33.536] [DEBUG] QUERY OK source="tms_terminals" db=47.0ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:12:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:12:33.562] [DEBUG] QUERY OK db=25.8ms idle=47.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "1a40acb9-7d7f-4132-a3e9-4f88338676c7", "2026-08-21T05:12:33Z", ~N[2026-08-21 05:12:33], ~N[2026-08-21 05:12:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:12:33.562] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76527, oid: "1a40acb9-7d7f-4132-a3e9-4f88338676c7", upload_time: "2026-08-21T05:12:33Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:33], updated_at: ~N[2026-08-21 05:12:33]} [2026-08-21 05:12:33.563] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:12:33Z", "value" => "morefun"} [2026-08-21 05:12:33.601] [DEBUG] QUERY OK db=38.4ms idle=8.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "morefun", "vendor", 76527, ~N[2026-08-21 05:12:33], ~N[2026-08-21 05:12:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:33.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774394, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:33], updated_at: ~N[2026-08-21 05:12:33]}} [2026-08-21 05:12:33.602] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:12:33Z", "value" => "kiosk_launcher"} [2026-08-21 05:12:33.646] [DEBUG] QUERY OK db=43.4ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "kiosk_launcher", "model", 76527, ~N[2026-08-21 05:12:33], ~N[2026-08-21 05:12:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:33.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774395, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:33], updated_at: ~N[2026-08-21 05:12:33]}} [2026-08-21 05:12:33.646] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:12:33Z", "value" => "1.0"} [2026-08-21 05:12:33.683] [DEBUG] QUERY OK db=36.0ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "1.0", "app_version", 76527, ~N[2026-08-21 05:12:33], ~N[2026-08-21 05:12:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:33.683] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774396, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:33], updated_at: ~N[2026-08-21 05:12:33]}} [2026-08-21 05:12:33.683] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:12:33Z", "value" => "13"} [2026-08-21 05:12:33.721] [DEBUG] QUERY OK db=37.9ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "13", "android_version", 76527, ~N[2026-08-21 05:12:33], ~N[2026-08-21 05:12:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:33.721] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774397, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:33], updated_at: ~N[2026-08-21 05:12:33]}} [2026-08-21 05:12:33.721] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:12:33Z", "value" => "927"} [2026-08-21 05:12:33.773] [DEBUG] QUERY OK db=51.2ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "927", "ram_free_mb", 76527, ~N[2026-08-21 05:12:33], ~N[2026-08-21 05:12:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:33.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774398, itemkey: "ram_free_mb", value: "927", timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:33], updated_at: ~N[2026-08-21 05:12:33]}} [2026-08-21 05:12:33.774] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:12:33Z", "value" => "WIFI"} [2026-08-21 05:12:33.812] [DEBUG] QUERY OK db=36.7ms queue=0.2ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "WIFI", "network_type", 76527, ~N[2026-08-21 05:12:33], ~N[2026-08-21 05:12:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:33.812] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774399, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:33], updated_at: ~N[2026-08-21 05:12:33]}} [2026-08-21 05:12:33.812] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:12:33Z", "value" => "true"} [2026-08-21 05:12:33.859] [DEBUG] QUERY OK db=46.6ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "true", "kiosk_active", 76527, ~N[2026-08-21 05:12:33], ~N[2026-08-21 05:12:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:33.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774400, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:33], updated_at: ~N[2026-08-21 05:12:33]}} [2026-08-21 05:12:33.859] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:12:33Z", "value" => ""} [2026-08-21 05:12:33.891] [DEBUG] QUERY OK db=30.7ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:12:33Z", "sim_operator", 76527, ~N[2026-08-21 05:12:33], ~N[2026-08-21 05:12:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:33.891] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774401, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:33], updated_at: ~N[2026-08-21 05:12:33]}} [2026-08-21 05:12:33.891] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:12:33Z", "value" => "UNKNOWN"} [2026-08-21 05:12:33.949] [DEBUG] QUERY OK db=57.1ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "UNKNOWN", "sim_number", 76527, ~N[2026-08-21 05:12:33], ~N[2026-08-21 05:12:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:33.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774402, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:33], updated_at: ~N[2026-08-21 05:12:33]}} [2026-08-21 05:12:33.949] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:12:33Z", "value" => "UNKNOWN"} [2026-08-21 05:12:33.990] [DEBUG] QUERY OK db=40.3ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "UNKNOWN", "sim_iccid", 76527, ~N[2026-08-21 05:12:33], ~N[2026-08-21 05:12:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:33.990] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774403, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:33], updated_at: ~N[2026-08-21 05:12:33]}} [2026-08-21 05:12:33.990] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:12:33Z", "value" => "UNKNOWN"} [2026-08-21 05:12:34.033] [DEBUG] QUERY OK db=42.6ms queue=0.1ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "UNKNOWN", "sim_imsi", 76527, ~N[2026-08-21 05:12:33], ~N[2026-08-21 05:12:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:34.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774404, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:33], updated_at: ~N[2026-08-21 05:12:33]}} [2026-08-21 05:12:34.034] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:12:33Z", "value" => "UNKNOWN"} [2026-08-21 05:12:34.086] [DEBUG] QUERY OK db=51.6ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "UNKNOWN", "sim_iccid2", 76527, ~N[2026-08-21 05:12:34], ~N[2026-08-21 05:12:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:34.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774405, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:34], updated_at: ~N[2026-08-21 05:12:34]}} [2026-08-21 05:12:34.087] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:12:33Z", "value" => "UNKNOWN"} [2026-08-21 05:12:34.134] [DEBUG] QUERY OK db=47.0ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "UNKNOWN", "sim_imsi2", 76527, ~N[2026-08-21 05:12:34], ~N[2026-08-21 05:12:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:34.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774406, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:34], updated_at: ~N[2026-08-21 05:12:34]}} [2026-08-21 05:12:34.135] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:12:33Z", "value" => "21"} [2026-08-21 05:12:34.161] [DEBUG] QUERY OK db=26.4ms idle=48.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "21", "data_usage_mb", 76527, ~N[2026-08-21 05:12:34], ~N[2026-08-21 05:12:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:34.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774407, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:34], updated_at: ~N[2026-08-21 05:12:34]}} [2026-08-21 05:12:34.162] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:12:33Z", "value" => "0"} [2026-08-21 05:12:34.200] [DEBUG] QUERY OK db=37.9ms queue=0.5ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "0", "mobile_data_mb", 76527, ~N[2026-08-21 05:12:34], ~N[2026-08-21 05:12:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:34.201] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774408, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:34], updated_at: ~N[2026-08-21 05:12:34]}} [2026-08-21 05:12:34.202] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:12:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:12:34.297] [DEBUG] QUERY OK db=94.3ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:12:33Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76527, ~N[2026-08-21 05:12:34], ~N[2026-08-21 05:12:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:12:34.298] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774409, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:12:33Z", message: nil, status_log_id: 76527, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:12:34], updated_at: ~N[2026-08-21 05:12:34]}} [2026-08-21 05:12:36.529] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 05:12:36.531] [DEBUG] QUERY OK source="core_transactions" db=1.1ms idle=968.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:12:36.531] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms idle=850.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:12:36.532] [DEBUG] QUERY OK source="core_transactions" db=0.4ms idle=1.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:12:36.534] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.6ms idle=1.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:12:36.534] [DEBUG] Replied in 4ms [2026-08-21 05:12:38.661] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["VISA"]} [2026-08-21 05:12:38.663] [DEBUG] QUERY OK source="core_transactions" db=0.6ms queue=0.4ms idle=981.4ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "VISA"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:12:38.663] [DEBUG] QUERY OK source="merchant_adjustments" db=0.3ms idle=95.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:12:38.705] [DEBUG] QUERY OK source="core_transactions" db=40.9ms idle=1.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:12:38.706] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=0.4ms idle=41.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:12:38.706] [DEBUG] Replied in 45ms [2026-08-21 05:12:50.904] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 05:12:50.907] [DEBUG] QUERY OK source="core_transactions" db=1.4ms idle=295.3ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:12:50.907] [DEBUG] QUERY OK source="merchant_adjustments" db=0.3ms idle=225.9ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:12:50.908] [DEBUG] QUERY OK source="core_transactions" db=0.5ms idle=1.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:12:50.910] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.5ms idle=1.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:12:50.910] [DEBUG] Replied in 6ms [2026-08-21 05:12:52.568] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD"]} [2026-08-21 05:12:52.572] [DEBUG] QUERY OK source="core_transactions" db=0.6ms queue=1.3ms idle=1659.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:12:52.573] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms queue=0.3ms idle=959.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:12:52.614] [DEBUG] QUERY OK source="core_transactions" db=40.2ms queue=0.2ms idle=1.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:12:52.619] [DEBUG] QUERY OK source="tid_masters" db=1.6ms queue=2.3ms idle=1.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:12:52.619] [DEBUG] Replied in 51ms [2026-08-21 05:13:02.553] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 05:13:02.558] [DEBUG] QUERY OK source="core_transactions" db=3.6ms idle=897.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:13:02.563] [DEBUG] QUERY OK source="merchant_adjustments" db=2.3ms idle=877.9ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:13:02.568] [DEBUG] QUERY OK source="core_transactions" db=3.5ms idle=5.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:13:02.572] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=3.6ms idle=5.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:13:02.575] [DEBUG] Replied in 21ms [2026-08-21 05:13:03.561] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:13:03.561] [INFO ] Incoming JSON payload: {"oid":"bc6ff251-2683-4184-bcb6-a177be6c429b","sn":"98251226730001","uploadTime":"2026-08-21T05:13:03Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:13:03Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:13:03Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:13:03Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:13:03Z"},{"itemkey":"ram_free_mb","value":"924","timestamp":"2026-08-21T05:13:03Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:13:03Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:13:03Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:13:03Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:13:03Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:13:03Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:13:03Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:13:03Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:13:03Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:13:03Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:13: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:13:03.578] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bc6ff251-2683-4184-bcb6-a177be6c429b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:13:03Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:13:03Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:13:03Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:13:03Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:13:03Z", "value" => "924"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:13:03Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:13:03Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:13:03Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:13:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:13:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:13:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:13:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:13:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:13:03Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:13:03Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:13: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:13:03Z", "vendor" => "morefun"} [2026-08-21 05:13:03.579] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:13:03.579] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:13:03.579] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:13:03.592] [DEBUG] QUERY OK source="parameter_templates" db=8.8ms idle=1011.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-08-21 05:13:03.596] [DEBUG] QUERY OK source="parameter_templates" db=3.5ms idle=920.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-08-21 05:13:03.596] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:13:03.601] [DEBUG] QUERY OK source="tms_terminals" db=4.6ms idle=4.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:13:03.601] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:13:03.642] [DEBUG] QUERY OK source="tms_terminals" db=40.5ms idle=5.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:13:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:13:03.642] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:13:03.647] [DEBUG] QUERY OK source="tms_terminals" db=3.8ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:13:03.695] [DEBUG] QUERY OK source="tms_terminals" db=39.3ms queue=3.7ms idle=8.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:13:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:13:03.755] [DEBUG] QUERY OK db=58.5ms idle=8.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "bc6ff251-2683-4184-bcb6-a177be6c429b", "2026-08-21T05:13:03Z", ~N[2026-08-21 05:13:03], ~N[2026-08-21 05:13:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:13:03.755] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76528, oid: "bc6ff251-2683-4184-bcb6-a177be6c429b", upload_time: "2026-08-21T05:13:03Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:03], updated_at: ~N[2026-08-21 05:13:03]} [2026-08-21 05:13:03.756] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:13:03Z", "value" => "morefun"} [2026-08-21 05:13:03.835] [DEBUG] QUERY OK db=74.7ms queue=0.2ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:03Z", "morefun", "vendor", 76528, ~N[2026-08-21 05:13:03], ~N[2026-08-21 05:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:03.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774410, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:03], updated_at: ~N[2026-08-21 05:13:03]}} [2026-08-21 05:13:03.835] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:13:03Z", "value" => "kiosk_launcher"} [2026-08-21 05:13:03.868] [DEBUG] QUERY OK db=31.3ms idle=80.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:03Z", "kiosk_launcher", "model", 76528, ~N[2026-08-21 05:13:03], ~N[2026-08-21 05:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:03.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774411, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:03], updated_at: ~N[2026-08-21 05:13:03]}} [2026-08-21 05:13:03.870] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:13:03Z", "value" => "1.0"} [2026-08-21 05:13:03.933] [DEBUG] QUERY OK db=63.0ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:03Z", "1.0", "app_version", 76528, ~N[2026-08-21 05:13:03], ~N[2026-08-21 05:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:03.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774412, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:03], updated_at: ~N[2026-08-21 05:13:03]}} [2026-08-21 05:13:03.934] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:13:03Z", "value" => "13"} [2026-08-21 05:13:03.995] [DEBUG] QUERY OK db=60.9ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:03Z", "13", "android_version", 76528, ~N[2026-08-21 05:13:03], ~N[2026-08-21 05:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:03.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774413, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:03], updated_at: ~N[2026-08-21 05:13:03]}} [2026-08-21 05:13:03.996] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:13:03Z", "value" => "924"} [2026-08-21 05:13:04.031] [DEBUG] QUERY OK db=34.0ms idle=63.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:03Z", "924", "ram_free_mb", 76528, ~N[2026-08-21 05:13:03], ~N[2026-08-21 05:13:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:04.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774414, itemkey: "ram_free_mb", value: "924", timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:03], updated_at: ~N[2026-08-21 05:13:03]}} [2026-08-21 05:13:04.038] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:13:03Z", "value" => "WIFI"} [2026-08-21 05:13:04.127] [DEBUG] QUERY OK db=80.6ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:03Z", "WIFI", "network_type", 76528, ~N[2026-08-21 05:13:04], ~N[2026-08-21 05:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:04.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774415, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:04], updated_at: ~N[2026-08-21 05:13:04]}} [2026-08-21 05:13:04.127] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:13:03Z", "value" => "true"} [2026-08-21 05:13:04.175] [DEBUG] QUERY OK db=47.8ms idle=96.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:03Z", "true", "kiosk_active", 76528, ~N[2026-08-21 05:13:04], ~N[2026-08-21 05:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:04.176] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774416, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:04], updated_at: ~N[2026-08-21 05:13:04]}} [2026-08-21 05:13:04.176] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:13:03Z", "value" => ""} [2026-08-21 05:13:04.210] [DEBUG] QUERY OK db=33.0ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:13:03Z", "sim_operator", 76528, ~N[2026-08-21 05:13:04], ~N[2026-08-21 05:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:04.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774417, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:04], updated_at: ~N[2026-08-21 05:13:04]}} [2026-08-21 05:13:04.210] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:13:03Z", "value" => "UNKNOWN"} [2026-08-21 05:13:04.443] [DEBUG] QUERY OK db=232.6ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:03Z", "UNKNOWN", "sim_number", 76528, ~N[2026-08-21 05:13:04], ~N[2026-08-21 05:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:04.443] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774418, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:04], updated_at: ~N[2026-08-21 05:13:04]}} [2026-08-21 05:13:04.443] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:13:03Z", "value" => "UNKNOWN"} [2026-08-21 05:13:04.491] [DEBUG] QUERY OK db=47.2ms idle=234.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:03Z", "UNKNOWN", "sim_iccid", 76528, ~N[2026-08-21 05:13:04], ~N[2026-08-21 05:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:04.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774419, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:04], updated_at: ~N[2026-08-21 05:13:04]}} [2026-08-21 05:13:04.491] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:13:03Z", "value" => "UNKNOWN"} [2026-08-21 05:13:04.533] [DEBUG] QUERY OK db=41.5ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:03Z", "UNKNOWN", "sim_imsi", 76528, ~N[2026-08-21 05:13:04], ~N[2026-08-21 05:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:04.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774420, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:04], updated_at: ~N[2026-08-21 05:13:04]}} [2026-08-21 05:13:04.534] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:13:03Z", "value" => "UNKNOWN"} [2026-08-21 05:13:04.586] [DEBUG] QUERY OK db=44.0ms idle=51.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:03Z", "UNKNOWN", "sim_iccid2", 76528, ~N[2026-08-21 05:13:04], ~N[2026-08-21 05:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:04.587] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774421, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:04], updated_at: ~N[2026-08-21 05:13:04]}} [2026-08-21 05:13:04.587] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:13:03Z", "value" => "UNKNOWN"} [2026-08-21 05:13:04.640] [DEBUG] QUERY OK db=50.4ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:03Z", "UNKNOWN", "sim_imsi2", 76528, ~N[2026-08-21 05:13:04], ~N[2026-08-21 05:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:04.642] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774422, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:04], updated_at: ~N[2026-08-21 05:13:04]}} [2026-08-21 05:13:04.642] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:13:03Z", "value" => "21"} [2026-08-21 05:13:04.692] [DEBUG] QUERY OK db=47.3ms queue=3.1ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:03Z", "21", "data_usage_mb", 76528, ~N[2026-08-21 05:13:04], ~N[2026-08-21 05:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:04.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774423, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:04], updated_at: ~N[2026-08-21 05:13:04]}} [2026-08-21 05:13:04.693] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:13:03Z", "value" => "0"} [2026-08-21 05:13:04.732] [DEBUG] QUERY OK db=39.0ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:03Z", "0", "mobile_data_mb", 76528, ~N[2026-08-21 05:13:04], ~N[2026-08-21 05:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:04.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774424, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:04], updated_at: ~N[2026-08-21 05:13:04]}} [2026-08-21 05:13:04.744] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:13: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:13:04.824] [DEBUG] QUERY OK db=71.2ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76528, ~N[2026-08-21 05:13:04], ~N[2026-08-21 05:13:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:04.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774425, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:13:03Z", message: nil, status_log_id: 76528, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:04], updated_at: ~N[2026-08-21 05:13:04]}} [2026-08-21 05:13:05.404] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["VISA"]} [2026-08-21 05:13:05.409] [DEBUG] QUERY OK source="core_transactions" db=1.6ms queue=3.2ms idle=672.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "VISA"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:13:05.414] [DEBUG] QUERY OK source="merchant_adjustments" db=4.1ms queue=0.1ms idle=592.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:13:05.452] [DEBUG] QUERY OK source="core_transactions" db=36.6ms queue=0.3ms idle=6.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:13:05.454] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.8ms idle=39.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:13:05.454] [DEBUG] Replied in 50ms [2026-08-21 05:13:06.457] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 05:13:06.460] [DEBUG] QUERY OK source="core_transactions" db=1.2ms idle=1003.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:13:06.462] [DEBUG] QUERY OK source="merchant_adjustments" db=1.6ms idle=752.0ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:13:06.463] [DEBUG] QUERY OK source="core_transactions" db=0.6ms queue=0.7ms idle=3.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:13:06.473] [DEBUG] QUERY OK source="tid_masters" db=3.6ms queue=2.0ms idle=5.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:13:06.473] [DEBUG] Replied in 15ms [2026-08-21 05:13:09.021] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["AMEX"]} [2026-08-21 05:13:09.025] [DEBUG] QUERY OK source="core_transactions" db=3.0ms queue=0.5ms idle=1102.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "AMEX"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:13:09.026] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms idle=296.7ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:13:09.064] [DEBUG] QUERY OK source="core_transactions" db=37.0ms idle=1.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:13:09.067] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=1.4ms idle=38.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:13:09.067] [DEBUG] Replied in 46ms [2026-08-21 05:13:10.373] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 05:13:10.374] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.1ms idle=1306.4ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:13:10.375] [DEBUG] QUERY OK source="merchant_adjustments" db=0.7ms idle=642.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:13:10.376] [DEBUG] QUERY OK source="core_transactions" db=0.7ms idle=1.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:13:10.382] [DEBUG] QUERY OK source="tid_masters" db=3.9ms queue=1.5ms idle=1.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:13:10.382] [DEBUG] Replied in 9ms [2026-08-21 05:13:16.956] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 05:13:33.650] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:13:33.650] [INFO ] Incoming JSON payload: {"oid":"ae13c6d0-9190-4898-8ba5-c5179db79d46","sn":"98251226730001","uploadTime":"2026-08-21T05:13:33Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:13:33Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:13:33.651] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ae13c6d0-9190-4898-8ba5-c5179db79d46", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:13:33Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:13:33Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:13:33Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:13:33Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:13:33Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:13:33Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:13:33Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:13:33Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:13:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:13:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:13:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:13:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:13:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:13:33Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:13:33Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:13:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:13:33Z", "vendor" => "morefun"} [2026-08-21 05:13:33.651] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:13:33.651] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:13:33.656] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:13:33.660] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms idle=966.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-08-21 05:13:33.665] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=842.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-08-21 05:13:33.665] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:13:33.667] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:13:33.667] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:13:33.688] [DEBUG] QUERY OK source="tms_terminals" db=19.6ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:13:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:13:33.688] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:13:33.690] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:13:33.727] [DEBUG] QUERY OK source="tms_terminals" db=35.7ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:13:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:13:33.767] [DEBUG] QUERY OK db=39.1ms idle=37.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ae13c6d0-9190-4898-8ba5-c5179db79d46", "2026-08-21T05:13:33Z", ~N[2026-08-21 05:13:33], ~N[2026-08-21 05:13:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:13:33.767] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76529, oid: "ae13c6d0-9190-4898-8ba5-c5179db79d46", upload_time: "2026-08-21T05:13:33Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:33], updated_at: ~N[2026-08-21 05:13:33]} [2026-08-21 05:13:33.767] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:13:33Z", "value" => "morefun"} [2026-08-21 05:13:33.812] [DEBUG] QUERY OK db=42.5ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "morefun", "vendor", 76529, ~N[2026-08-21 05:13:33], ~N[2026-08-21 05:13:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:33.812] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774426, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:33], updated_at: ~N[2026-08-21 05:13:33]}} [2026-08-21 05:13:33.812] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:13:33Z", "value" => "kiosk_launcher"} [2026-08-21 05:13:33.895] [DEBUG] QUERY OK db=82.3ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "kiosk_launcher", "model", 76529, ~N[2026-08-21 05:13:33], ~N[2026-08-21 05:13:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:33.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774427, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:33], updated_at: ~N[2026-08-21 05:13:33]}} [2026-08-21 05:13:33.896] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:13:33Z", "value" => "1.0"} [2026-08-21 05:13:34.064] [DEBUG] QUERY OK db=167.7ms idle=71.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "1.0", "app_version", 76529, ~N[2026-08-21 05:13:33], ~N[2026-08-21 05:13:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:34.064] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774428, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:33], updated_at: ~N[2026-08-21 05:13:33]}} [2026-08-21 05:13:34.064] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:13:33Z", "value" => "13"} [2026-08-21 05:13:34.110] [DEBUG] QUERY OK db=45.7ms idle=169.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "13", "android_version", 76529, ~N[2026-08-21 05:13:34], ~N[2026-08-21 05:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:34.111] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774429, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:34], updated_at: ~N[2026-08-21 05:13:34]}} [2026-08-21 05:13:34.111] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:13:33Z", "value" => "921"} [2026-08-21 05:13:34.157] [DEBUG] QUERY OK db=45.7ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "921", "ram_free_mb", 76529, ~N[2026-08-21 05:13:34], ~N[2026-08-21 05:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:34.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774430, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:34], updated_at: ~N[2026-08-21 05:13:34]}} [2026-08-21 05:13:34.157] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:13:33Z", "value" => "WIFI"} [2026-08-21 05:13:34.196] [DEBUG] QUERY OK db=38.6ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "WIFI", "network_type", 76529, ~N[2026-08-21 05:13:34], ~N[2026-08-21 05:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:34.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774431, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:34], updated_at: ~N[2026-08-21 05:13:34]}} [2026-08-21 05:13:34.197] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:13:33Z", "value" => "true"} [2026-08-21 05:13:34.246] [DEBUG] QUERY OK db=49.3ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "true", "kiosk_active", 76529, ~N[2026-08-21 05:13:34], ~N[2026-08-21 05:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:34.247] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774432, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:34], updated_at: ~N[2026-08-21 05:13:34]}} [2026-08-21 05:13:34.247] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:13:33Z", "value" => ""} [2026-08-21 05:13:34.286] [DEBUG] QUERY OK db=38.3ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:13:33Z", "sim_operator", 76529, ~N[2026-08-21 05:13:34], ~N[2026-08-21 05:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:34.286] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774433, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:34], updated_at: ~N[2026-08-21 05:13:34]}} [2026-08-21 05:13:34.286] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:13:33Z", "value" => "UNKNOWN"} [2026-08-21 05:13:34.333] [DEBUG] QUERY OK db=46.2ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "UNKNOWN", "sim_number", 76529, ~N[2026-08-21 05:13:34], ~N[2026-08-21 05:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:34.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774434, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:34], updated_at: ~N[2026-08-21 05:13:34]}} [2026-08-21 05:13:34.334] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:13:33Z", "value" => "UNKNOWN"} [2026-08-21 05:13:34.373] [DEBUG] QUERY OK db=38.3ms idle=48.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "UNKNOWN", "sim_iccid", 76529, ~N[2026-08-21 05:13:34], ~N[2026-08-21 05:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:34.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774435, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:34], updated_at: ~N[2026-08-21 05:13:34]}} [2026-08-21 05:13:34.373] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:13:33Z", "value" => "UNKNOWN"} [2026-08-21 05:13:34.435] [DEBUG] QUERY OK db=61.5ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "UNKNOWN", "sim_imsi", 76529, ~N[2026-08-21 05:13:34], ~N[2026-08-21 05:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:34.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774437, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:34], updated_at: ~N[2026-08-21 05:13:34]}} [2026-08-21 05:13:34.436] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:13:33Z", "value" => "UNKNOWN"} [2026-08-21 05:13:34.490] [DEBUG] QUERY OK db=50.1ms idle=66.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "UNKNOWN", "sim_iccid2", 76529, ~N[2026-08-21 05:13:34], ~N[2026-08-21 05:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:34.494] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774439, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:34], updated_at: ~N[2026-08-21 05:13:34]}} [2026-08-21 05:13:34.494] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:13:33Z", "value" => "UNKNOWN"} [2026-08-21 05:13:34.557] [DEBUG] QUERY OK db=61.8ms idle=59.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "UNKNOWN", "sim_imsi2", 76529, ~N[2026-08-21 05:13:34], ~N[2026-08-21 05:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:34.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774441, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:34], updated_at: ~N[2026-08-21 05:13:34]}} [2026-08-21 05:13:34.557] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:13:33Z", "value" => "21"} [2026-08-21 05:13:34.597] [DEBUG] QUERY OK db=39.5ms idle=67.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "21", "data_usage_mb", 76529, ~N[2026-08-21 05:13:34], ~N[2026-08-21 05:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:34.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774443, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:34], updated_at: ~N[2026-08-21 05:13:34]}} [2026-08-21 05:13:34.597] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:13:33Z", "value" => "0"} [2026-08-21 05:13:34.643] [DEBUG] QUERY OK db=43.6ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "0", "mobile_data_mb", 76529, ~N[2026-08-21 05:13:34], ~N[2026-08-21 05:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:34.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774445, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:34], updated_at: ~N[2026-08-21 05:13:34]}} [2026-08-21 05:13:34.647] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:13:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:13:34.720] [DEBUG] QUERY OK db=70.3ms queue=1.5ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:13:33Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76529, ~N[2026-08-21 05:13:34], ~N[2026-08-21 05:13:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:13:34.721] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774447, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:13:33Z", message: nil, status_log_id: 76529, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:13:34], updated_at: ~N[2026-08-21 05:13:34]}} [2026-08-21 05:14:03.740] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:14:03.740] [INFO ] Incoming JSON payload: {"oid":"0ceaa4ba-b3b7-4106-80e8-8fb840309c23","sn":"98251226730001","uploadTime":"2026-08-21T05:14:03Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:14:03Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:14:03Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:14:03Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:14:03Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-08-21T05:14:03Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:14:03Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:14:03Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:14:03Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:14:03Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:14:03Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:14:03Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:14:03Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:14:03Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:14:03Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:14: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:14:03.745] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0ceaa4ba-b3b7-4106-80e8-8fb840309c23", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:14:03Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:14:03Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:14:03Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:14:03Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:14:03Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:14:03Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:14:03Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:14:03Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:14:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:14:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:14:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:14:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:14:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:14:03Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:14:03Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:14: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:14:03Z", "vendor" => "morefun"} [2026-08-21 05:14:03.745] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:14:03.745] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:14:03.745] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:14:03.756] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=10.0ms idle=804.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-08-21 05:14:03.759] [DEBUG] QUERY OK source="parameter_templates" db=3.4ms idle=46.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-08-21 05:14:03.759] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:14:03.761] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:14:03.764] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:14:03.921] [DEBUG] QUERY OK source="tms_terminals" db=157.5ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:14:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:14:03.922] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:14:03.924] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=160.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-08-21 05:14:03.964] [DEBUG] QUERY OK source="tms_terminals" db=39.2ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:14:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:14:04.021] [DEBUG] QUERY OK db=56.4ms idle=16.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0ceaa4ba-b3b7-4106-80e8-8fb840309c23", "2026-08-21T05:14:03Z", ~N[2026-08-21 05:14:03], ~N[2026-08-21 05:14:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:14:04.021] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76531, oid: "0ceaa4ba-b3b7-4106-80e8-8fb840309c23", upload_time: "2026-08-21T05:14:03Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:03], updated_at: ~N[2026-08-21 05:14:03]} [2026-08-21 05:14:04.021] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:14:03Z", "value" => "morefun"} [2026-08-21 05:14:04.049] [DEBUG] QUERY OK db=27.5ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:03Z", "morefun", "vendor", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.049] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774458, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.049] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:14:03Z", "value" => "kiosk_launcher"} [2026-08-21 05:14:04.097] [DEBUG] QUERY OK db=46.5ms queue=0.1ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:03Z", "kiosk_launcher", "model", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.097] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774460, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.098] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:14:03Z", "value" => "1.0"} [2026-08-21 05:14:04.170] [DEBUG] QUERY OK db=71.5ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:03Z", "1.0", "app_version", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.170] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774462, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.170] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:14:03Z", "value" => "13"} [2026-08-21 05:14:04.226] [DEBUG] QUERY OK db=55.7ms idle=73.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:03Z", "13", "android_version", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.227] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774464, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.227] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:14:03Z", "value" => "917"} [2026-08-21 05:14:04.270] [DEBUG] QUERY OK db=41.2ms queue=1.1ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:03Z", "917", "ram_free_mb", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774466, itemkey: "ram_free_mb", value: "917", timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.271] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:14:03Z", "value" => "WIFI"} [2026-08-21 05:14:04.331] [DEBUG] QUERY OK db=59.2ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:03Z", "WIFI", "network_type", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.332] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774468, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.333] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:14:03Z", "value" => "true"} [2026-08-21 05:14:04.394] [DEBUG] QUERY OK db=60.7ms idle=64.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:03Z", "true", "kiosk_active", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774470, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.395] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:14:03Z", "value" => ""} [2026-08-21 05:14:04.440] [DEBUG] QUERY OK db=43.4ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:14:03Z", "sim_operator", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774472, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.440] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:14:03Z", "value" => "UNKNOWN"} [2026-08-21 05:14:04.495] [DEBUG] QUERY OK db=54.4ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:03Z", "UNKNOWN", "sim_number", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774474, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.495] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:14:03Z", "value" => "UNKNOWN"} [2026-08-21 05:14:04.584] [DEBUG] QUERY OK db=87.9ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:03Z", "UNKNOWN", "sim_iccid", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774476, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.585] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:14:03Z", "value" => "UNKNOWN"} [2026-08-21 05:14:04.625] [DEBUG] QUERY OK db=39.4ms idle=90.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:03Z", "UNKNOWN", "sim_imsi", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774478, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.625] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:14:03Z", "value" => "UNKNOWN"} [2026-08-21 05:14:04.704] [DEBUG] QUERY OK db=78.5ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:03Z", "UNKNOWN", "sim_iccid2", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774480, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.705] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:14:03Z", "value" => "UNKNOWN"} [2026-08-21 05:14:04.755] [DEBUG] QUERY OK db=50.0ms idle=80.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:03Z", "UNKNOWN", "sim_imsi2", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.762] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774482, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.762] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:14:03Z", "value" => "21"} [2026-08-21 05:14:04.820] [DEBUG] QUERY OK db=56.8ms queue=0.3ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:03Z", "21", "data_usage_mb", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.820] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774484, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.820] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:14:03Z", "value" => "0"} [2026-08-21 05:14:04.894] [DEBUG] QUERY OK db=63.9ms queue=0.1ms idle=74.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:03Z", "0", "mobile_data_mb", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774486, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:04.895] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:14: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:14:04.953] [DEBUG] QUERY OK db=56.7ms idle=75.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76531, ~N[2026-08-21 05:14:04], ~N[2026-08-21 05:14:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:04.958] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774488, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:14:03Z", message: nil, status_log_id: 76531, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:04], updated_at: ~N[2026-08-21 05:14:04]}} [2026-08-21 05:14:20.774] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["merchant_mid"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "425590250000000"} [2026-08-21 05:14:20.776] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=0.4ms idle=762.7ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` = ?) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:14:20.778] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=0.4ms idle=70.7ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` = ?) [~D[2026-07-22], ~D[2026-08-21], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:14:20.779] [DEBUG] QUERY OK source="core_transactions" db=0.4ms idle=1.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:14:20.781] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=1.2ms idle=1.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:14:20.781] [DEBUG] Replied in 7ms [2026-08-21 05:14:26.720] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["merchant_mid"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "419926360000000"} [2026-08-21 05:14:26.722] [DEBUG] QUERY OK source="core_transactions" db=1.3ms idle=996.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` = ?) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:14:26.723] [DEBUG] QUERY OK source="merchant_adjustments" db=0.7ms queue=0.3ms idle=695.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` = ?) [~D[2026-07-22], ~D[2026-08-21], "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:14:26.724] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=1.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:14:26.726] [DEBUG] QUERY OK source="tid_masters" db=0.9ms queue=0.4ms idle=1.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:14:26.726] [DEBUG] Replied in 6ms [2026-08-21 05:14:33.836] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:14:33.837] [INFO ] Incoming JSON payload: {"oid":"b1c9cced-26cf-4f85-8a6a-7bb7339d4c6c","sn":"98251226730001","uploadTime":"2026-08-21T05:14:33Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"ram_free_mb","value":"913","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:14:33Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:14:33.839] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b1c9cced-26cf-4f85-8a6a-7bb7339d4c6c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:14:33Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:14:33Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:14:33Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:14:33Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:14:33Z", "value" => "913"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:14:33Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:14:33Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:14:33Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:14:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:14:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:14:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:14:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:14:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:14:33Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:14:33Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:14:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:14:33Z", "vendor" => "morefun"} [2026-08-21 05:14:33.839] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:14:33.839] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:14:33.839] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:14:33.841] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=792.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-08-21 05:14:33.842] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=744.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-08-21 05:14:33.842] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:14:33.846] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms queue=0.2ms idle=2.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:14:33.846] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:14:33.876] [DEBUG] QUERY OK source="tms_terminals" db=29.0ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:14:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:14:33.876] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:14:33.878] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.3ms idle=30.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:14:33.933] [DEBUG] QUERY OK source="tms_terminals" db=54.6ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:14:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:14:33.969] [DEBUG] QUERY OK db=35.9ms idle=55.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b1c9cced-26cf-4f85-8a6a-7bb7339d4c6c", "2026-08-21T05:14:33Z", ~N[2026-08-21 05:14:33], ~N[2026-08-21 05:14:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:14:33.970] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76533, oid: "b1c9cced-26cf-4f85-8a6a-7bb7339d4c6c", upload_time: "2026-08-21T05:14:33Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:33], updated_at: ~N[2026-08-21 05:14:33]} [2026-08-21 05:14:33.970] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:14:33Z", "value" => "morefun"} [2026-08-21 05:14:34.009] [DEBUG] QUERY OK db=39.3ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "morefun", "vendor", 76533, ~N[2026-08-21 05:14:33], ~N[2026-08-21 05:14:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774490, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:33], updated_at: ~N[2026-08-21 05:14:33]}} [2026-08-21 05:14:34.010] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:14:33Z", "value" => "kiosk_launcher"} [2026-08-21 05:14:34.063] [DEBUG] QUERY OK db=52.6ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "kiosk_launcher", "model", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.064] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774492, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:34.064] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:14:33Z", "value" => "1.0"} [2026-08-21 05:14:34.125] [DEBUG] QUERY OK db=60.3ms queue=0.2ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "1.0", "app_version", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.125] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774494, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:34.125] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:14:33Z", "value" => "13"} [2026-08-21 05:14:34.181] [DEBUG] QUERY OK db=55.1ms queue=0.1ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "13", "android_version", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.181] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774496, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:34.181] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:14:33Z", "value" => "913"} [2026-08-21 05:14:34.233] [DEBUG] QUERY OK db=51.4ms idle=56.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "913", "ram_free_mb", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.233] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774498, itemkey: "ram_free_mb", value: "913", timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:34.233] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:14:33Z", "value" => "WIFI"} [2026-08-21 05:14:34.284] [DEBUG] QUERY OK db=50.1ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "WIFI", "network_type", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774500, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:34.284] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:14:33Z", "value" => "true"} [2026-08-21 05:14:34.365] [DEBUG] QUERY OK db=79.7ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "true", "kiosk_active", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774502, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:34.365] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:14:33Z", "value" => ""} [2026-08-21 05:14:34.403] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["merchant_mid"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "425590250000000"} [2026-08-21 05:14:34.405] [DEBUG] QUERY OK source="core_transactions" db=1.5ms idle=39.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` = ?) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:14:34.408] [DEBUG] QUERY OK source="merchant_adjustments" db=1.8ms idle=0.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` = ?) [~D[2026-07-22], ~D[2026-08-21], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:14:34.410] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.1ms idle=1.4ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:14:34.412] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=0.4ms idle=0.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:14:34.412] [DEBUG] Replied in 9ms [2026-08-21 05:14:34.419] [DEBUG] QUERY OK db=53.1ms queue=0.1ms idle=81.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:14:33Z", "sim_operator", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774504, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:34.419] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:14:33Z", "value" => "UNKNOWN"} [2026-08-21 05:14:34.475] [DEBUG] QUERY OK db=56.1ms idle=7.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "UNKNOWN", "sim_number", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774507, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:34.476] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:14:33Z", "value" => "UNKNOWN"} [2026-08-21 05:14:34.550] [DEBUG] QUERY OK db=74.2ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "UNKNOWN", "sim_iccid", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774509, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:34.551] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:14:33Z", "value" => "UNKNOWN"} [2026-08-21 05:14:34.588] [DEBUG] QUERY OK db=35.6ms idle=76.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "UNKNOWN", "sim_imsi", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774511, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:34.588] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:14:33Z", "value" => "UNKNOWN"} [2026-08-21 05:14:34.641] [DEBUG] QUERY OK db=52.7ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "UNKNOWN", "sim_iccid2", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774513, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:34.643] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:14:33Z", "value" => "UNKNOWN"} [2026-08-21 05:14:34.725] [DEBUG] QUERY OK db=80.9ms queue=0.1ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "UNKNOWN", "sim_imsi2", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.725] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774515, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:34.726] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:14:33Z", "value" => "21"} [2026-08-21 05:14:34.769] [DEBUG] QUERY OK db=43.2ms idle=84.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "21", "data_usage_mb", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774517, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:34.769] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:14:33Z", "value" => "0"} [2026-08-21 05:14:34.830] [DEBUG] QUERY OK db=55.6ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "0", "mobile_data_mb", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774519, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:34.832] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:14:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:14:34.952] [DEBUG] QUERY OK db=119.1ms queue=0.1ms idle=62.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:14:33Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76533, ~N[2026-08-21 05:14:34], ~N[2026-08-21 05:14:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:14:34.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774521, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:14:33Z", message: nil, status_log_id: 76533, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:14:34], updated_at: ~N[2026-08-21 05:14:34]}} [2026-08-21 05:14:40.494] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["merchant_mid"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "419926360000000"} [2026-08-21 05:14:40.496] [DEBUG] QUERY OK source="core_transactions" db=1.2ms queue=0.1ms idle=1431.1ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` = ?) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:14:40.498] [DEBUG] QUERY OK source="merchant_adjustments" db=1.1ms idle=429.0ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` = ?) [~D[2026-07-22], ~D[2026-08-21], "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:14:40.500] [DEBUG] QUERY OK source="core_transactions" db=2.1ms idle=1.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:14:40.502] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=1.1ms idle=2.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:14:40.502] [DEBUG] Replied in 8ms [2026-08-21 05:14:51.349] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["merchant_mid"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "425590250000000"} [2026-08-21 05:14:51.350] [DEBUG] QUERY OK source="core_transactions" db=0.9ms idle=641.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` = ?) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:14:51.351] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms idle=251.0ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` = ?) [~D[2026-07-22], ~D[2026-08-21], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:14:51.352] [DEBUG] QUERY OK source="core_transactions" db=0.5ms idle=1.2ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:14:51.353] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.4ms idle=1.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:14:51.353] [DEBUG] Replied in 4ms [2026-08-21 05:14:58.208] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["merchant_mid"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 05:14:58.209] [DEBUG] QUERY OK source="core_transactions" db=1.2ms idle=501.3ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:14:58.210] [DEBUG] QUERY OK source="merchant_adjustments" db=0.3ms idle=91.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:14:58.211] [DEBUG] QUERY OK source="core_transactions" db=0.5ms idle=0.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:14:58.212] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=0.4ms idle=1.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:14:58.212] [DEBUG] Replied in 4ms [2026-08-21 05:15:03.944] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:15:03.944] [INFO ] Incoming JSON payload: {"oid":"d44cd71c-8dac-4a7c-94c5-9e2519856858","sn":"98251226730001","uploadTime":"2026-08-21T05:15:03Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:15:03Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:15:03Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:15:03Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:15:03Z"},{"itemkey":"ram_free_mb","value":"907","timestamp":"2026-08-21T05:15:03Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:15:03Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:15:03Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:15:03Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:15:03Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:15:03Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:15:03Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:15:03Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:15:03Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:15:03Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:15:03.947] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d44cd71c-8dac-4a7c-94c5-9e2519856858", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:15:03Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:15:03Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:15:03Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:15:03Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:15:03Z", "value" => "907"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:15:03Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:15:03Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:15:03Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:15:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:15:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:15:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:15:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:15:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:15:03Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:15:03Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:15:03Z", "vendor" => "morefun"} [2026-08-21 05:15:03.948] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:15:03.948] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:15:03.948] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:15:03.951] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=1236.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-08-21 05:15:03.956] [DEBUG] QUERY OK source="parameter_templates" db=4.6ms idle=807.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-08-21 05:15:03.956] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:15:03.968] [DEBUG] QUERY OK source="tms_terminals" db=4.9ms queue=7.2ms idle=5.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:15:03.968] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:15:04.017] [DEBUG] QUERY OK source="tms_terminals" db=48.5ms idle=13.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:15:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:15:04.019] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:15:04.026] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:15:04.099] [DEBUG] QUERY OK source="tms_terminals" db=71.3ms queue=0.2ms idle=10.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:15:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:15:04.148] [DEBUG] QUERY OK db=48.7ms idle=74.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "d44cd71c-8dac-4a7c-94c5-9e2519856858", "2026-08-21T05:15:03Z", ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:15:04.149] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76535, oid: "d44cd71c-8dac-4a7c-94c5-9e2519856858", upload_time: "2026-08-21T05:15:03Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]} [2026-08-21 05:15:04.149] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:15:03Z", "value" => "morefun"} [2026-08-21 05:15:04.220] [DEBUG] QUERY OK db=70.7ms idle=1.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:03Z", "morefun", "vendor", 76535, ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:04.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774522, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]}} [2026-08-21 05:15:04.221] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:15:03Z", "value" => "kiosk_launcher"} [2026-08-21 05:15:04.266] [DEBUG] QUERY OK db=43.8ms idle=69.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:03Z", "kiosk_launcher", "model", 76535, ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:04.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774524, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]}} [2026-08-21 05:15:04.269] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:15:03Z", "value" => "1.0"} [2026-08-21 05:15:04.309] [DEBUG] QUERY OK db=39.9ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:03Z", "1.0", "app_version", 76535, ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:04.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774526, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]}} [2026-08-21 05:15:04.312] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:15:03Z", "value" => "13"} [2026-08-21 05:15:04.367] [DEBUG] QUERY OK db=53.9ms queue=0.3ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:03Z", "13", "android_version", 76535, ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:04.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774528, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]}} [2026-08-21 05:15:04.371] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:15:03Z", "value" => "907"} [2026-08-21 05:15:04.427] [DEBUG] QUERY OK db=55.7ms queue=0.1ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:03Z", "907", "ram_free_mb", 76535, ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:04.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774530, itemkey: "ram_free_mb", value: "907", timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]}} [2026-08-21 05:15:04.428] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:15:03Z", "value" => "WIFI"} [2026-08-21 05:15:04.551] [DEBUG] QUERY OK db=121.2ms idle=62.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:03Z", "WIFI", "network_type", 76535, ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:04.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774532, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]}} [2026-08-21 05:15:04.551] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:15:03Z", "value" => "true"} [2026-08-21 05:15:04.627] [DEBUG] QUERY OK db=75.3ms idle=123.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:03Z", "true", "kiosk_active", 76535, ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:04.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774534, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]}} [2026-08-21 05:15:04.627] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:15:03Z", "value" => ""} [2026-08-21 05:15:04.696] [DEBUG] QUERY OK db=68.7ms idle=76.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:15:03Z", "sim_operator", 76535, ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:04.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774536, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]}} [2026-08-21 05:15:04.702] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:15:03Z", "value" => "UNKNOWN"} [2026-08-21 05:15:04.766] [DEBUG] QUERY OK db=60.4ms queue=0.1ms idle=78.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:03Z", "UNKNOWN", "sim_number", 76535, ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:04.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774538, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]}} [2026-08-21 05:15:04.766] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:15:03Z", "value" => "UNKNOWN"} [2026-08-21 05:15:04.805] [DEBUG] QUERY OK db=38.2ms idle=70.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:03Z", "UNKNOWN", "sim_iccid", 76535, ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:04.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774540, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]}} [2026-08-21 05:15:04.809] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:15:03Z", "value" => "UNKNOWN"} [2026-08-21 05:15:04.874] [DEBUG] QUERY OK db=63.1ms queue=1.7ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:03Z", "UNKNOWN", "sim_imsi", 76535, ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:04.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774542, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]}} [2026-08-21 05:15:04.874] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:15:03Z", "value" => "UNKNOWN"} [2026-08-21 05:15:04.932] [DEBUG] QUERY OK db=57.6ms idle=69.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:03Z", "UNKNOWN", "sim_iccid2", 76535, ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:04.933] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774544, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]}} [2026-08-21 05:15:04.933] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:15:03Z", "value" => "UNKNOWN"} [2026-08-21 05:15:04.988] [DEBUG] QUERY OK db=55.2ms idle=59.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:03Z", "UNKNOWN", "sim_imsi2", 76535, ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:04.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774546, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]}} [2026-08-21 05:15:04.989] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:15:03Z", "value" => "21"} [2026-08-21 05:15:05.047] [DEBUG] QUERY OK db=57.3ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:03Z", "21", "data_usage_mb", 76535, ~N[2026-08-21 05:15:04], ~N[2026-08-21 05:15:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:05.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774548, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:04], updated_at: ~N[2026-08-21 05:15:04]}} [2026-08-21 05:15:05.048] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:15:03Z", "value" => "0"} [2026-08-21 05:15:05.111] [DEBUG] QUERY OK db=59.3ms queue=3.2ms idle=60.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:03Z", "0", "mobile_data_mb", 76535, ~N[2026-08-21 05:15:05], ~N[2026-08-21 05:15:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:05.112] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774550, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:05], updated_at: ~N[2026-08-21 05:15:05]}} [2026-08-21 05:15:05.113] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:15:05.187] [DEBUG] QUERY OK db=68.4ms queue=0.1ms idle=71.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76535, ~N[2026-08-21 05:15:05], ~N[2026-08-21 05:15:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:05.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774552, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:15:03Z", message: nil, status_log_id: 76535, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:05], updated_at: ~N[2026-08-21 05:15:05]}} [2026-08-21 05:15:09.194] [INFO ] GET /api/v1/settlements/summary/download_pdf [2026-08-21 05:15:09.194] [DEBUG] Processing with PlatformWeb.SettlementSummaryController.download_pdf/2 Parameters: %{"date_from" => "2026-07-22", "date_to" => "2026-08-21"} Pipelines: [:api] [2026-08-21 05:15:09.201] [DEBUG] QUERY OK source="core_transactions" db=1.6ms idle=491.1ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:15:09.203] [DEBUG] QUERY OK source="merchant_adjustments" db=1.1ms idle=26.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:15:09.207] [INFO ] [EmailPdfGenerator] Rendering settlement_summary_pdf to PDF: Settlement_Summary_2026-07-22_to_2026-08-21.pdf [2026-08-21 05:15:09.214] [INFO ] [EmailPdfGenerator] ✓ HTML rendered, size: 5743 bytes [2026-08-21 05:15:09.216] [INFO ] [EmailPdfGenerator] ✓ HTML written to /tmp/platform_web_pdf_7266/document.html [2026-08-21 05:15:09.217] [INFO ] [EmailPdfGenerator] Using wkhtmltopdf [2026-08-21 05:15:09.873] [INFO ] [EmailPdfGenerator] ✓ PDF rendered successfully, size: 20905 bytes [2026-08-21 05:15:09.875] [INFO ] Sent 200 in 681ms [2026-08-21 05:15:34.249] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:15:34.249] [INFO ] Incoming JSON payload: {"oid":"5d24f87d-565c-46a2-8e08-6ff9122134e1","sn":"98251226730001","uploadTime":"2026-08-21T05:15:33Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"ram_free_mb","value":"908","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:15:33Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:15:34.251] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5d24f87d-565c-46a2-8e08-6ff9122134e1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:15:33Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:15:33Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:15:33Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:15:33Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:15:33Z", "value" => "908"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:15:33Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:15:33Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:15:33Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:15:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:15:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:15:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:15:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:15:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:15:33Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:15:33Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:15:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:15:33Z", "vendor" => "morefun"} [2026-08-21 05:15:34.252] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:15:34.252] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:15:34.252] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:15:34.256] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=927.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-08-21 05:15:34.257] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=547.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 05:15:34.257] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:15:34.259] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.8ms idle=2.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:15:34.260] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:15:34.381] [DEBUG] QUERY OK source="tms_terminals" db=120.4ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:15:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:15:34.382] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:15:34.383] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=54.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:15:34.412] [DEBUG] QUERY OK source="tms_terminals" db=28.4ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:15:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:15:34.477] [DEBUG] QUERY OK db=65.0ms idle=29.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "5d24f87d-565c-46a2-8e08-6ff9122134e1", "2026-08-21T05:15:33Z", ~N[2026-08-21 05:15:34], ~N[2026-08-21 05:15:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:15:34.477] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76537, oid: "5d24f87d-565c-46a2-8e08-6ff9122134e1", upload_time: "2026-08-21T05:15:33Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:34], updated_at: ~N[2026-08-21 05:15:34]} [2026-08-21 05:15:34.477] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:15:33Z", "value" => "morefun"} [2026-08-21 05:15:34.526] [DEBUG] QUERY OK db=47.7ms idle=66.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "morefun", "vendor", 76537, ~N[2026-08-21 05:15:34], ~N[2026-08-21 05:15:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:34.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774554, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:34], updated_at: ~N[2026-08-21 05:15:34]}} [2026-08-21 05:15:34.526] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:15:33Z", "value" => "kiosk_launcher"} [2026-08-21 05:15:34.599] [DEBUG] QUERY OK db=72.8ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "kiosk_launcher", "model", 76537, ~N[2026-08-21 05:15:34], ~N[2026-08-21 05:15:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:34.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774556, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:34], updated_at: ~N[2026-08-21 05:15:34]}} [2026-08-21 05:15:34.600] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:15:33Z", "value" => "1.0"} [2026-08-21 05:15:34.632] [DEBUG] QUERY OK db=31.7ms queue=0.2ms idle=74.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "1.0", "app_version", 76537, ~N[2026-08-21 05:15:34], ~N[2026-08-21 05:15:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:34.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774558, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:34], updated_at: ~N[2026-08-21 05:15:34]}} [2026-08-21 05:15:34.632] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:15:33Z", "value" => "13"} [2026-08-21 05:15:34.691] [DEBUG] QUERY OK db=57.7ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "13", "android_version", 76537, ~N[2026-08-21 05:15:34], ~N[2026-08-21 05:15:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:34.691] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774560, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:34], updated_at: ~N[2026-08-21 05:15:34]}} [2026-08-21 05:15:34.691] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:15:33Z", "value" => "908"} [2026-08-21 05:15:34.746] [DEBUG] QUERY OK db=54.8ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "908", "ram_free_mb", 76537, ~N[2026-08-21 05:15:34], ~N[2026-08-21 05:15:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:34.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774562, itemkey: "ram_free_mb", value: "908", timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:34], updated_at: ~N[2026-08-21 05:15:34]}} [2026-08-21 05:15:34.746] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:15:33Z", "value" => "WIFI"} [2026-08-21 05:15:34.794] [DEBUG] QUERY OK db=47.3ms idle=56.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "WIFI", "network_type", 76537, ~N[2026-08-21 05:15:34], ~N[2026-08-21 05:15:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:34.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774564, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:34], updated_at: ~N[2026-08-21 05:15:34]}} [2026-08-21 05:15:34.794] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:15:33Z", "value" => "true"} [2026-08-21 05:15:34.847] [DEBUG] QUERY OK db=51.6ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "true", "kiosk_active", 76537, ~N[2026-08-21 05:15:34], ~N[2026-08-21 05:15:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:34.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774566, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:34], updated_at: ~N[2026-08-21 05:15:34]}} [2026-08-21 05:15:34.847] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:15:33Z", "value" => ""} [2026-08-21 05:15:34.908] [DEBUG] QUERY OK db=60.3ms idle=53.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:15:33Z", "sim_operator", 76537, ~N[2026-08-21 05:15:34], ~N[2026-08-21 05:15:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:34.908] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774568, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:34], updated_at: ~N[2026-08-21 05:15:34]}} [2026-08-21 05:15:34.908] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:15:33Z", "value" => "UNKNOWN"} [2026-08-21 05:15:34.969] [DEBUG] QUERY OK db=60.5ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "UNKNOWN", "sim_number", 76537, ~N[2026-08-21 05:15:34], ~N[2026-08-21 05:15:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:34.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774570, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:34], updated_at: ~N[2026-08-21 05:15:34]}} [2026-08-21 05:15:34.970] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:15:33Z", "value" => "UNKNOWN"} [2026-08-21 05:15:35.047] [DEBUG] QUERY OK db=77.0ms idle=62.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "UNKNOWN", "sim_iccid", 76537, ~N[2026-08-21 05:15:34], ~N[2026-08-21 05:15:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:35.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774572, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:34], updated_at: ~N[2026-08-21 05:15:34]}} [2026-08-21 05:15:35.048] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:15:33Z", "value" => "UNKNOWN"} [2026-08-21 05:15:35.094] [DEBUG] QUERY OK db=46.2ms idle=78.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "UNKNOWN", "sim_imsi", 76537, ~N[2026-08-21 05:15:35], ~N[2026-08-21 05:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:35.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774574, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:35], updated_at: ~N[2026-08-21 05:15:35]}} [2026-08-21 05:15:35.094] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:15:33Z", "value" => "UNKNOWN"} [2026-08-21 05:15:35.148] [DEBUG] QUERY OK db=53.3ms queue=0.1ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "UNKNOWN", "sim_iccid2", 76537, ~N[2026-08-21 05:15:35], ~N[2026-08-21 05:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:35.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774576, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:35], updated_at: ~N[2026-08-21 05:15:35]}} [2026-08-21 05:15:35.149] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:15:33Z", "value" => "UNKNOWN"} [2026-08-21 05:15:35.213] [DEBUG] QUERY OK db=63.9ms idle=55.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "UNKNOWN", "sim_imsi2", 76537, ~N[2026-08-21 05:15:35], ~N[2026-08-21 05:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:35.213] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774578, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:35], updated_at: ~N[2026-08-21 05:15:35]}} [2026-08-21 05:15:35.214] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:15:33Z", "value" => "21"} [2026-08-21 05:15:35.266] [DEBUG] QUERY OK db=52.0ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "21", "data_usage_mb", 76537, ~N[2026-08-21 05:15:35], ~N[2026-08-21 05:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:35.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774580, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:35], updated_at: ~N[2026-08-21 05:15:35]}} [2026-08-21 05:15:35.269] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:15:33Z", "value" => "0"} [2026-08-21 05:15:35.320] [DEBUG] QUERY OK db=50.4ms idle=56.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "0", "mobile_data_mb", 76537, ~N[2026-08-21 05:15:35], ~N[2026-08-21 05:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:35.320] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774582, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:35], updated_at: ~N[2026-08-21 05:15:35]}} [2026-08-21 05:15:35.324] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:15:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:15:35.388] [DEBUG] QUERY OK db=59.7ms idle=58.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:15:33Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76537, ~N[2026-08-21 05:15:35], ~N[2026-08-21 05:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:15:35.391] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774584, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:15:33Z", message: nil, status_log_id: 76537, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:15:35], updated_at: ~N[2026-08-21 05:15:35]}} [2026-08-21 05:16:04.346] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:16:04.346] [INFO ] Incoming JSON payload: {"oid":"c0b4b849-51eb-423d-89d2-d45957889ff7","sn":"98251226730001","uploadTime":"2026-08-21T05:16:03Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:16:03Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:16:03Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:16:03Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:16:03Z"},{"itemkey":"ram_free_mb","value":"925","timestamp":"2026-08-21T05:16:03Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:16:03Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:16:03Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:16:03Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:16:03Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:16:03Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:16:03Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:16:03Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:16:03Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:16:03Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:16:04.350] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c0b4b849-51eb-423d-89d2-d45957889ff7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:16:03Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:16:03Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:16:03Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:16:03Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:16:03Z", "value" => "925"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:16:03Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:16:03Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:16:03Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:16:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:16:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:16:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:16:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:16:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:16:03Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:16:03Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:16:03Z", "vendor" => "morefun"} [2026-08-21 05:16:04.350] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:16:04.350] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:16:04.350] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:16:04.354] [DEBUG] QUERY OK source="parameter_templates" db=4.3ms idle=639.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-08-21 05:16:04.358] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=383.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-08-21 05:16:04.358] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:16:04.361] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.6ms idle=4.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:16:04.361] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:16:04.389] [DEBUG] QUERY OK source="tms_terminals" db=27.3ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:16:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:16:04.390] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:16:04.393] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms queue=0.1ms idle=29.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:16:04.442] [DEBUG] QUERY OK source="tms_terminals" db=46.3ms idle=6.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:16:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:16:04.493] [DEBUG] QUERY OK db=49.3ms queue=0.8ms idle=48.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c0b4b849-51eb-423d-89d2-d45957889ff7", "2026-08-21T05:16:03Z", ~N[2026-08-21 05:16:04], ~N[2026-08-21 05:16:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:16:04.494] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76539, oid: "c0b4b849-51eb-423d-89d2-d45957889ff7", upload_time: "2026-08-21T05:16:03Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:04], updated_at: ~N[2026-08-21 05:16:04]} [2026-08-21 05:16:04.494] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:16:03Z", "value" => "morefun"} [2026-08-21 05:16:04.563] [DEBUG] QUERY OK db=68.0ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:03Z", "morefun", "vendor", 76539, ~N[2026-08-21 05:16:04], ~N[2026-08-21 05:16:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:04.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774586, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:04], updated_at: ~N[2026-08-21 05:16:04]}} [2026-08-21 05:16:04.563] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:16:03Z", "value" => "kiosk_launcher"} [2026-08-21 05:16:04.620] [DEBUG] QUERY OK db=56.8ms idle=70.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:03Z", "kiosk_launcher", "model", 76539, ~N[2026-08-21 05:16:04], ~N[2026-08-21 05:16:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:04.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774588, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:04], updated_at: ~N[2026-08-21 05:16:04]}} [2026-08-21 05:16:04.622] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:16:03Z", "value" => "1.0"} [2026-08-21 05:16:04.666] [DEBUG] QUERY OK db=43.4ms idle=60.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:03Z", "1.0", "app_version", 76539, ~N[2026-08-21 05:16:04], ~N[2026-08-21 05:16:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:04.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774590, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:04], updated_at: ~N[2026-08-21 05:16:04]}} [2026-08-21 05:16:04.667] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:16:03Z", "value" => "13"} [2026-08-21 05:16:04.715] [DEBUG] QUERY OK db=48.3ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:03Z", "13", "android_version", 76539, ~N[2026-08-21 05:16:04], ~N[2026-08-21 05:16:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:04.716] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774592, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:04], updated_at: ~N[2026-08-21 05:16:04]}} [2026-08-21 05:16:04.716] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:16:03Z", "value" => "925"} [2026-08-21 05:16:04.798] [DEBUG] QUERY OK db=81.8ms queue=0.2ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:03Z", "925", "ram_free_mb", 76539, ~N[2026-08-21 05:16:04], ~N[2026-08-21 05:16:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:04.798] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774594, itemkey: "ram_free_mb", value: "925", timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:04], updated_at: ~N[2026-08-21 05:16:04]}} [2026-08-21 05:16:04.799] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:16:03Z", "value" => "WIFI"} [2026-08-21 05:16:04.843] [DEBUG] QUERY OK db=44.1ms idle=83.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:03Z", "WIFI", "network_type", 76539, ~N[2026-08-21 05:16:04], ~N[2026-08-21 05:16:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:04.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774596, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:04], updated_at: ~N[2026-08-21 05:16:04]}} [2026-08-21 05:16:04.844] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:16:03Z", "value" => "true"} [2026-08-21 05:16:04.891] [DEBUG] QUERY OK db=46.5ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:03Z", "true", "kiosk_active", 76539, ~N[2026-08-21 05:16:04], ~N[2026-08-21 05:16:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:04.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774598, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:04], updated_at: ~N[2026-08-21 05:16:04]}} [2026-08-21 05:16:04.892] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:16:03Z", "value" => ""} [2026-08-21 05:16:04.988] [DEBUG] QUERY OK db=95.6ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:16:03Z", "sim_operator", 76539, ~N[2026-08-21 05:16:04], ~N[2026-08-21 05:16:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:04.988] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774600, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:04], updated_at: ~N[2026-08-21 05:16:04]}} [2026-08-21 05:16:04.988] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:16:03Z", "value" => "UNKNOWN"} [2026-08-21 05:16:05.075] [DEBUG] QUERY OK db=86.1ms idle=14.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:03Z", "UNKNOWN", "sim_number", 76539, ~N[2026-08-21 05:16:04], ~N[2026-08-21 05:16:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:05.075] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774602, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:04], updated_at: ~N[2026-08-21 05:16:04]}} [2026-08-21 05:16:05.078] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:16:03Z", "value" => "UNKNOWN"} [2026-08-21 05:16:05.156] [DEBUG] QUERY OK db=75.5ms idle=92.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:03Z", "UNKNOWN", "sim_iccid", 76539, ~N[2026-08-21 05:16:05], ~N[2026-08-21 05:16:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:05.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774604, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:05], updated_at: ~N[2026-08-21 05:16:05]}} [2026-08-21 05:16:05.157] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:16:03Z", "value" => "UNKNOWN"} [2026-08-21 05:16:05.188] [DEBUG] QUERY OK db=30.7ms idle=82.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:03Z", "UNKNOWN", "sim_imsi", 76539, ~N[2026-08-21 05:16:05], ~N[2026-08-21 05:16:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:05.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774606, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:05], updated_at: ~N[2026-08-21 05:16:05]}} [2026-08-21 05:16:05.191] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:16:03Z", "value" => "UNKNOWN"} [2026-08-21 05:16:05.260] [DEBUG] QUERY OK db=66.5ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:03Z", "UNKNOWN", "sim_iccid2", 76539, ~N[2026-08-21 05:16:05], ~N[2026-08-21 05:16:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:05.260] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774608, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:05], updated_at: ~N[2026-08-21 05:16:05]}} [2026-08-21 05:16:05.261] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:16:03Z", "value" => "UNKNOWN"} [2026-08-21 05:16:05.324] [DEBUG] QUERY OK db=62.5ms idle=73.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:03Z", "UNKNOWN", "sim_imsi2", 76539, ~N[2026-08-21 05:16:05], ~N[2026-08-21 05:16:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:05.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774610, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:05], updated_at: ~N[2026-08-21 05:16:05]}} [2026-08-21 05:16:05.324] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:16:03Z", "value" => "21"} [2026-08-21 05:16:05.368] [DEBUG] QUERY OK db=42.2ms idle=65.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:03Z", "21", "data_usage_mb", 76539, ~N[2026-08-21 05:16:05], ~N[2026-08-21 05:16:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:05.368] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774612, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:05], updated_at: ~N[2026-08-21 05:16:05]}} [2026-08-21 05:16:05.368] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:16:03Z", "value" => "0"} [2026-08-21 05:16:05.447] [DEBUG] QUERY OK db=78.8ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:03Z", "0", "mobile_data_mb", 76539, ~N[2026-08-21 05:16:05], ~N[2026-08-21 05:16:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:05.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774614, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:05], updated_at: ~N[2026-08-21 05:16:05]}} [2026-08-21 05:16:05.456] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:16:05.530] [DEBUG] QUERY OK db=72.6ms idle=88.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76539, ~N[2026-08-21 05:16:05], ~N[2026-08-21 05:16:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:05.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774616, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:16:03Z", message: nil, status_log_id: 76539, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:05], updated_at: ~N[2026-08-21 05:16:05]}} [2026-08-21 05:16:08.431] [INFO ] GET /admin/settlements/summary [2026-08-21 05:16:08.431] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 05:16:08.434] [DEBUG] QUERY OK source="users_tokens" db=1.8ms queue=0.2ms idle=1219.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:16:08.431986Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 05:16:08.438] [DEBUG] QUERY OK source="core_transactions" db=1.4ms queue=0.2ms idle=1455.1ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:16:08.438] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=0.1ms idle=453.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:16:08.443] [DEBUG] QUERY OK source="core_transactions" db=4.4ms idle=1.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:16:08.447] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=2.6ms idle=5.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:16:08.450] [INFO ] Sent 200 in 18ms [2026-08-21 05:16:09.488] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 31µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "MGhuOCNxXxgVRBpiNisDWCELYEIPCXovV71au9irzsMWDIelSyUrY_9b", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 05:16:09.810] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "f__YVH6jo7W5rbf4rr50VVCM", "live_socket_id" => "users_sessions:jyq_OqdMqka0uVK8iPzNvmYuNByLIEJVbWW0HHCRW-o=", "user_token" => <<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>} [2026-08-21 05:16:09.811] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=1597.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)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:16:09.811037Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 05:16:09.812] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=825.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:16:09.813] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms idle=101.0ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:16:09.814] [DEBUG] QUERY OK source="core_transactions" db=0.4ms idle=1.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:16:09.815] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.6ms idle=1.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:16:09.816] [DEBUG] Replied in 5ms [2026-08-21 05:16:11.712] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["merchant_mid"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "425590250000000"} [2026-08-21 05:16:11.713] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=717.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` = ?) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:16:11.714] [DEBUG] QUERY OK source="merchant_adjustments" db=0.3ms idle=1.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` = ?) [~D[2026-07-22], ~D[2026-08-21], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:16:11.714] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=1.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:16:11.716] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.6ms idle=1.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:16:11.716] [DEBUG] Replied in 4ms [2026-08-21 05:16:17.928] [INFO ] GET /api/v1/settlements/summary/download_pdf [2026-08-21 05:16:17.928] [DEBUG] Processing with PlatformWeb.SettlementSummaryController.download_pdf/2 Parameters: %{"date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "425590250000000"} Pipelines: [:api] [2026-08-21 05:16:17.930] [DEBUG] QUERY OK source="core_transactions" db=1.7ms idle=907.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` = ?) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:16:17.931] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=219.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` = ?) [~D[2026-07-22], ~D[2026-08-21], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:16:17.931] [INFO ] [EmailPdfGenerator] Rendering settlement_summary_pdf to PDF: Settlement_Summary_2026-07-22_to_2026-08-21.pdf [2026-08-21 05:16:17.932] [INFO ] [EmailPdfGenerator] ✓ HTML rendered, size: 5733 bytes [2026-08-21 05:16:17.933] [INFO ] [EmailPdfGenerator] ✓ HTML written to /tmp/platform_web_pdf_1987/document.html [2026-08-21 05:16:17.933] [INFO ] [EmailPdfGenerator] Using wkhtmltopdf [2026-08-21 05:16:18.517] [INFO ] [EmailPdfGenerator] ✓ PDF rendered successfully, size: 20721 bytes [2026-08-21 05:16:18.519] [INFO ] Sent 200 in 591ms [2026-08-21 05:16:20.683] [INFO ] GET /api/v1/settlements/summary/download_xlsx [2026-08-21 05:16:20.683] [DEBUG] Processing with PlatformWeb.SettlementSummaryController.download_xlsx/2 Parameters: %{"date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "425590250000000"} Pipelines: [:api] [2026-08-21 05:16:20.689] [DEBUG] QUERY OK source="core_transactions" db=0.9ms idle=976.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` = ?) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:16:20.690] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms idle=659.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` = ?) [~D[2026-07-22], ~D[2026-08-21], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:16:20.746] [INFO ] Sent 200 in 63ms [2026-08-21 05:16:34.471] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:16:34.471] [INFO ] Incoming JSON payload: {"oid":"0912d24b-1c70-4168-aa29-b387c8470e36","sn":"98251226730001","uploadTime":"2026-08-21T05:16:34Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"ram_free_mb","value":"923","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:16:34Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:16:34.473] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0912d24b-1c70-4168-aa29-b387c8470e36", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:16:34Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:16:34Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:16:34Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:16:34Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:16:34Z", "value" => "923"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:16:34Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:16:34Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:16:34Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:16:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:16:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:16:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:16:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:16:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:16:34Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:16:34Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:16:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:16:34Z", "vendor" => "morefun"} [2026-08-21 05:16:34.473] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:16:34.473] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:16:34.473] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:16:34.474] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=761.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-08-21 05:16:34.475] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=404.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-08-21 05:16:34.475] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:16:34.479] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms 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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:16:34.479] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:16:34.514] [DEBUG] QUERY OK source="tms_terminals" db=35.1ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:16:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:16:34.515] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:16:34.515] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=36.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:16:34.558] [DEBUG] QUERY OK source="tms_terminals" db=41.6ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:16:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:16:34.597] [DEBUG] QUERY OK db=38.6ms idle=42.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0912d24b-1c70-4168-aa29-b387c8470e36", "2026-08-21T05:16:34Z", ~N[2026-08-21 05:16:34], ~N[2026-08-21 05:16:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:16:34.597] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76541, oid: "0912d24b-1c70-4168-aa29-b387c8470e36", upload_time: "2026-08-21T05:16:34Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:34], updated_at: ~N[2026-08-21 05:16:34]} [2026-08-21 05:16:34.597] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:16:34Z", "value" => "morefun"} [2026-08-21 05:16:34.647] [DEBUG] QUERY OK db=49.0ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "morefun", "vendor", 76541, ~N[2026-08-21 05:16:34], ~N[2026-08-21 05:16:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:34.647] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774618, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:34], updated_at: ~N[2026-08-21 05:16:34]}} [2026-08-21 05:16:34.647] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:16:34Z", "value" => "kiosk_launcher"} [2026-08-21 05:16:34.699] [DEBUG] QUERY OK db=51.7ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "kiosk_launcher", "model", 76541, ~N[2026-08-21 05:16:34], ~N[2026-08-21 05:16:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:34.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774620, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:34], updated_at: ~N[2026-08-21 05:16:34]}} [2026-08-21 05:16:34.700] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:16:34Z", "value" => "1.0"} [2026-08-21 05:16:34.776] [DEBUG] QUERY OK db=75.3ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "1.0", "app_version", 76541, ~N[2026-08-21 05:16:34], ~N[2026-08-21 05:16:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:34.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774622, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:34], updated_at: ~N[2026-08-21 05:16:34]}} [2026-08-21 05:16:34.776] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:16:34Z", "value" => "13"} [2026-08-21 05:16:34.829] [DEBUG] QUERY OK db=52.9ms idle=77.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "13", "android_version", 76541, ~N[2026-08-21 05:16:34], ~N[2026-08-21 05:16:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:34.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774624, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:34], updated_at: ~N[2026-08-21 05:16:34]}} [2026-08-21 05:16:34.830] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:16:34Z", "value" => "923"} [2026-08-21 05:16:34.904] [DEBUG] QUERY OK db=73.4ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "923", "ram_free_mb", 76541, ~N[2026-08-21 05:16:34], ~N[2026-08-21 05:16:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:34.904] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774626, itemkey: "ram_free_mb", value: "923", timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:34], updated_at: ~N[2026-08-21 05:16:34]}} [2026-08-21 05:16:34.904] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:16:34Z", "value" => "WIFI"} [2026-08-21 05:16:34.984] [DEBUG] QUERY OK db=79.4ms idle=75.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "WIFI", "network_type", 76541, ~N[2026-08-21 05:16:34], ~N[2026-08-21 05:16:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:34.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774628, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:34], updated_at: ~N[2026-08-21 05:16:34]}} [2026-08-21 05:16:34.984] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:16:34Z", "value" => "true"} [2026-08-21 05:16:35.065] [DEBUG] QUERY OK db=79.9ms idle=81.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "true", "kiosk_active", 76541, ~N[2026-08-21 05:16:34], ~N[2026-08-21 05:16:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:35.065] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774630, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:34], updated_at: ~N[2026-08-21 05:16:34]}} [2026-08-21 05:16:35.065] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:16:34Z", "value" => ""} [2026-08-21 05:16:35.123] [DEBUG] QUERY OK db=56.9ms idle=81.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:16:34Z", "sim_operator", 76541, ~N[2026-08-21 05:16:35], ~N[2026-08-21 05:16:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:35.124] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774632, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:35], updated_at: ~N[2026-08-21 05:16:35]}} [2026-08-21 05:16:35.124] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:16:34Z", "value" => "UNKNOWN"} [2026-08-21 05:16:35.165] [DEBUG] QUERY OK db=40.3ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "UNKNOWN", "sim_number", 76541, ~N[2026-08-21 05:16:35], ~N[2026-08-21 05:16:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:35.165] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774634, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:35], updated_at: ~N[2026-08-21 05:16:35]}} [2026-08-21 05:16:35.165] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:16:34Z", "value" => "UNKNOWN"} [2026-08-21 05:16:35.264] [DEBUG] QUERY OK db=98.8ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "UNKNOWN", "sim_iccid", 76541, ~N[2026-08-21 05:16:35], ~N[2026-08-21 05:16:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:35.265] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774636, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:35], updated_at: ~N[2026-08-21 05:16:35]}} [2026-08-21 05:16:35.265] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:16:34Z", "value" => "UNKNOWN"} [2026-08-21 05:16:35.336] [DEBUG] QUERY OK db=71.0ms idle=100.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "UNKNOWN", "sim_imsi", 76541, ~N[2026-08-21 05:16:35], ~N[2026-08-21 05:16:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:35.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774638, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:35], updated_at: ~N[2026-08-21 05:16:35]}} [2026-08-21 05:16:35.340] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:16:34Z", "value" => "UNKNOWN"} [2026-08-21 05:16:35.389] [DEBUG] QUERY OK db=45.7ms idle=76.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "UNKNOWN", "sim_iccid2", 76541, ~N[2026-08-21 05:16:35], ~N[2026-08-21 05:16:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:35.391] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774640, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:35], updated_at: ~N[2026-08-21 05:16:35]}} [2026-08-21 05:16:35.391] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:16:34Z", "value" => "UNKNOWN"} [2026-08-21 05:16:35.459] [DEBUG] QUERY OK db=67.8ms idle=54.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "UNKNOWN", "sim_imsi2", 76541, ~N[2026-08-21 05:16:35], ~N[2026-08-21 05:16:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:35.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774642, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:35], updated_at: ~N[2026-08-21 05:16:35]}} [2026-08-21 05:16:35.459] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:16:34Z", "value" => "21"} [2026-08-21 05:16:35.506] [DEBUG] QUERY OK db=46.3ms idle=72.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "21", "data_usage_mb", 76541, ~N[2026-08-21 05:16:35], ~N[2026-08-21 05:16:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:35.507] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774644, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:35], updated_at: ~N[2026-08-21 05:16:35]}} [2026-08-21 05:16:35.507] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:16:34Z", "value" => "0"} [2026-08-21 05:16:35.573] [DEBUG] QUERY OK db=66.1ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "0", "mobile_data_mb", 76541, ~N[2026-08-21 05:16:35], ~N[2026-08-21 05:16:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:35.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774646, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:35], updated_at: ~N[2026-08-21 05:16:35]}} [2026-08-21 05:16:35.577] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:16:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:16:35.647] [DEBUG] QUERY OK db=67.7ms idle=72.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:16:34Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76541, ~N[2026-08-21 05:16:35], ~N[2026-08-21 05:16:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:16:35.647] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774648, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:16:34Z", message: nil, status_log_id: 76541, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:16:35], updated_at: ~N[2026-08-21 05:16:35]}} [2026-08-21 05:17:04.538] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:17:04.538] [INFO ] Incoming JSON payload: {"oid":"a0e8419b-a948-46d6-ae67-8afd7117fc0e","sn":"98251226730001","uploadTime":"2026-08-21T05:17:04Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"ram_free_mb","value":"910","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:17:04Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:17:04.543] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a0e8419b-a948-46d6-ae67-8afd7117fc0e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:17:04Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:17:04Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:17:04Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:17:04Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:17:04Z", "value" => "910"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:17:04Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:17:04Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:17:04Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:17:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:17:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:17:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:17:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:17:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:17:04Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:17:04Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:17:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:17:04Z", "vendor" => "morefun"} [2026-08-21 05:17:04.543] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:17:04.545] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:17:04.545] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:17:04.555] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=5.0ms idle=838.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-08-21 05:17:04.558] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=1.7ms idle=386.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-08-21 05:17:04.558] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:17:04.559] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:17:04.560] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:17:04.601] [DEBUG] QUERY OK source="tms_terminals" db=41.3ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:17:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:17:04.602] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:17:04.606] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=44.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:17:04.654] [DEBUG] QUERY OK source="tms_terminals" db=47.2ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:17:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:17:04.686] [DEBUG] QUERY OK db=30.7ms queue=1.1ms idle=48.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a0e8419b-a948-46d6-ae67-8afd7117fc0e", "2026-08-21T05:17:04Z", ~N[2026-08-21 05:17:04], ~N[2026-08-21 05:17:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:17:04.687] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76543, oid: "a0e8419b-a948-46d6-ae67-8afd7117fc0e", upload_time: "2026-08-21T05:17:04Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:04], updated_at: ~N[2026-08-21 05:17:04]} [2026-08-21 05:17:04.689] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:17:04Z", "value" => "morefun"} [2026-08-21 05:17:04.757] [DEBUG] QUERY OK db=67.6ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "morefun", "vendor", 76543, ~N[2026-08-21 05:17:04], ~N[2026-08-21 05:17:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:04.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774650, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:04], updated_at: ~N[2026-08-21 05:17:04]}} [2026-08-21 05:17:04.759] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:17:04Z", "value" => "kiosk_launcher"} [2026-08-21 05:17:04.808] [DEBUG] QUERY OK db=48.5ms idle=72.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "kiosk_launcher", "model", 76543, ~N[2026-08-21 05:17:04], ~N[2026-08-21 05:17:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:04.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774652, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:04], updated_at: ~N[2026-08-21 05:17:04]}} [2026-08-21 05:17:04.809] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:17:04Z", "value" => "1.0"} [2026-08-21 05:17:04.871] [DEBUG] QUERY OK db=61.6ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "1.0", "app_version", 76543, ~N[2026-08-21 05:17:04], ~N[2026-08-21 05:17:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:04.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774654, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:04], updated_at: ~N[2026-08-21 05:17:04]}} [2026-08-21 05:17:04.872] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:17:04Z", "value" => "13"} [2026-08-21 05:17:04.943] [DEBUG] QUERY OK db=70.4ms idle=64.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "13", "android_version", 76543, ~N[2026-08-21 05:17:04], ~N[2026-08-21 05:17:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:04.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774656, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:04], updated_at: ~N[2026-08-21 05:17:04]}} [2026-08-21 05:17:04.943] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:17:04Z", "value" => "910"} [2026-08-21 05:17:05.011] [DEBUG] QUERY OK db=67.7ms idle=72.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "910", "ram_free_mb", 76543, ~N[2026-08-21 05:17:04], ~N[2026-08-21 05:17:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:05.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774658, itemkey: "ram_free_mb", value: "910", timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:04], updated_at: ~N[2026-08-21 05:17:04]}} [2026-08-21 05:17:05.012] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:17:04Z", "value" => "WIFI"} [2026-08-21 05:17:05.057] [DEBUG] QUERY OK db=44.4ms idle=69.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "WIFI", "network_type", 76543, ~N[2026-08-21 05:17:05], ~N[2026-08-21 05:17:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:05.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774660, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:05], updated_at: ~N[2026-08-21 05:17:05]}} [2026-08-21 05:17:05.057] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:17:04Z", "value" => "true"} [2026-08-21 05:17:05.115] [DEBUG] QUERY OK db=56.9ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "true", "kiosk_active", 76543, ~N[2026-08-21 05:17:05], ~N[2026-08-21 05:17:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:05.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774662, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:05], updated_at: ~N[2026-08-21 05:17:05]}} [2026-08-21 05:17:05.115] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:17:04Z", "value" => ""} [2026-08-21 05:17:05.152] [DEBUG] QUERY OK db=36.3ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:17:04Z", "sim_operator", 76543, ~N[2026-08-21 05:17:05], ~N[2026-08-21 05:17:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:05.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774664, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:05], updated_at: ~N[2026-08-21 05:17:05]}} [2026-08-21 05:17:05.153] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:17:04Z", "value" => "UNKNOWN"} [2026-08-21 05:17:05.220] [DEBUG] QUERY OK db=65.8ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "UNKNOWN", "sim_number", 76543, ~N[2026-08-21 05:17:05], ~N[2026-08-21 05:17:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:05.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774666, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:05], updated_at: ~N[2026-08-21 05:17:05]}} [2026-08-21 05:17:05.224] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:17:04Z", "value" => "UNKNOWN"} [2026-08-21 05:17:05.266] [DEBUG] QUERY OK db=41.4ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "UNKNOWN", "sim_iccid", 76543, ~N[2026-08-21 05:17:05], ~N[2026-08-21 05:17:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:05.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774668, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:05], updated_at: ~N[2026-08-21 05:17:05]}} [2026-08-21 05:17:05.266] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:17:04Z", "value" => "UNKNOWN"} [2026-08-21 05:17:05.328] [DEBUG] QUERY OK db=56.3ms queue=5.1ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "UNKNOWN", "sim_imsi", 76543, ~N[2026-08-21 05:17:05], ~N[2026-08-21 05:17:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:05.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774670, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:05], updated_at: ~N[2026-08-21 05:17:05]}} [2026-08-21 05:17:05.330] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:17:04Z", "value" => "UNKNOWN"} [2026-08-21 05:17:05.375] [DEBUG] QUERY OK db=44.3ms idle=64.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "UNKNOWN", "sim_iccid2", 76543, ~N[2026-08-21 05:17:05], ~N[2026-08-21 05:17:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:05.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774672, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:05], updated_at: ~N[2026-08-21 05:17:05]}} [2026-08-21 05:17:05.375] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:17:04Z", "value" => "UNKNOWN"} [2026-08-21 05:17:05.417] [DEBUG] QUERY OK db=38.5ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "UNKNOWN", "sim_imsi2", 76543, ~N[2026-08-21 05:17:05], ~N[2026-08-21 05:17:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:05.417] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774674, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:05], updated_at: ~N[2026-08-21 05:17:05]}} [2026-08-21 05:17:05.418] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:17:04Z", "value" => "21"} [2026-08-21 05:17:05.486] [DEBUG] QUERY OK db=66.8ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "21", "data_usage_mb", 76543, ~N[2026-08-21 05:17:05], ~N[2026-08-21 05:17:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:05.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774676, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:05], updated_at: ~N[2026-08-21 05:17:05]}} [2026-08-21 05:17:05.490] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:17:04Z", "value" => "0"} [2026-08-21 05:17:05.550] [DEBUG] QUERY OK db=59.1ms idle=74.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "0", "mobile_data_mb", 76543, ~N[2026-08-21 05:17:05], ~N[2026-08-21 05:17:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:05.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774678, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:05], updated_at: ~N[2026-08-21 05:17:05]}} [2026-08-21 05:17:05.557] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:17:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:17:05.620] [DEBUG] QUERY OK db=61.5ms idle=71.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:04Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76543, ~N[2026-08-21 05:17:05], ~N[2026-08-21 05:17:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:05.620] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774680, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:17:04Z", message: nil, status_log_id: 76543, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:05], updated_at: ~N[2026-08-21 05:17:05]}} [2026-08-21 05:17:26.445] [INFO ] Running offline device check... [2026-08-21 05:17:26.445] [INFO ] Starting offline device check... [2026-08-21 05:17:26.446] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=446.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 05:17:26.455] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.0ms idle=211.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:17:26.462] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.464] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.466] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.3ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.468] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.470] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.471] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.472] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.473] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.475] [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-08-21 05:17:26.481] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.482] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=6.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.495] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.502] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.505] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms queue=0.2ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.506] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.508] [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-08-21 05:17:26.524] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.526] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=16.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.527] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.529] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.530] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.531] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.567] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=35.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.570] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.1ms idle=36.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.571] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.582] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.583] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=11.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.586] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.587] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.588] [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-08-21 05:17:26.591] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.592] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.593] [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-08-21 05:17:26.594] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.594] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.596] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.597] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.598] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.599] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.600] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.601] [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-08-21 05:17:26.602] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.602] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.603] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.604] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.604] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.606] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.606] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.607] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.608] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.608] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:17:26.608] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-08-21 05:17:26.609] [INFO ] Offline device check completed successfully [2026-08-21 05:17:34.667] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:17:34.667] [INFO ] Incoming JSON payload: {"oid":"b4f354a3-7a59-41bc-81c4-24c9b1ddc73a","sn":"98251226730001","uploadTime":"2026-08-21T05:17:34Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"ram_free_mb","value":"889","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:17:34Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:17:34.668] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b4f354a3-7a59-41bc-81c4-24c9b1ddc73a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:17:34Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:17:34Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:17:34Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:17:34Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:17:34Z", "value" => "889"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:17:34Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:17:34Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:17:34Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:17:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:17:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:17:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:17:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:17:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:17:34Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:17:34Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:17:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:17:34Z", "vendor" => "morefun"} [2026-08-21 05:17:34.668] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:17:34.668] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:17:34.668] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:17:34.672] [DEBUG] QUERY OK source="parameter_templates" db=3.4ms queue=0.1ms idle=1411.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-08-21 05:17:34.673] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=411.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-08-21 05:17:34.673] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:17:34.674] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:17:34.674] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:17:34.741] [DEBUG] QUERY OK source="tms_terminals" db=66.7ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:17:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:17:34.741] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:17:34.743] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=67.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-08-21 05:17:34.784] [DEBUG] QUERY OK source="tms_terminals" db=40.0ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:17:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:17:34.825] [DEBUG] QUERY OK db=39.3ms queue=1.1ms idle=41.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b4f354a3-7a59-41bc-81c4-24c9b1ddc73a", "2026-08-21T05:17:34Z", ~N[2026-08-21 05:17:34], ~N[2026-08-21 05:17:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:17:34.825] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76545, oid: "b4f354a3-7a59-41bc-81c4-24c9b1ddc73a", upload_time: "2026-08-21T05:17:34Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:34], updated_at: ~N[2026-08-21 05:17:34]} [2026-08-21 05:17:34.825] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:17:34Z", "value" => "morefun"} [2026-08-21 05:17:34.868] [DEBUG] QUERY OK db=42.7ms queue=0.1ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "morefun", "vendor", 76545, ~N[2026-08-21 05:17:34], ~N[2026-08-21 05:17:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:34.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774682, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:34], updated_at: ~N[2026-08-21 05:17:34]}} [2026-08-21 05:17:34.869] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:17:34Z", "value" => "kiosk_launcher"} [2026-08-21 05:17:34.924] [DEBUG] QUERY OK db=55.2ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "kiosk_launcher", "model", 76545, ~N[2026-08-21 05:17:34], ~N[2026-08-21 05:17:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:34.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774684, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:34], updated_at: ~N[2026-08-21 05:17:34]}} [2026-08-21 05:17:34.925] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:17:34Z", "value" => "1.0"} [2026-08-21 05:17:35.003] [DEBUG] QUERY OK db=77.4ms idle=56.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "1.0", "app_version", 76545, ~N[2026-08-21 05:17:34], ~N[2026-08-21 05:17:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:35.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774686, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:34], updated_at: ~N[2026-08-21 05:17:34]}} [2026-08-21 05:17:35.004] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:17:34Z", "value" => "13"} [2026-08-21 05:17:35.122] [DEBUG] QUERY OK db=117.0ms queue=0.2ms idle=79.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "13", "android_version", 76545, ~N[2026-08-21 05:17:35], ~N[2026-08-21 05:17:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:35.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774688, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:35], updated_at: ~N[2026-08-21 05:17:35]}} [2026-08-21 05:17:35.122] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:17:34Z", "value" => "889"} [2026-08-21 05:17:35.208] [DEBUG] QUERY OK db=85.5ms idle=119.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "889", "ram_free_mb", 76545, ~N[2026-08-21 05:17:35], ~N[2026-08-21 05:17:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:35.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774690, itemkey: "ram_free_mb", value: "889", timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:35], updated_at: ~N[2026-08-21 05:17:35]}} [2026-08-21 05:17:35.208] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:17:34Z", "value" => "WIFI"} [2026-08-21 05:17:35.257] [DEBUG] QUERY OK db=48.4ms idle=87.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "WIFI", "network_type", 76545, ~N[2026-08-21 05:17:35], ~N[2026-08-21 05:17:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:35.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774691, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:35], updated_at: ~N[2026-08-21 05:17:35]}} [2026-08-21 05:17:35.257] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:17:34Z", "value" => "true"} [2026-08-21 05:17:35.316] [DEBUG] QUERY OK db=57.1ms queue=0.5ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "true", "kiosk_active", 76545, ~N[2026-08-21 05:17:35], ~N[2026-08-21 05:17:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:35.318] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774693, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:35], updated_at: ~N[2026-08-21 05:17:35]}} [2026-08-21 05:17:35.318] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:17:34Z", "value" => ""} [2026-08-21 05:17:35.350] [DEBUG] QUERY OK db=31.1ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:17:34Z", "sim_operator", 76545, ~N[2026-08-21 05:17:35], ~N[2026-08-21 05:17:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:35.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774695, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:35], updated_at: ~N[2026-08-21 05:17:35]}} [2026-08-21 05:17:35.350] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:17:34Z", "value" => "UNKNOWN"} [2026-08-21 05:17:35.418] [DEBUG] QUERY OK db=66.1ms queue=0.8ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "UNKNOWN", "sim_number", 76545, ~N[2026-08-21 05:17:35], ~N[2026-08-21 05:17:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:35.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774697, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:35], updated_at: ~N[2026-08-21 05:17:35]}} [2026-08-21 05:17:35.419] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:17:34Z", "value" => "UNKNOWN"} [2026-08-21 05:17:35.455] [DEBUG] QUERY OK db=35.6ms idle=69.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "UNKNOWN", "sim_iccid", 76545, ~N[2026-08-21 05:17:35], ~N[2026-08-21 05:17:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:35.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774699, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:35], updated_at: ~N[2026-08-21 05:17:35]}} [2026-08-21 05:17:35.458] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:17:34Z", "value" => "UNKNOWN"} [2026-08-21 05:17:35.523] [DEBUG] QUERY OK db=60.7ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "UNKNOWN", "sim_imsi", 76545, ~N[2026-08-21 05:17:35], ~N[2026-08-21 05:17:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:35.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774701, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:35], updated_at: ~N[2026-08-21 05:17:35]}} [2026-08-21 05:17:35.524] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:17:34Z", "value" => "UNKNOWN"} [2026-08-21 05:17:35.570] [DEBUG] QUERY OK db=46.2ms idle=69.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "UNKNOWN", "sim_iccid2", 76545, ~N[2026-08-21 05:17:35], ~N[2026-08-21 05:17:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:35.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774703, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:35], updated_at: ~N[2026-08-21 05:17:35]}} [2026-08-21 05:17:35.571] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:17:34Z", "value" => "UNKNOWN"} [2026-08-21 05:17:35.634] [DEBUG] QUERY OK db=62.0ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "UNKNOWN", "sim_imsi2", 76545, ~N[2026-08-21 05:17:35], ~N[2026-08-21 05:17:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:35.634] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774705, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:35], updated_at: ~N[2026-08-21 05:17:35]}} [2026-08-21 05:17:35.634] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:17:34Z", "value" => "21"} [2026-08-21 05:17:35.668] [DEBUG] QUERY OK db=33.3ms idle=63.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "21", "data_usage_mb", 76545, ~N[2026-08-21 05:17:35], ~N[2026-08-21 05:17:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:35.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774707, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:35], updated_at: ~N[2026-08-21 05:17:35]}} [2026-08-21 05:17:35.668] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:17:34Z", "value" => "0"} [2026-08-21 05:17:35.730] [DEBUG] QUERY OK db=62.1ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "0", "mobile_data_mb", 76545, ~N[2026-08-21 05:17:35], ~N[2026-08-21 05:17:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:35.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774709, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:35], updated_at: ~N[2026-08-21 05:17:35]}} [2026-08-21 05:17:35.732] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:17:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:17:35.792] [DEBUG] QUERY OK db=59.1ms idle=64.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:17:34Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76545, ~N[2026-08-21 05:17:35], ~N[2026-08-21 05:17:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:17:35.793] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774711, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:17:34Z", message: nil, status_log_id: 76545, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:17:35], updated_at: ~N[2026-08-21 05:17:35]}} [2026-08-21 05:18:04.752] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:18:04.752] [INFO ] Incoming JSON payload: {"oid":"3ff1d960-d116-457c-9b78-cb404ea7511a","sn":"98251226730001","uploadTime":"2026-08-21T05:18:04Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"ram_free_mb","value":"886","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:18:04Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:18:04.754] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3ff1d960-d116-457c-9b78-cb404ea7511a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:18:04Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:18:04Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:18:04Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:18:04Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:18:04Z", "value" => "886"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:18:04Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:18:04Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:18:04Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:18:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:18:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:18:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:18:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:18:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:18:04Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:18:04Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:18:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:18:04Z", "vendor" => "morefun"} [2026-08-21 05:18:04.756] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:18:04.756] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:18:04.756] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:18:04.761] [DEBUG] QUERY OK source="parameter_templates" db=4.4ms idle=1041.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-08-21 05:18:04.762] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=395.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-08-21 05:18:04.762] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:18:04.766] [DEBUG] QUERY OK source="tms_terminals" db=3.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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:18:04.767] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:18:04.835] [DEBUG] QUERY OK source="tms_terminals" db=66.5ms idle=5.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:18:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:18:04.836] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:18:04.838] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=70.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:18:04.887] [DEBUG] QUERY OK source="tms_terminals" db=48.1ms idle=5.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:18:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:18:04.944] [DEBUG] QUERY OK db=56.2ms idle=50.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "3ff1d960-d116-457c-9b78-cb404ea7511a", "2026-08-21T05:18:04Z", ~N[2026-08-21 05:18:04], ~N[2026-08-21 05:18:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:18:04.945] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76547, oid: "3ff1d960-d116-457c-9b78-cb404ea7511a", upload_time: "2026-08-21T05:18:04Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:04], updated_at: ~N[2026-08-21 05:18:04]} [2026-08-21 05:18:04.945] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:18:04Z", "value" => "morefun"} [2026-08-21 05:18:04.982] [DEBUG] QUERY OK db=36.1ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "morefun", "vendor", 76547, ~N[2026-08-21 05:18:04], ~N[2026-08-21 05:18:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:04.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774714, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:04], updated_at: ~N[2026-08-21 05:18:04]}} [2026-08-21 05:18:04.982] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:18:04Z", "value" => "kiosk_launcher"} [2026-08-21 05:18:05.041] [DEBUG] QUERY OK db=58.7ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "kiosk_launcher", "model", 76547, ~N[2026-08-21 05:18:04], ~N[2026-08-21 05:18:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.041] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774716, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:04], updated_at: ~N[2026-08-21 05:18:04]}} [2026-08-21 05:18:05.042] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:18:04Z", "value" => "1.0"} [2026-08-21 05:18:05.087] [DEBUG] QUERY OK db=44.2ms queue=0.3ms idle=60.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "1.0", "app_version", 76547, ~N[2026-08-21 05:18:05], ~N[2026-08-21 05:18:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.089] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774718, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:05], updated_at: ~N[2026-08-21 05:18:05]}} [2026-08-21 05:18:05.090] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:18:04Z", "value" => "13"} [2026-08-21 05:18:05.140] [DEBUG] QUERY OK db=49.2ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "13", "android_version", 76547, ~N[2026-08-21 05:18:05], ~N[2026-08-21 05:18:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774720, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:05], updated_at: ~N[2026-08-21 05:18:05]}} [2026-08-21 05:18:05.140] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:18:04Z", "value" => "886"} [2026-08-21 05:18:05.186] [DEBUG] QUERY OK db=45.2ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "886", "ram_free_mb", 76547, ~N[2026-08-21 05:18:05], ~N[2026-08-21 05:18:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774722, itemkey: "ram_free_mb", value: "886", timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:05], updated_at: ~N[2026-08-21 05:18:05]}} [2026-08-21 05:18:05.186] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:18:04Z", "value" => "WIFI"} [2026-08-21 05:18:05.252] [DEBUG] QUERY OK db=65.8ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "WIFI", "network_type", 76547, ~N[2026-08-21 05:18:05], ~N[2026-08-21 05:18:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.253] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774724, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:05], updated_at: ~N[2026-08-21 05:18:05]}} [2026-08-21 05:18:05.253] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:18:04Z", "value" => "true"} [2026-08-21 05:18:05.288] [DEBUG] QUERY OK db=35.1ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "true", "kiosk_active", 76547, ~N[2026-08-21 05:18:05], ~N[2026-08-21 05:18:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774726, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:05], updated_at: ~N[2026-08-21 05:18:05]}} [2026-08-21 05:18:05.289] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:18:04Z", "value" => ""} [2026-08-21 05:18:05.336] [DEBUG] QUERY OK db=46.9ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:18:04Z", "sim_operator", 76547, ~N[2026-08-21 05:18:05], ~N[2026-08-21 05:18:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774728, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:05], updated_at: ~N[2026-08-21 05:18:05]}} [2026-08-21 05:18:05.341] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:18:04Z", "value" => "UNKNOWN"} [2026-08-21 05:18:05.388] [DEBUG] QUERY OK db=46.4ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "UNKNOWN", "sim_number", 76547, ~N[2026-08-21 05:18:05], ~N[2026-08-21 05:18:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774730, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:05], updated_at: ~N[2026-08-21 05:18:05]}} [2026-08-21 05:18:05.388] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:18:04Z", "value" => "UNKNOWN"} [2026-08-21 05:18:05.424] [DEBUG] QUERY OK db=35.5ms idle=11.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "UNKNOWN", "sim_iccid", 76547, ~N[2026-08-21 05:18:05], ~N[2026-08-21 05:18:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774732, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:05], updated_at: ~N[2026-08-21 05:18:05]}} [2026-08-21 05:18:05.425] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:18:04Z", "value" => "UNKNOWN"} [2026-08-21 05:18:05.495] [DEBUG] QUERY OK db=68.8ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "UNKNOWN", "sim_imsi", 76547, ~N[2026-08-21 05:18:05], ~N[2026-08-21 05:18:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774734, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:05], updated_at: ~N[2026-08-21 05:18:05]}} [2026-08-21 05:18:05.495] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:18:04Z", "value" => "UNKNOWN"} [2026-08-21 05:18:05.546] [DEBUG] QUERY OK db=48.8ms idle=73.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "UNKNOWN", "sim_iccid2", 76547, ~N[2026-08-21 05:18:05], ~N[2026-08-21 05:18:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774736, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:05], updated_at: ~N[2026-08-21 05:18:05]}} [2026-08-21 05:18:05.548] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:18:04Z", "value" => "UNKNOWN"} [2026-08-21 05:18:05.631] [DEBUG] QUERY OK db=82.1ms idle=54.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "UNKNOWN", "sim_imsi2", 76547, ~N[2026-08-21 05:18:05], ~N[2026-08-21 05:18:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774738, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:05], updated_at: ~N[2026-08-21 05:18:05]}} [2026-08-21 05:18:05.632] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:18:04Z", "value" => "21"} [2026-08-21 05:18:05.692] [DEBUG] QUERY OK db=60.3ms idle=85.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "21", "data_usage_mb", 76547, ~N[2026-08-21 05:18:05], ~N[2026-08-21 05:18:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774740, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:05], updated_at: ~N[2026-08-21 05:18:05]}} [2026-08-21 05:18:05.693] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:18:04Z", "value" => "0"} [2026-08-21 05:18:05.735] [DEBUG] QUERY OK db=42.2ms idle=61.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "0", "mobile_data_mb", 76547, ~N[2026-08-21 05:18:05], ~N[2026-08-21 05:18:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.736] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774742, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:05], updated_at: ~N[2026-08-21 05:18:05]}} [2026-08-21 05:18:05.738] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:18:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:18:05.810] [DEBUG] QUERY OK db=71.2ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:04Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76547, ~N[2026-08-21 05:18:05], ~N[2026-08-21 05:18:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:05.814] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774744, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:18:04Z", message: nil, status_log_id: 76547, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:05], updated_at: ~N[2026-08-21 05:18:05]}} [2026-08-21 05:18:09.535] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 05:18:34.870] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:18:34.870] [INFO ] Incoming JSON payload: {"oid":"7e645398-d9a3-406e-9e5a-523dbdd5f7af","sn":"98251226730001","uploadTime":"2026-08-21T05:18:34Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"ram_free_mb","value":"884","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:18:34Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:18:34.873] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7e645398-d9a3-406e-9e5a-523dbdd5f7af", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:18:34Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:18:34Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:18:34Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:18:34Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:18:34Z", "value" => "884"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:18:34Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:18:34Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:18:34Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:18:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:18:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:18:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:18:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:18:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:18:34Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:18:34Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:18:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:18:34Z", "vendor" => "morefun"} [2026-08-21 05:18:34.873] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:18:34.873] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:18:34.873] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:18:34.878] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1162.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-08-21 05:18:34.880] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=412.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-08-21 05:18:34.880] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:18:34.881] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=2.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:18:34.882] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:18:34.909] [DEBUG] QUERY OK source="tms_terminals" db=24.3ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:18:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:18:34.910] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:18:34.912] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=30.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:18:34.962] [DEBUG] QUERY OK source="tms_terminals" db=48.7ms idle=4.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:18:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:18:35.034] [DEBUG] QUERY OK db=71.9ms queue=0.1ms idle=49.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "7e645398-d9a3-406e-9e5a-523dbdd5f7af", "2026-08-21T05:18:34Z", ~N[2026-08-21 05:18:34], ~N[2026-08-21 05:18:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:18:35.034] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76549, oid: "7e645398-d9a3-406e-9e5a-523dbdd5f7af", upload_time: "2026-08-21T05:18:34Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:34], updated_at: ~N[2026-08-21 05:18:34]} [2026-08-21 05:18:35.034] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:18:34Z", "value" => "morefun"} [2026-08-21 05:18:35.089] [DEBUG] QUERY OK db=54.0ms decode=0.1ms idle=73.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "morefun", "vendor", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774746, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.092] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:18:34Z", "value" => "kiosk_launcher"} [2026-08-21 05:18:35.121] [DEBUG] QUERY OK db=28.9ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "kiosk_launcher", "model", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774748, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.122] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:18:34Z", "value" => "1.0"} [2026-08-21 05:18:35.187] [DEBUG] QUERY OK db=61.2ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "1.0", "app_version", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774750, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.188] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:18:34Z", "value" => "13"} [2026-08-21 05:18:35.244] [DEBUG] QUERY OK db=55.2ms idle=67.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "13", "android_version", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.247] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774752, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.247] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:18:34Z", "value" => "884"} [2026-08-21 05:18:35.301] [DEBUG] QUERY OK db=53.1ms queue=0.2ms idle=60.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "884", "ram_free_mb", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774754, itemkey: "ram_free_mb", value: "884", timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.302] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:18:34Z", "value" => "WIFI"} [2026-08-21 05:18:35.346] [DEBUG] QUERY OK db=42.5ms idle=58.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "WIFI", "network_type", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.346] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774756, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.346] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:18:34Z", "value" => "true"} [2026-08-21 05:18:35.414] [DEBUG] QUERY OK db=64.4ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "true", "kiosk_active", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.417] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774759, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.418] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:18:34Z", "value" => ""} [2026-08-21 05:18:35.468] [DEBUG] QUERY OK db=49.6ms idle=72.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:18:34Z", "sim_operator", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774761, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.469] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:18:34Z", "value" => "UNKNOWN"} [2026-08-21 05:18:35.513] [DEBUG] QUERY OK db=39.0ms queue=0.6ms idle=5.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "UNKNOWN", "sim_number", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774763, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.513] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:18:34Z", "value" => "UNKNOWN"} [2026-08-21 05:18:35.564] [DEBUG] QUERY OK db=49.9ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "UNKNOWN", "sim_iccid", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774765, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.566] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:18:34Z", "value" => "UNKNOWN"} [2026-08-21 05:18:35.620] [DEBUG] QUERY OK db=49.1ms queue=3.8ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "UNKNOWN", "sim_imsi", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.620] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774767, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.620] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:18:34Z", "value" => "UNKNOWN"} [2026-08-21 05:18:35.670] [DEBUG] QUERY OK db=49.5ms idle=56.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "UNKNOWN", "sim_iccid2", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774769, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.672] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:18:34Z", "value" => "UNKNOWN"} [2026-08-21 05:18:35.705] [DEBUG] QUERY OK db=28.7ms queue=0.4ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "UNKNOWN", "sim_imsi2", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774771, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.705] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:18:34Z", "value" => "21"} [2026-08-21 05:18:35.759] [DEBUG] QUERY OK db=53.0ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "21", "data_usage_mb", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774773, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.759] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:18:34Z", "value" => "0"} [2026-08-21 05:18:35.824] [DEBUG] QUERY OK db=63.5ms queue=0.6ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "0", "mobile_data_mb", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774775, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:18:35.825] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:18:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:18:35.914] [DEBUG] QUERY OK db=88.1ms idle=66.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:18:34Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76549, ~N[2026-08-21 05:18:35], ~N[2026-08-21 05:18:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:18:35.914] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774777, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:18:34Z", message: nil, status_log_id: 76549, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:18:35], updated_at: ~N[2026-08-21 05:18:35]}} [2026-08-21 05:19:05.157] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:19:05.157] [INFO ] Incoming JSON payload: {"oid":"c35bc38a-8ec5-4766-8b8e-2032b5d5c874","sn":"98251226730001","uploadTime":"2026-08-21T05:19:04Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"ram_free_mb","value":"949","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:19:04Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:19:05.163] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c35bc38a-8ec5-4766-8b8e-2032b5d5c874", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:19:04Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:19:04Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:19:04Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:19:04Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:19:04Z", "value" => "949"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:19:04Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:19:04Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:19:04Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:19:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:19:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:19:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:19:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:19:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:19:04Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:19:04Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:19:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:19:04Z", "vendor" => "morefun"} [2026-08-21 05:19:05.163] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:19:05.163] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:19:05.163] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:19:05.168] [DEBUG] QUERY OK source="parameter_templates" db=4.4ms idle=1442.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-08-21 05:19:05.170] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=578.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-08-21 05:19:05.170] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:19:05.171] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms idle=2.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:19:05.171] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:19:05.199] [DEBUG] QUERY OK source="tms_terminals" db=25.9ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:19:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:19:05.199] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:19:05.200] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=28.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:19:05.257] [DEBUG] QUERY OK source="tms_terminals" db=56.5ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:19:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:19:05.293] [DEBUG] QUERY OK db=34.8ms queue=0.8ms idle=57.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c35bc38a-8ec5-4766-8b8e-2032b5d5c874", "2026-08-21T05:19:04Z", ~N[2026-08-21 05:19:05], ~N[2026-08-21 05:19:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:19:05.293] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76551, oid: "c35bc38a-8ec5-4766-8b8e-2032b5d5c874", upload_time: "2026-08-21T05:19:04Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:05], updated_at: ~N[2026-08-21 05:19:05]} [2026-08-21 05:19:05.293] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:19:04Z", "value" => "morefun"} [2026-08-21 05:19:05.340] [DEBUG] QUERY OK db=46.0ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "morefun", "vendor", 76551, ~N[2026-08-21 05:19:05], ~N[2026-08-21 05:19:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:05.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774778, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:05], updated_at: ~N[2026-08-21 05:19:05]}} [2026-08-21 05:19:05.341] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:19:04Z", "value" => "kiosk_launcher"} [2026-08-21 05:19:05.406] [DEBUG] QUERY OK db=64.3ms queue=0.8ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "kiosk_launcher", "model", 76551, ~N[2026-08-21 05:19:05], ~N[2026-08-21 05:19:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:05.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774780, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:05], updated_at: ~N[2026-08-21 05:19:05]}} [2026-08-21 05:19:05.415] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:19:04Z", "value" => "1.0"} [2026-08-21 05:19:05.461] [DEBUG] QUERY OK db=45.4ms idle=75.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "1.0", "app_version", 76551, ~N[2026-08-21 05:19:05], ~N[2026-08-21 05:19:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:05.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774782, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:05], updated_at: ~N[2026-08-21 05:19:05]}} [2026-08-21 05:19:05.463] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:19:04Z", "value" => "13"} [2026-08-21 05:19:05.519] [DEBUG] QUERY OK db=55.6ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "13", "android_version", 76551, ~N[2026-08-21 05:19:05], ~N[2026-08-21 05:19:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:05.520] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774784, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:05], updated_at: ~N[2026-08-21 05:19:05]}} [2026-08-21 05:19:05.520] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:19:04Z", "value" => "949"} [2026-08-21 05:19:05.570] [DEBUG] QUERY OK db=50.2ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "949", "ram_free_mb", 76551, ~N[2026-08-21 05:19:05], ~N[2026-08-21 05:19:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:05.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774786, itemkey: "ram_free_mb", value: "949", timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:05], updated_at: ~N[2026-08-21 05:19:05]}} [2026-08-21 05:19:05.571] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:19:04Z", "value" => "WIFI"} [2026-08-21 05:19:05.629] [DEBUG] QUERY OK db=57.6ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "WIFI", "network_type", 76551, ~N[2026-08-21 05:19:05], ~N[2026-08-21 05:19:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:05.629] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774788, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:05], updated_at: ~N[2026-08-21 05:19:05]}} [2026-08-21 05:19:05.629] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:19:04Z", "value" => "true"} [2026-08-21 05:19:05.705] [DEBUG] QUERY OK db=75.7ms idle=15.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "true", "kiosk_active", 76551, ~N[2026-08-21 05:19:05], ~N[2026-08-21 05:19:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:05.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774790, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:05], updated_at: ~N[2026-08-21 05:19:05]}} [2026-08-21 05:19:05.706] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:19:04Z", "value" => ""} [2026-08-21 05:19:05.747] [DEBUG] QUERY OK db=41.4ms idle=77.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:19:04Z", "sim_operator", 76551, ~N[2026-08-21 05:19:05], ~N[2026-08-21 05:19:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:05.748] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774792, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:05], updated_at: ~N[2026-08-21 05:19:05]}} [2026-08-21 05:19:05.748] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:19:04Z", "value" => "UNKNOWN"} [2026-08-21 05:19:05.812] [DEBUG] QUERY OK db=63.5ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "UNKNOWN", "sim_number", 76551, ~N[2026-08-21 05:19:05], ~N[2026-08-21 05:19:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:05.812] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774794, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:05], updated_at: ~N[2026-08-21 05:19:05]}} [2026-08-21 05:19:05.812] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:19:04Z", "value" => "UNKNOWN"} [2026-08-21 05:19:05.877] [DEBUG] QUERY OK db=63.5ms idle=64.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "UNKNOWN", "sim_iccid", 76551, ~N[2026-08-21 05:19:05], ~N[2026-08-21 05:19:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:05.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774796, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:05], updated_at: ~N[2026-08-21 05:19:05]}} [2026-08-21 05:19:05.877] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:19:04Z", "value" => "UNKNOWN"} [2026-08-21 05:19:05.921] [DEBUG] QUERY OK db=43.1ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "UNKNOWN", "sim_imsi", 76551, ~N[2026-08-21 05:19:05], ~N[2026-08-21 05:19:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:05.921] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774798, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:05], updated_at: ~N[2026-08-21 05:19:05]}} [2026-08-21 05:19:05.921] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:19:04Z", "value" => "UNKNOWN"} [2026-08-21 05:19:06.002] [DEBUG] QUERY OK db=79.3ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "UNKNOWN", "sim_iccid2", 76551, ~N[2026-08-21 05:19:05], ~N[2026-08-21 05:19:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:06.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774800, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:05], updated_at: ~N[2026-08-21 05:19:05]}} [2026-08-21 05:19:06.004] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:19:04Z", "value" => "UNKNOWN"} [2026-08-21 05:19:06.050] [DEBUG] QUERY OK db=46.1ms idle=83.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "UNKNOWN", "sim_imsi2", 76551, ~N[2026-08-21 05:19:06], ~N[2026-08-21 05:19:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:06.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774802, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:06], updated_at: ~N[2026-08-21 05:19:06]}} [2026-08-21 05:19:06.051] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:19:04Z", "value" => "21"} [2026-08-21 05:19:06.097] [DEBUG] QUERY OK db=46.1ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "21", "data_usage_mb", 76551, ~N[2026-08-21 05:19:06], ~N[2026-08-21 05:19:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:06.098] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774804, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:06], updated_at: ~N[2026-08-21 05:19:06]}} [2026-08-21 05:19:06.100] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:19:04Z", "value" => "0"} [2026-08-21 05:19:06.152] [DEBUG] QUERY OK db=52.0ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "0", "mobile_data_mb", 76551, ~N[2026-08-21 05:19:06], ~N[2026-08-21 05:19:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:06.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774806, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:06], updated_at: ~N[2026-08-21 05:19:06]}} [2026-08-21 05:19:06.154] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:19:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:19:06.200] [DEBUG] QUERY OK db=45.6ms idle=56.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:04Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76551, ~N[2026-08-21 05:19:06], ~N[2026-08-21 05:19:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:06.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774808, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:19:04Z", message: nil, status_log_id: 76551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:06], updated_at: ~N[2026-08-21 05:19:06]}} [2026-08-21 05:19:14.578] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:19:14.578] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T05:19:14Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T05:19:14Z","value":"24"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T05:19:14Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T05:19:14Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T05:19:14Z","value":""},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T05:19:14Z","value":"2.0.0"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T05:19:14Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T05:19:14Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T05:19:14Z","vendor":"MoreFun"} [2026-08-21 05:19:14.579] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T05:19:14Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T05:19:14Z", "value" => "24"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T05:19:14Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T05:19:14Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T05:19:14Z", "value" => ""}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T05:19:14Z", "value" => "2.0.0"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T05:19:14Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T05:19:14Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:19:14Z", "vendor" => "MoreFun"} [2026-08-21 05:19:14.579] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "2.0.0", keys_config: "", parameter_config: ""} [2026-08-21 05:19:14.579] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:19:14.579] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 05:19:14.580] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1863.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-08-21 05:19:14.582] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=926.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 05:19:14.595] [DEBUG] QUERY OK source="parameter_template_values" db=0.9ms queue=0.4ms idle=13.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-08-21 05:19:14.613] [DEBUG] QUERY OK source="parameter_definitions" db=1.9ms queue=1.9ms idle=27.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-08-21 05:19:14.628] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms queue=0.7ms idle=31.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-08-21 05:19:14.655] [DEBUG] QUERY OK source="pos_merchant" db=0.3ms queue=21.9ms idle=19.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 05:19:14.657] [DEBUG] QUERY OK db=0.6ms queue=1.0ms idle=936.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 ["626165170000000"] [2026-08-21 05:19:14.658] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 05:19:14.666] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms queue=1.9ms idle=8.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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 05:19:14.677] [DEBUG] QUERY OK source="address" db=2.8ms queue=0.4ms idle=10.3ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 05:19:14.677] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 05:19:14.679] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 05:19:14.746] [DEBUG] QUERY OK db=49.2ms queue=0.4ms idle=30.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "f93fd93a2ec8398483561849b351736b8b4fc8e1c0897eb9b44122390e0808c1", 1412, 938, ~U[2026-08-21 05:19:14Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 05:19:14], ~N[2026-08-21 05:19:14]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 05:19:14.746] [INFO ] AutoPushService: Created push log 48220 for MF919 params.zip [2026-08-21 05:19:14.749] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1412, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 05:19:14.750] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 05:19:14.753] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 05:19:14.762] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms queue=1.3ms idle=82.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 05:19:14.775] [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-08-21 05:19:14.837] [DEBUG] QUERY OK db=60.5ms queue=0.7ms idle=30.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "36d9d19f64389300a6326284bf01b8ec1fe23e0255208689ae0cd7a22d87c0eb", 1604, 17947, ~U[2026-08-21 05:19:14Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 05:19:14], ~N[2026-08-21 05:19:14]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 05:19:14.837] [INFO ] AutoPushService: Created push log 48221 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 05:19:14.837] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 1604, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 05:19:14.838] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 05:19:14.838] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 05:19:14.839] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=76.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-08-21 05:19:14.855] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 05:19:14.856] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=17.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 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-08-21 05:19:14.856] [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-08-21 05:19:14.924] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 05:19:14.925] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 05:19:14.925] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 05:19:14.926] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=85.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-08-21 05:19:14.926] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 05:19:14.926] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 05:19:14.927] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=70.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 05:19:15.026] [DEBUG] QUERY OK source="tms_terminals" db=56.9ms queue=41.1ms idle=1.6ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 05:19:14], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 05:19:15.026] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:19:15.026] [INFO ] Event published: terminal_updated [2026-08-21 05:19:15.028] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 05:19:15.029] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 05:19:15.029] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 05:19:15.029] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms queue=0.5ms idle=100.9ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 05:19:15], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 05:19:15.030] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.4ms idle=4.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 05:19:15.031] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 05:19:15.031] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 05:19:15.136] [DEBUG] QUERY OK source="tms_terminals" db=65.7ms queue=40.9ms idle=0.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `emv_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "2.0.0", ~N[2026-08-21 05:19:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:19:15.140] [DEBUG] QUERY OK source="config_file_versions" db=3.4ms idle=105.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-08-21 05:19:15.142] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.5ms idle=4.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 05:19:15.142] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:emv_config, "2.0.0", "1.0.1"}, {:application, "3.8.7.3", "3.8.5"}] [2026-08-21 05:19:15.259] [DEBUG] QUERY OK source="parameter_push_logs" db=115.4ms queue=0.8ms idle=2.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, "emv_config", ~N[2026-08-21 04:49:15]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 05:19:15.259] [INFO ] VersionComplianceChecker: Skipping emv_config re-push for 98251226730001 (push already in-flight or within cooldown) [2026-08-21 05:19:15.296] [DEBUG] QUERY OK source="parameter_push_logs" db=34.8ms queue=0.1ms idle=118.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-08-21 04:49:15]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 05:19:15.296] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 05:19:15.296] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 05:19:15.299] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 05:19:15.300] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms queue=0.1ms idle=3.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 05:19:15.302] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 05:19:15.305] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=3.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:19:15.377] [DEBUG] QUERY OK source="tms_terminals" db=31.5ms queue=40.5ms idle=4.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:19:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:19:15.465] [DEBUG] QUERY OK db=87.2ms idle=72.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T05:19:14Z", ~N[2026-08-21 05:19:15], ~N[2026-08-21 05:19:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:19:15.465] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76553, oid: "organization_id", upload_time: "2026-08-21T05:19:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:15], updated_at: ~N[2026-08-21 05:19:15]} [2026-08-21 05:19:15.465] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T05:19:14Z", "value" => "online"} [2026-08-21 05:19:15.527] [DEBUG] QUERY OK db=58.0ms queue=3.0ms idle=88.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T05:19:14Z", "online", "status", 76553, ~N[2026-08-21 05:19:15], ~N[2026-08-21 05:19:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:15.527] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774810, itemkey: "status", value: "online", timestamp: "2026-08-21T05:19:14Z", message: "Terminal status update", status_log_id: 76553, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:15], updated_at: ~N[2026-08-21 05:19:15]}} [2026-08-21 05:19:15.527] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 05:19:15.527] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T05:19:14Z", "value" => "24"} [2026-08-21 05:19:15.572] [DEBUG] QUERY OK db=42.8ms queue=1.6ms idle=62.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T05:19:14Z", "24", "battery", 76553, ~N[2026-08-21 05:19:15], ~N[2026-08-21 05:19:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:15.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774812, itemkey: "battery", value: "24", timestamp: "2026-08-21T05:19:14Z", message: "Battery level", status_log_id: 76553, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:15], updated_at: ~N[2026-08-21 05:19:15]}} [2026-08-21 05:19:15.572] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T05:19:14Z", "value" => "online"} [2026-08-21 05:19:15.622] [DEBUG] QUERY OK db=49.5ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T05:19:14Z", "online", "network", 76553, ~N[2026-08-21 05:19:15], ~N[2026-08-21 05:19:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:15.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774814, itemkey: "network", value: "online", timestamp: "2026-08-21T05:19:14Z", message: "Network connectivity", status_log_id: 76553, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:15], updated_at: ~N[2026-08-21 05:19:15]}} [2026-08-21 05:19:15.623] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 05:19:15.623] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T05:19:14Z", "value" => "0"} [2026-08-21 05:19:15.680] [DEBUG] QUERY OK db=56.6ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T05:19:14Z", "0", "cpu", 76553, ~N[2026-08-21 05:19:15], ~N[2026-08-21 05:19:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:15.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774816, itemkey: "cpu", value: "0", timestamp: "2026-08-21T05:19:14Z", message: "CPU usage percentage", status_log_id: 76553, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:15], updated_at: ~N[2026-08-21 05:19:15]}} [2026-08-21 05:19:15.681] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T05:19:14Z", "value" => ""} [2026-08-21 05:19:15.769] [DEBUG] QUERY OK db=46.6ms queue=41.4ms idle=14.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current parameters version", "2026-08-21T05:19:14Z", "parameter_config", 76553, ~N[2026-08-21 05:19:15], ~N[2026-08-21 05:19:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:15.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774818, itemkey: "parameter_config", value: nil, timestamp: "2026-08-21T05:19:14Z", message: "Current parameters version", status_log_id: 76553, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:15], updated_at: ~N[2026-08-21 05:19:15]}} [2026-08-21 05:19:15.769] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T05:19:14Z", "value" => "2.0.0"} [2026-08-21 05:19:15.826] [DEBUG] QUERY OK db=55.6ms queue=0.1ms idle=89.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T05:19:14Z", "2.0.0", "emv_config", 76553, ~N[2026-08-21 05:19:15], ~N[2026-08-21 05:19:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:15.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774820, itemkey: "emv_config", value: "2.0.0", timestamp: "2026-08-21T05:19:14Z", message: "Current EMV config version", status_log_id: 76553, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:15], updated_at: ~N[2026-08-21 05:19:15]}} [2026-08-21 05:19:15.826] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T05:19:14Z", "value" => ""} [2026-08-21 05:19:15.875] [DEBUG] QUERY OK db=48.8ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T05:19:14Z", "keys_config", 76553, ~N[2026-08-21 05:19:15], ~N[2026-08-21 05:19:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:15.876] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774822, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T05:19:14Z", message: "Current keys config version", status_log_id: 76553, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:15], updated_at: ~N[2026-08-21 05:19:15]}} [2026-08-21 05:19:15.876] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T05:19:14Z", "value" => "3.8.7.3"} [2026-08-21 05:19:15.930] [DEBUG] QUERY OK db=54.3ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T05:19:14Z", "3.8.7.3", "application", 76553, ~N[2026-08-21 05:19:15], ~N[2026-08-21 05:19:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:15.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774824, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T05:19:14Z", message: "Current application version", status_log_id: 76553, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:15], updated_at: ~N[2026-08-21 05:19:15]}} [2026-08-21 05:19:15.934] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T05:19:14Z"} [2026-08-21 05:19:15.937] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:19:14Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 26, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:19:31.369] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:19:31.369] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T05:19:30Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T05:19:30Z","value":"24"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T05:19:30Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T05:19:30Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T05:19:30Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T05:19:30Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T05:19:30Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T05:19:30Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T05:19:30Z","vendor":"MoreFun"} [2026-08-21 05:19:31.369] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T05:19:30Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T05:19:30Z", "value" => "24"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T05:19:30Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T05:19:30Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T05:19:30Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T05:19:30Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T05:19:30Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T05:19:30Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:19:30Z", "vendor" => "MoreFun"} [2026-08-21 05:19:31.369] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 05:19:31.370] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:19:31.370] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 05:19:31.371] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1654.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 05:19:31.372] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.8ms idle=656.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 05:19:31.374] [DEBUG] QUERY OK source="parameter_template_values" db=1.0ms queue=0.1ms 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-08-21 05:19:31.380] [DEBUG] QUERY OK source="parameter_definitions" db=3.4ms queue=1.9ms idle=1.8ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 05:19:31.381] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms idle=6.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 05:19:31.419] [DEBUG] QUERY OK source="pos_merchant" db=38.3ms idle=1.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 05:19:31.421] [DEBUG] QUERY OK db=1.0ms queue=0.7ms idle=1700.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 ["626165170000000"] [2026-08-21 05:19:31.422] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 05:19:31.423] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms idle=41.0ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 05:19:31.423] [DEBUG] QUERY OK source="address" db=0.7ms idle=3.4ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 05:19:31.424] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 05:19:31.425] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 05:19:31.516] [DEBUG] QUERY OK db=89.6ms queue=0.3ms idle=2.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "1d3969c112d1c37541cafd1de69769bf60d5f1acb292b073be0ad45209c86732", 8034, 938, ~U[2026-08-21 05:19:31Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 05:19:31], ~N[2026-08-21 05:19:31]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 05:19:31.516] [INFO ] AutoPushService: Created push log 48223 for MF919 params.zip [2026-08-21 05:19:31.516] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 8034, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 05:19:31.516] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 05:19:31.516] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 05:19:31.517] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.1ms idle=92.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-08-21 05:19:31.520] [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-08-21 05:19:31.562] [DEBUG] QUERY OK db=39.6ms queue=2.0ms idle=5.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "583bc113becff1316d2b4f60e2ca564f8e72b563c0110ea7ba6a8690db59136a", 1892, 17947, ~U[2026-08-21 05:19:31Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 05:19:31], ~N[2026-08-21 05:19:31]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 05:19:31.563] [INFO ] AutoPushService: Created push log 48225 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 05:19:31.563] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 1892, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 05:19:31.563] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 05:19:31.563] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 05:19:31.565] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=46.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 05:19:31.565] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 05:19:31.567] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=3.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 05:19:31.569] [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-08-21 05:19:31.571] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 05:19:31.572] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 05:19:31.572] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 05:19:31.574] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=7.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 05:19:31.577] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 05:19:31.577] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 05:19:31.579] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.9ms idle=10.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-08-21 05:19:31.581] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:19:31.674] [DEBUG] QUERY OK source="tms_terminals" db=48.8ms queue=43.1ms idle=8.0ms 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-08-21 05:19:31], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:19:31.676] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.9ms idle=95.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-08-21 05:19:31.677] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=2.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 05:19:31.678] [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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 05:19:31.678] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 05:19:31.726] [DEBUG] QUERY OK source="parameter_push_logs" db=47.0ms queue=0.6ms idle=1.7ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-08-21 04:49:31]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 05:19:31.726] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 05:19:31.726] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 05:19:31.728] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.2ms idle=8.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 05:19:31.730] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=2.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 05:19:31.730] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 05:19:31.731] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=2.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:19:31.809] [DEBUG] QUERY OK source="tms_terminals" db=35.0ms queue=42.0ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:19:31], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:19:31.854] [DEBUG] QUERY OK db=44.4ms idle=77.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T05:19:30Z", ~N[2026-08-21 05:19:31], ~N[2026-08-21 05:19:31]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:19:31.854] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76555, oid: "organization_id", upload_time: "2026-08-21T05:19:30Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:31], updated_at: ~N[2026-08-21 05:19:31]} [2026-08-21 05:19:31.854] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T05:19:30Z", "value" => "online"} [2026-08-21 05:19:31.912] [DEBUG] QUERY OK db=57.1ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T05:19:30Z", "online", "status", 76555, ~N[2026-08-21 05:19:31], ~N[2026-08-21 05:19:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:31.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774826, itemkey: "status", value: "online", timestamp: "2026-08-21T05:19:30Z", message: "Terminal status update", status_log_id: 76555, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:31], updated_at: ~N[2026-08-21 05:19:31]}} [2026-08-21 05:19:31.912] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 05:19:31.913] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T05:19:30Z", "value" => "24"} [2026-08-21 05:19:31.992] [DEBUG] QUERY OK db=79.4ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T05:19:30Z", "24", "battery", 76555, ~N[2026-08-21 05:19:31], ~N[2026-08-21 05:19:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:31.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774828, itemkey: "battery", value: "24", timestamp: "2026-08-21T05:19:30Z", message: "Battery level", status_log_id: 76555, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:31], updated_at: ~N[2026-08-21 05:19:31]}} [2026-08-21 05:19:31.993] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T05:19:30Z", "value" => "online"} [2026-08-21 05:19:32.072] [DEBUG] QUERY OK db=79.0ms idle=81.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T05:19:30Z", "online", "network", 76555, ~N[2026-08-21 05:19:31], ~N[2026-08-21 05:19:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:32.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774830, itemkey: "network", value: "online", timestamp: "2026-08-21T05:19:30Z", message: "Network connectivity", status_log_id: 76555, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:31], updated_at: ~N[2026-08-21 05:19:31]}} [2026-08-21 05:19:32.072] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 05:19:32.073] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T05:19:30Z", "value" => "0"} [2026-08-21 05:19:32.177] [DEBUG] QUERY OK db=103.1ms idle=81.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T05:19:30Z", "0", "cpu", 76555, ~N[2026-08-21 05:19:32], ~N[2026-08-21 05:19:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:32.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774832, itemkey: "cpu", value: "0", timestamp: "2026-08-21T05:19:30Z", message: "CPU usage percentage", status_log_id: 76555, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:32], updated_at: ~N[2026-08-21 05:19:32]}} [2026-08-21 05:19:32.177] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T05:19:30Z", "value" => "1.0.0"} [2026-08-21 05:19:32.474] [DEBUG] QUERY OK db=296.3ms idle=105.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T05:19:30Z", "1.0.0", "parameter_config", 76555, ~N[2026-08-21 05:19:32], ~N[2026-08-21 05:19:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:32.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774834, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T05:19:30Z", message: "Current parameters version", status_log_id: 76555, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:32], updated_at: ~N[2026-08-21 05:19:32]}} [2026-08-21 05:19:32.475] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T05:19:30Z", "value" => "1.0.1"} [2026-08-21 05:19:32.532] [DEBUG] QUERY OK db=57.2ms idle=298.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T05:19:30Z", "1.0.1", "emv_config", 76555, ~N[2026-08-21 05:19:32], ~N[2026-08-21 05:19:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:32.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774836, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T05:19:30Z", message: "Current EMV config version", status_log_id: 76555, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:32], updated_at: ~N[2026-08-21 05:19:32]}} [2026-08-21 05:19:32.533] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T05:19:30Z", "value" => ""} [2026-08-21 05:19:32.578] [DEBUG] QUERY OK db=44.4ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T05:19:30Z", "keys_config", 76555, ~N[2026-08-21 05:19:32], ~N[2026-08-21 05:19:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:32.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774838, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T05:19:30Z", message: "Current keys config version", status_log_id: 76555, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:32], updated_at: ~N[2026-08-21 05:19:32]}} [2026-08-21 05:19:32.579] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T05:19:30Z", "value" => "3.8.7.3"} [2026-08-21 05:19:32.661] [DEBUG] QUERY OK db=80.3ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T05:19:30Z", "3.8.7.3", "application", 76555, ~N[2026-08-21 05:19:32], ~N[2026-08-21 05:19:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:32.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774840, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T05:19:30Z", message: "Current application version", status_log_id: 76555, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:32], updated_at: ~N[2026-08-21 05:19:32]}} [2026-08-21 05:19:32.662] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T05:19:31Z"} [2026-08-21 05:19:32.662] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:19:31Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 31, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:19:35.166] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T05:19:14Z"} [2026-08-21 05:19:35.167] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:19:14Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 27, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:19:35.170] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T05:19:14Z"} [2026-08-21 05:19:35.170] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:19:14Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 29, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:19:35.519] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:19:35.519] [INFO ] Incoming JSON payload: {"oid":"02d4ef7b-c286-4760-9ae4-dcbe009c161c","sn":"98251226730001","uploadTime":"2026-08-21T05:19:34Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"ram_free_mb","value":"909","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"data_usage_mb","value":"21","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:19:34Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:19:35.523] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "02d4ef7b-c286-4760-9ae4-dcbe009c161c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:19:34Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:19:34Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:19:34Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:19:34Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:19:34Z", "value" => "909"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:19:34Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:19:34Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:19:34Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:19:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:19:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:19:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:19:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:19:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:19:34Z", "value" => "21"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:19:34Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:19:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:19:34Z", "vendor" => "morefun"} [2026-08-21 05:19:35.523] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:19:35.523] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:19:35.524] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:19:35.525] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.8ms idle=1794.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-08-21 05:19:35.526] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=792.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-08-21 05:19:35.526] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:19:35.528] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:19:35.561] [DEBUG] QUERY OK source="tms_terminals" db=32.7ms idle=2.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 05:19:35], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 05:19:35.561] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:19:35.562] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 05:19:35.562] [INFO ] Event published: terminal_updated [2026-08-21 05:19:35.562] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 05:19:35.562] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 05:19:35.563] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.7ms queue=0.1ms idle=33.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 05:19:35], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 05:19:35.564] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=2.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 05:19:35.565] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 05:19:35.565] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 05:19:35.658] [DEBUG] QUERY OK source="tms_terminals" db=52.4ms queue=42.3ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 05:19:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:19:35.658] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:19:35.659] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=0.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:19:35.750] [DEBUG] QUERY OK source="tms_terminals" db=48.8ms queue=41.6ms idle=0.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:19:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:19:35.828] [DEBUG] QUERY OK db=77.7ms idle=13.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "02d4ef7b-c286-4760-9ae4-dcbe009c161c", "2026-08-21T05:19:34Z", ~N[2026-08-21 05:19:35], ~N[2026-08-21 05:19:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:19:35.829] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76557, oid: "02d4ef7b-c286-4760-9ae4-dcbe009c161c", upload_time: "2026-08-21T05:19:34Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:35], updated_at: ~N[2026-08-21 05:19:35]} [2026-08-21 05:19:35.829] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:19:34Z", "value" => "morefun"} [2026-08-21 05:19:35.865] [DEBUG] QUERY OK db=35.4ms queue=0.4ms idle=79.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "morefun", "vendor", 76557, ~N[2026-08-21 05:19:35], ~N[2026-08-21 05:19:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:35.865] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774842, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:35], updated_at: ~N[2026-08-21 05:19:35]}} [2026-08-21 05:19:35.866] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:19:34Z", "value" => "kiosk_launcher"} [2026-08-21 05:19:35.923] [DEBUG] QUERY OK db=57.2ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "kiosk_launcher", "model", 76557, ~N[2026-08-21 05:19:35], ~N[2026-08-21 05:19:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:35.923] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774844, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:35], updated_at: ~N[2026-08-21 05:19:35]}} [2026-08-21 05:19:35.923] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:19:34Z", "value" => "1.0"} [2026-08-21 05:19:35.972] [DEBUG] QUERY OK db=48.0ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "1.0", "app_version", 76557, ~N[2026-08-21 05:19:35], ~N[2026-08-21 05:19:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:35.972] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774846, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:35], updated_at: ~N[2026-08-21 05:19:35]}} [2026-08-21 05:19:35.972] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:19:34Z", "value" => "13"} [2026-08-21 05:19:36.033] [DEBUG] QUERY OK db=60.1ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "13", "android_version", 76557, ~N[2026-08-21 05:19:35], ~N[2026-08-21 05:19:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:36.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774848, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:35], updated_at: ~N[2026-08-21 05:19:35]}} [2026-08-21 05:19:36.033] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:19:34Z", "value" => "909"} [2026-08-21 05:19:36.104] [DEBUG] QUERY OK db=70.6ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "909", "ram_free_mb", 76557, ~N[2026-08-21 05:19:36], ~N[2026-08-21 05:19:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:36.104] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774850, itemkey: "ram_free_mb", value: "909", timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:36], updated_at: ~N[2026-08-21 05:19:36]}} [2026-08-21 05:19:36.105] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:19:34Z", "value" => "WIFI"} [2026-08-21 05:19:36.150] [DEBUG] QUERY OK db=45.3ms queue=0.1ms idle=72.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "WIFI", "network_type", 76557, ~N[2026-08-21 05:19:36], ~N[2026-08-21 05:19:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:36.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774852, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:36], updated_at: ~N[2026-08-21 05:19:36]}} [2026-08-21 05:19:36.151] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:19:34Z", "value" => "true"} [2026-08-21 05:19:36.210] [DEBUG] QUERY OK db=59.0ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "true", "kiosk_active", 76557, ~N[2026-08-21 05:19:36], ~N[2026-08-21 05:19:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:36.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774854, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:36], updated_at: ~N[2026-08-21 05:19:36]}} [2026-08-21 05:19:36.211] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:19:34Z", "value" => ""} [2026-08-21 05:19:36.278] [DEBUG] QUERY OK db=67.3ms queue=0.1ms idle=60.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:19:34Z", "sim_operator", 76557, ~N[2026-08-21 05:19:36], ~N[2026-08-21 05:19:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:36.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774856, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:36], updated_at: ~N[2026-08-21 05:19:36]}} [2026-08-21 05:19:36.279] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:19:34Z", "value" => "UNKNOWN"} [2026-08-21 05:19:36.336] [DEBUG] QUERY OK db=56.7ms idle=68.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "UNKNOWN", "sim_number", 76557, ~N[2026-08-21 05:19:36], ~N[2026-08-21 05:19:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:36.336] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774858, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:36], updated_at: ~N[2026-08-21 05:19:36]}} [2026-08-21 05:19:36.336] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:19:34Z", "value" => "UNKNOWN"} [2026-08-21 05:19:36.387] [DEBUG] QUERY OK db=50.7ms idle=58.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "UNKNOWN", "sim_iccid", 76557, ~N[2026-08-21 05:19:36], ~N[2026-08-21 05:19:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:36.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774860, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:36], updated_at: ~N[2026-08-21 05:19:36]}} [2026-08-21 05:19:36.388] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:19:34Z", "value" => "UNKNOWN"} [2026-08-21 05:19:36.436] [DEBUG] QUERY OK db=47.6ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "UNKNOWN", "sim_imsi", 76557, ~N[2026-08-21 05:19:36], ~N[2026-08-21 05:19:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:36.436] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774862, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:36], updated_at: ~N[2026-08-21 05:19:36]}} [2026-08-21 05:19:36.436] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:19:34Z", "value" => "UNKNOWN"} [2026-08-21 05:19:36.529] [DEBUG] QUERY OK db=92.2ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "UNKNOWN", "sim_iccid2", 76557, ~N[2026-08-21 05:19:36], ~N[2026-08-21 05:19:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:36.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774864, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:36], updated_at: ~N[2026-08-21 05:19:36]}} [2026-08-21 05:19:36.529] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:19:34Z", "value" => "UNKNOWN"} [2026-08-21 05:19:36.575] [DEBUG] QUERY OK db=45.0ms idle=93.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "UNKNOWN", "sim_imsi2", 76557, ~N[2026-08-21 05:19:36], ~N[2026-08-21 05:19:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:36.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774866, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:36], updated_at: ~N[2026-08-21 05:19:36]}} [2026-08-21 05:19:36.576] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:19:34Z", "value" => "21"} [2026-08-21 05:19:36.621] [DEBUG] QUERY OK db=44.4ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "21", "data_usage_mb", 76557, ~N[2026-08-21 05:19:36], ~N[2026-08-21 05:19:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:36.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774868, itemkey: "data_usage_mb", value: "21", timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:36], updated_at: ~N[2026-08-21 05:19:36]}} [2026-08-21 05:19:36.621] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:19:34Z", "value" => "0"} [2026-08-21 05:19:36.655] [DEBUG] QUERY OK db=33.6ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "0", "mobile_data_mb", 76557, ~N[2026-08-21 05:19:36], ~N[2026-08-21 05:19:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:36.656] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774870, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:36], updated_at: ~N[2026-08-21 05:19:36]}} [2026-08-21 05:19:36.656] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:19:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:19:36.692] [DEBUG] QUERY OK db=33.2ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:19:34Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76557, ~N[2026-08-21 05:19:36], ~N[2026-08-21 05:19:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:19:36.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 774872, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:19:34Z", message: nil, status_log_id: 76557, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:19:36], updated_at: ~N[2026-08-21 05:19:36]}} [2026-08-21 05:19:51.908] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T05:19:31Z"} [2026-08-21 05:19:51.909] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:19:31Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 32, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:19:51.912] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T05:19:31Z"} [2026-08-21 05:19:51.912] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:19:31Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 33, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:19:51.914] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T05:19:31Z"} [2026-08-21 05:19:51.914] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:19:31Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 34, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:19:55.167] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T05:19:14Z"} [2026-08-21 05:19:55.168] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:19:14Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 28, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:20:00.964] [INFO ] GET /admin/settlements/summary [2026-08-21 05:20:00.964] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 05:20:00.966] [DEBUG] QUERY OK source="users_tokens" db=0.7ms idle=1735.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)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:20:00.965693Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 05:20:00.967] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=952.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:20:00.969] [DEBUG] QUERY OK source="merchant_adjustments" db=1.1ms idle=161.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:20:00.970] [DEBUG] QUERY OK source="core_transactions" db=0.9ms idle=1.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:20:00.972] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.3ms idle=2.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:20:00.973] [INFO ] Sent 200 in 9ms [2026-08-21 05:20:01.645] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 35µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Sx0OKRVwdDsjDxJdJFMXXBcqW2EMEyIb-BQpC8BQL8EhV1qheXnQZEaV", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 05:20:02.482] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "f__YVH6jo7W5rbf4rr50VVCM", "live_socket_id" => "users_sessions:jyq_OqdMqka0uVK8iPzNvmYuNByLIEJVbWW0HHCRW-o=", "user_token" => <<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>} [2026-08-21 05:20:02.484] [DEBUG] QUERY OK source="users_tokens" db=1.5ms queue=0.1ms idle=250.7ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:20:02.482481Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 05:20:02.494] [DEBUG] QUERY OK source="core_transactions" db=4.6ms queue=2.7ms idle=1515.4ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:20:02.496] [DEBUG] QUERY OK source="merchant_adjustments" db=1.5ms idle=680.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:20:02.498] [DEBUG] QUERY OK source="core_transactions" db=1.9ms idle=2.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:20:02.501] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=1.1ms idle=2.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:20:02.501] [DEBUG] Replied in 18ms [2026-08-21 05:20:06.304] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-17", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 05:20:06.308] [DEBUG] QUERY OK source="core_transactions" db=2.7ms queue=0.3ms idle=1404.4ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-17], ~D[2026-08-21], ~D[2026-07-17], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:20:06.309] [DEBUG] QUERY OK source="merchant_adjustments" db=1.0ms idle=472.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-17], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:20:06.311] [DEBUG] QUERY OK source="core_transactions" db=2.0ms idle=1.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-17], ~D[2026-08-21], ~D[2026-07-17], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:20:06.323] [DEBUG] QUERY OK source="tid_masters" db=4.4ms queue=3.1ms idle=6.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:20:06.323] [DEBUG] Replied in 18ms [2026-08-21 05:20:11.492] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_to"], "_unused_merchant_mid" => "", "date_from" => "2026-07-17", "date_to" => "2026-08-17", "merchant_mid" => ""} [2026-08-21 05:20:11.494] [DEBUG] QUERY OK source="core_transactions" db=0.9ms idle=1644.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-17], ~D[2026-08-17], ~D[2026-07-17], ~D[2026-08-17]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:20:11.495] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=643.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-17], ~D[2026-08-17]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:20:11.495] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=1.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-17], ~D[2026-08-17], ~D[2026-07-17], ~D[2026-08-17]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:20:11.497] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=0.6ms idle=1.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:20:11.497] [DEBUG] Replied in 5ms [2026-08-21 05:20:30.933] [INFO ] GET /admin/settlements/summary [2026-08-21 05:20:30.934] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 05:20:30.969] [DEBUG] QUERY OK source="users_tokens" db=34.4ms idle=697.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)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:20:30.934516Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 05:20:30.971] [DEBUG] QUERY OK source="core_transactions" db=1.9ms idle=1047.7ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:20:30.973] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=46.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:20:30.974] [DEBUG] QUERY OK source="core_transactions" db=0.7ms idle=1.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:20:30.979] [DEBUG] QUERY OK source="tid_masters" db=2.2ms queue=2.4ms idle=1.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:20:30.983] [INFO ] Sent 200 in 49ms [2026-08-21 05:20:43.181] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 36µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "UTYTOA99WSIGZRlxIhMEY0AlTFF7BAs-7iLaY5oHiRNDPqbW2Wya-RHs", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 05:20:43.892] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "f__YVH6jo7W5rbf4rr50VVCM", "live_socket_id" => "users_sessions:jyq_OqdMqka0uVK8iPzNvmYuNByLIEJVbWW0HHCRW-o=", "user_token" => <<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>} [2026-08-21 05:20:43.895] [DEBUG] QUERY OK source="users_tokens" db=2.2ms idle=1651.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)) [<<143, 42, 191, 58, 167, 76, 170, 70, 180, 185, 82, 188, 136, 252, 205, 190, 102, 46, 52, 28, 139, 32, 66, 85, 109, 101, 180, 28, 112, 145, 91, 234>>, "session", ~U[2026-08-21 05:20:43.892597Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 05:20:43.896] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=0.1ms idle=923.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:20:43.897] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms idle=165.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:20:43.898] [DEBUG] QUERY OK source="core_transactions" db=0.7ms idle=1.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:20:43.900] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=1.1ms idle=1.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:20:43.900] [DEBUG] Replied in 8ms [2026-08-21 05:20:49.961] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-17", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 05:20:49.964] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=1.5ms idle=230.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-17], ~D[2026-08-21], ~D[2026-07-17], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:20:49.965] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=0.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-17], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:20:49.966] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=0.2ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-17], ~D[2026-08-21], ~D[2026-07-17], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:20:49.968] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.8ms idle=0.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:20:49.969] [DEBUG] Replied in 7ms [2026-08-21 05:20:53.998] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 05:20:54.149] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_to"], "_unused_merchant_mid" => "", "date_from" => "2026-07-17", "date_to" => "2026-08-17", "merchant_mid" => ""} [2026-08-21 05:20:54.150] [DEBUG] QUERY OK source="core_transactions" db=1.0ms idle=417.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-17], ~D[2026-08-17], ~D[2026-07-17], ~D[2026-08-17]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 05:20:54.151] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms idle=0.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-17], ~D[2026-08-17]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 05:20:54.152] [DEBUG] QUERY OK source="core_transactions" db=0.4ms idle=0.2ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-17], ~D[2026-08-17], ~D[2026-07-17], ~D[2026-08-17]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 05:20:54.153] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.4ms idle=0.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 05:20:54.153] [DEBUG] Replied in 4ms [2026-08-21 05:21:44.821] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 05:22:26.169] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 05:22:26.171] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=1057.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-08-21 05:22:26.172] [DEBUG] QUERY OK source="filter_usage" db=0.7ms idle=524.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-08-21 05:22:26.173] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 05:22:26.610] [INFO ] Running offline device check... [2026-08-21 05:22:26.610] [INFO ] Starting offline device check... [2026-08-21 05:22:26.612] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=439.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-08-21 05:22:26.621] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.5ms idle=440.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:22:26.628] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.630] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.631] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.632] [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-08-21 05:22:26.632] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.633] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.634] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.635] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.657] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.665] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.4ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.668] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.668] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.669] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.690] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.691] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=21.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.693] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.695] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.696] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.697] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.736] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=37.7ms queue=0.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.737] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.2ms idle=39.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:22:26.738] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.744] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.745] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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-08-21 05:22:26.749] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.750] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.752] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.757] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms queue=0.6ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.758] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=5.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.759] [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-08-21 05:22:26.760] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.761] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.762] [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-08-21 05:22:26.763] [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-08-21 05:22:26.764] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.764] [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-08-21 05:22:26.765] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 05:22:26.766] [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-08-21 05:22:26.768] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.768] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.769] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.770] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.771] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.772] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.773] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.774] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.774] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.777] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:22:26.777] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-08-21 05:22:26.778] [INFO ] Offline device check completed successfully [2026-08-21 05:27:26.779] [INFO ] Running offline device check... [2026-08-21 05:27:26.779] [INFO ] Starting offline device check... [2026-08-21 05:27:26.780] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=1059.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 05:27:26.793] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.8ms idle=58.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 05:27:26.802] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.805] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.9ms idle=9.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.807] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.2ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.808] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.809] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.811] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms decode=0.1ms queue=0.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 05:27:26.812] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.813] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.817] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.826] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.832] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=10.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.849] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.9ms 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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.862] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.0ms idle=20.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:27:26.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.866] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.867] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.897] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=29.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.899] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms decode=0.1ms 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 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.901] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.903] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.904] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.905] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.953] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=47.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.955] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=48.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:27:26.957] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.968] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.970] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=11.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.974] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.976] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.977] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.984] [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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.985] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.986] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.990] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.992] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.994] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.995] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.997] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:26.998] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:27.000] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:27.001] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:27.004] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.5ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:27.008] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms decode=1.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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:27.010] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.3ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:27.011] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:27.012] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:27.013] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:27.016] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:27.017] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:27.020] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:27.022] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:27:27.022] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-08-21 05:27:27.023] [INFO ] Offline device check completed successfully [2026-08-21 05:31:53.960] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 05:32:27.027] [INFO ] Running offline device check... [2026-08-21 05:32:27.027] [INFO ] Starting offline device check... [2026-08-21 05:32:27.028] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=857.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-08-21 05:32:27.042] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.051] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.8ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.053] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.054] [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-08-21 05:32:27.054] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.055] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.055] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.056] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.056] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.059] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 05:32:27.065] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.066] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.097] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms queue=0.3ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.099] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.100] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.104] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.126] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.7ms 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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.129] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.131] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.133] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.134] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.135] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.178] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=43.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-08-21 05:32:27.179] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.180] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.189] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.190] [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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.193] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.195] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.197] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.202] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.203] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.204] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 05:32:27.205] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.205] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.207] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.208] [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-08-21 05:32:27.208] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.209] [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-08-21 05:32:27.210] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.210] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.212] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.213] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.214] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.215] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.217] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.2ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.220] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.221] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.221] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.222] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.224] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:32:27.224] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-08-21 05:32:27.224] [INFO ] Offline device check completed successfully [2026-08-21 05:32:30.855] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 05:32:33.718] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 05:32:35.856] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 05:32:40.427] [ERROR] MyXQL.Connection (#PID<0.1063.0> (:proc_lib)) disconnected: ** (DBConnection.ConnectionError) client #PID<0.1138.0> (:proc_lib) timed out because it queued and checked out the connection for longer than 15000ms #PID<0.1138.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:848: DBConnection.execute/4 (ecto_sql 3.13.4) lib/ecto/adapters/myxql/connection.ex:41: Ecto.Adapters.MyXQL.Connection.execute/4 (ecto_sql 3.13.4) lib/ecto/adapters/sql.ex:1055: 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/sunny/tmsapp/tmsuat_apps/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-08-21 05:33:33.982] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 05:33:38.722] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 05:33:38.985] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 05:33:39.188] [ERROR] MyXQL.Connection (#PID<0.1063.0> (:proc_lib)) disconnected: ** (DBConnection.ConnectionError) client #PID<0.1138.0> (:proc_lib) timed out because it queued and checked out the connection for longer than 15000ms #PID<0.1138.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:848: DBConnection.execute/4 (ecto_sql 3.13.4) lib/ecto/adapters/myxql/connection.ex:41: Ecto.Adapters.MyXQL.Connection.execute/4 (ecto_sql 3.13.4) lib/ecto/adapters/sql.ex:1055: 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/sunny/tmsapp/tmsuat_apps/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-08-21 05:37:26.174] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 05:37:26.176] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.6ms idle=1456.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-08-21 05:37:26.178] [DEBUG] QUERY OK source="filter_usage" db=1.1ms idle=455.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-08-21 05:37:26.178] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 05:37:27.225] [INFO ] Running offline device check... [2026-08-21 05:37:27.225] [INFO ] Starting offline device check... [2026-08-21 05:37:27.227] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=500.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 05:37:27.240] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.8ms idle=5.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.251] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.2ms idle=13.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.253] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.5ms 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 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.255] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.257] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.258] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.258] [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-08-21 05:37:27.259] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.259] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.261] [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-08-21 05:37:27.266] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms decode=0.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.267] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.285] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.7ms queue=2.9ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.291] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms queue=0.1ms 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 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.295] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms queue=0.2ms idle=8.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.297] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.4ms idle=5.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.299] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.320] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.323] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=21.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.325] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.330] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms queue=0.1ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.331] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=5.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.332] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.374] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=41.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.375] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=42.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:37:27.378] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.387] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.389] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.392] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.393] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.394] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.398] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.399] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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-08-21 05:37:27.400] [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-08-21 05:37:27.401] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.402] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.404] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.405] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.405] [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-08-21 05:37:27.406] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.407] [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-08-21 05:37:27.408] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.409] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.410] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.411] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.412] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.413] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.415] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.416] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.418] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.419] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.423] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms queue=0.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:37:27.423] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-08-21 05:37:27.423] [INFO ] Offline device check completed successfully [2026-08-21 05:42:27.424] [INFO ] Running offline device check... [2026-08-21 05:42:27.424] [INFO ] Starting offline device check... [2026-08-21 05:42:27.426] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=0.1ms idle=1153.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 05:42:27.442] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.3ms queue=0.1ms idle=735.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:42:27.454] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.2ms idle=16.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:42:27.456] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.3ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.457] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.461] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.462] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.464] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.465] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.466] [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-08-21 05:42:27.472] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.482] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.1ms 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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.484] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.511] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.9ms queue=0.1ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.522] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.5ms idle=27.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:42:27.527] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.528] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.530] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.563] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=32.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.566] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms 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 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.568] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.572] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.576] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms queue=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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.578] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.630] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=52.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.633] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=52.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:42:27.636] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.646] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.647] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=9.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.650] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.653] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.655] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.2ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.659] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.660] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.661] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.664] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.665] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.668] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms queue=0.2ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.669] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.670] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.671] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.672] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.673] [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-08-21 05:42:27.674] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.675] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.676] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.678] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.679] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.681] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.682] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.682] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.683] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.685] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:42:27.685] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-08-21 05:42:27.685] [INFO ] Offline device check completed successfully [2026-08-21 05:47:27.686] [INFO ] Running offline device check... [2026-08-21 05:47:27.686] [INFO ] Starting offline device check... [2026-08-21 05:47:27.695] [DEBUG] QUERY OK source="tms_terminals" db=7.1ms idle=1372.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 05:47:27.712] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.7ms idle=686.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:47:27.722] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.6ms idle=17.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:47:27.724] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=10.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.727] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.728] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.729] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.730] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.731] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.732] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.738] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.748] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.749] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=10.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.769] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.777] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.4ms idle=20.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.782] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=8.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.784] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=6.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.785] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.811] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=25.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.816] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=26.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.822] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms 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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.826] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms queue=0.1ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.830] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms queue=0.2ms idle=5.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.833] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.879] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=45.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-08-21 05:47:27.881] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms queue=0.2ms idle=46.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:47:27.882] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.894] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.895] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=12.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.901] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.907] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms queue=0.1ms idle=6.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.911] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms 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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.920] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=5.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.923] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.925] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.926] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.928] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.930] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.931] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.932] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.935] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.936] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.3ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.937] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.938] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.941] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.942] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.2ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.942] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.943] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.943] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.944] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.945] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.946] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:47:27.946] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-08-21 05:47:27.948] [INFO ] Offline device check completed successfully [2026-08-21 05:52:26.179] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 05:52:26.182] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.9ms idle=810.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-08-21 05:52:26.182] [DEBUG] QUERY OK source="filter_usage" db=0.5ms idle=663.1ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 05:52:26.183] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 05:52:27.949] [INFO ] Running offline device check... [2026-08-21 05:52:27.949] [INFO ] Starting offline device check... [2026-08-21 05:52:27.951] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.3ms idle=581.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-08-21 05:52:27.959] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.2ms idle=427.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:52:27.965] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:27.966] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:27.967] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:27.968] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:27.968] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:27.969] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:27.970] [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-08-21 05:52:27.970] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:27.972] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:27.977] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:27.977] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 05:52:27.990] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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-08-21 05:52:27.995] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:27.997] [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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:27.998] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:27.998] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.015] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.017] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.018] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.020] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.021] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.022] [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-08-21 05:52:28.063] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=40.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.064] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=41.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:52:28.064] [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-08-21 05:52:28.071] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.071] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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-08-21 05:52:28.076] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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-08-21 05:52:28.077] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.078] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.082] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.084] [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-08-21 05:52:28.085] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.085] [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-08-21 05:52:28.087] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.088] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.089] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.090] [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-08-21 05:52:28.091] [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-08-21 05:52:28.092] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.093] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.094] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.095] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.095] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.096] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.097] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.098] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.099] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:52:28.099] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-08-21 05:52:28.099] [INFO ] Offline device check completed successfully [2026-08-21 05:55:10.079] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 05:56:14.751] [INFO ] [Ysp.Scheduler] Started. SFTP in 21h 3m, MIS in 2h 3m [2026-08-21 05:56:14.794] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 05:56:14.806] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 05:56:16.539] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 05:56:16.540] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 05:56:16.542] [INFO ] Building initial filter cache... [2026-08-21 05:56:16.556] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.6ms idle=840.8ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 05:56:16.567] [DEBUG] QUERY OK source="filter_usage" db=1.4ms queue=0.3ms idle=446.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-08-21 05:56:16.567] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 05:56:16.623] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 05:56:16.635] [ERROR] Running PlatformWeb.Endpoint with Bandit 1.10.2 at http failed, port 5329 already in use [2026-08-21 05:56:16.635] [INFO ] Application platform_web exited: PlatformWeb.Application.start(:normal, []) returned an error: shutdown: failed to start child: PlatformWeb.Endpoint ** (EXIT) shutdown: failed to start child: {PlatformWeb.Endpoint, :http} ** (EXIT) shutdown: failed to start child: :listener ** (EXIT) :eaddrinuse [2026-08-21 05:56:16.637] [INFO ] Application da_product_app exited: :stopped [2026-08-21 05:56:16.637] [INFO ] Application saas_kit exited: :stopped [2026-08-21 05:56:16.637] [INFO ] Application httpoison exited: :stopped [2026-08-21 05:56:16.637] [INFO ] Application salad_ui exited: :stopped [2026-08-21 05:56:16.637] [INFO ] Application tw_merge exited: :stopped [2026-08-21 05:56:16.637] [INFO ] Application deep_merge exited: :stopped [2026-08-21 05:56:16.637] [INFO ] Application nimble_parsec exited: :stopped [2026-08-21 05:56:16.638] [INFO ] Application petal_components exited: :stopped [2026-08-21 05:56:16.638] [INFO ] Application phoenix_html_helpers exited: :stopped [2026-08-21 05:56:16.638] [INFO ] Application cors_plug exited: :stopped [2026-08-21 05:56:16.638] [INFO ] Application dns_cluster exited: :stopped [2026-08-21 05:56:16.638] [INFO ] Application telemetry_poller exited: :stopped [2026-08-21 05:56:16.641] [INFO ] Application swoosh exited: :stopped [2026-08-21 05:56:16.641] [INFO ] Application gen_smtp exited: :stopped [2026-08-21 05:56:16.643] [INFO ] Application ranch exited: :stopped [2026-08-21 05:56:16.644] [INFO ] Application tailwind exited: :stopped [2026-08-21 05:56:16.646] [INFO ] Application esbuild exited: :stopped [2026-08-21 05:56:16.647] [INFO ] Application phoenix_live_dashboard exited: :stopped [2026-08-21 05:56:16.647] [INFO ] Application telemetry_metrics exited: :stopped [2026-08-21 05:56:16.648] [INFO ] Application phoenix_live_view exited: :stopped [2026-08-21 05:56:16.650] [INFO ] Application phoenix_live_reload exited: :stopped [2026-08-21 05:56:16.650] [INFO ] Application file_system exited: :stopped [2026-08-21 05:56:16.651] [INFO ] Application phoenix_ecto exited: :stopped [2026-08-21 05:56:16.651] [INFO ] Application premailex exited: :stopped [2026-08-21 05:56:16.651] [INFO ] Application floki exited: :stopped [2026-08-21 05:56:16.652] [INFO ] Application cachex exited: :stopped [2026-08-21 05:56:16.652] [INFO ] Application sleeplocks exited: :stopped [2026-08-21 05:56:16.652] [INFO ] Application jumper exited: :stopped [2026-08-21 05:56:16.653] [INFO ] Application ex_hash_ring exited: :stopped [2026-08-21 05:56:16.653] [INFO ] Application eternal exited: :stopped [2026-08-21 05:56:16.653] [INFO ] Application unsafe exited: :stopped [2026-08-21 05:56:16.653] [INFO ] Application bcrypt_elixir exited: :stopped [2026-08-21 05:56:16.653] [INFO ] Application comeonin exited: :stopped [2026-08-21 05:56:16.654] [INFO ] :alarm_handler: {:clear, :system_memory_high_watermark} [2026-08-21 05:56:16.654] [INFO ] :alarm_handler: {:clear, {:disk_almost_full, ~c"/"}} [2026-08-21 05:56:16.655] [INFO ] Application os_mon exited: :stopped [2026-08-21 05:56:16.656] [INFO ] Application sasl exited: :stopped [2026-08-21 05:56:16.657] [INFO ] Application risk_core exited: :stopped [2026-08-21 05:56:16.658] [INFO ] Application settlement_core exited: :stopped [2026-08-21 05:56:16.658] [INFO ] Application elixlsx exited: :stopped [2026-08-21 05:56:16.658] [INFO ] Application xmerl exited: :stopped [2026-08-21 05:56:16.659] [INFO ] Application phoenix exited: :stopped [2026-08-21 05:56:16.659] [INFO ] Application websock_adapter exited: :stopped [2026-08-21 05:56:16.660] [INFO ] Application bandit exited: :stopped [2026-08-21 05:56:16.660] [INFO ] Application thousand_island exited: :stopped [2026-08-21 05:56:16.660] [INFO ] Application websock exited: :stopped [2026-08-21 05:56:16.660] [INFO ] Application phoenix_template exited: :stopped [2026-08-21 05:56:16.660] [INFO ] Application phoenix_html exited: :stopped [2026-08-21 05:56:16.660] [INFO ] Application ssh exited: :stopped [2026-08-21 05:56:16.661] [INFO ] Application tms_core exited: :stopped [2026-08-21 05:56:16.662] [INFO ] Application req exited: :stopped [2026-08-21 05:56:16.663] [INFO ] Application plug exited: :stopped [2026-08-21 05:56:16.664] [INFO ] Application plug_crypto exited: :stopped [2026-08-21 05:56:16.664] [INFO ] Application finch exited: :stopped [2026-08-21 05:56:16.664] [INFO ] Application mime exited: :stopped [2026-08-21 05:56:16.664] [INFO ] Application nimble_options exited: :stopped [2026-08-21 05:56:16.665] [INFO ] Application nimble_pool exited: :stopped [2026-08-21 05:56:16.665] [INFO ] Application mint exited: :stopped [2026-08-21 05:56:16.665] [INFO ] Application hpax exited: :stopped [2026-08-21 05:56:16.665] [INFO ] Application castore exited: :stopped [2026-08-21 05:56:16.666] [INFO ] Application timex exited: :stopped [2026-08-21 05:56:16.666] [INFO ] Application gettext exited: :stopped [2026-08-21 05:56:16.666] [INFO ] Application expo exited: :stopped [2026-08-21 05:56:16.667] [INFO ] Application combine exited: :stopped [2026-08-21 05:56:16.668] [INFO ] Application tzdata exited: :stopped [2026-08-21 05:56:16.669] [INFO ] Application hackney exited: :stopped [2026-08-21 05:56:16.669] [INFO ] Application metrics exited: :stopped [2026-08-21 05:56:16.669] [INFO ] Application ssl_verify_fun exited: :stopped [2026-08-21 05:56:16.669] [INFO ] Application parse_trans exited: :stopped [2026-08-21 05:56:16.669] [INFO ] Application syntax_tools exited: :stopped [2026-08-21 05:56:16.669] [INFO ] Application certifi exited: :stopped [2026-08-21 05:56:16.669] [INFO ] Application mimerl exited: :stopped [2026-08-21 05:56:16.669] [INFO ] Application idna exited: :stopped [2026-08-21 05:56:16.670] [INFO ] Application unicode_util_compat exited: :stopped [2026-08-21 05:56:16.684] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:56:16.684] [INFO ] Incoming JSON payload: {"oid":"bb3abdf7-70a0-4367-874b-1672482247b1","sn":"98251226730001","uploadTime":"2026-08-21T05:56:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:56:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:56:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:56:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:56:15Z"},{"itemkey":"ram_free_mb","value":"877","timestamp":"2026-08-21T05:56:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:56:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:56:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:56:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:56:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:56:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:56:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:56:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:56:15Z"},{"itemkey":"data_usage_mb","value":"23","timestamp":"2026-08-21T05:56:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:56: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:56:16.690] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bb3abdf7-70a0-4367-874b-1672482247b1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:56:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:56:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:56:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:56:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:56:15Z", "value" => "877"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:56:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:56:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:56:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:56:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:56:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:56:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:56:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:56:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:56:15Z", "value" => "23"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:56:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:56: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:56:15Z", "vendor" => "morefun"} [2026-08-21 05:56:16.690] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:56:16.699] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:56:16.699] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:56:16.703] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.7ms idle=135.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-08-21 05:56:16.704] [DEBUG] QUERY OK source="parameter_templates" db=0.2ms queue=0.6ms idle=0.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 05:56:16.705] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:56:16.728] [INFO ] Application platform_core exited: :stopped [2026-08-21 05:56:16.730] [INFO ] Application tortoise exited: :stopped [2026-08-21 05:56:16.730] [INFO ] Application gen_state_machine exited: :stopped [2026-08-21 05:56:16.731] [INFO ] Application oban exited: :stopped [2026-08-21 05:56:16.732] [INFO ] Application phoenix_pubsub exited: :stopped [2026-08-21 05:56:16.733] [INFO ] Application ecto_sql exited: :stopped [2026-08-21 05:56:16.733] [INFO ] Application myxql exited: :stopped [2026-08-21 05:56:16.733] [INFO ] Application db_connection exited: :stopped [2026-08-21 05:56:16.734] [INFO ] Application ecto exited: :stopped [2026-08-21 05:56:16.734] [INFO ] Application jason exited: :stopped [2026-08-21 05:56:16.735] [INFO ] Application decimal exited: :stopped [2026-08-21 05:56:16.737] [INFO ] Application telemetry exited: :stopped [2026-08-21 05:56:16.737] [INFO ] Application eex exited: :stopped [2026-08-21 05:56:16.739] [INFO ] Application runtime_tools exited: :stopped [2026-08-21 05:57:28.100] [INFO ] Running offline device check... [2026-08-21 05:57:28.100] [INFO ] Starting offline device check... [2026-08-21 05:57:28.101] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=1392.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-08-21 05:57:28.109] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.0ms idle=556.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:57:28.115] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms 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-08-21 05:57:28.117] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.117] [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-08-21 05:57:28.118] [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-08-21 05:57:28.119] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.120] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.121] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.122] [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-08-21 05:57:28.123] [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-08-21 05:57:28.128] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.129] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.1ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.141] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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-08-21 05:57:28.146] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.148] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=5.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.149] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.150] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.167] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.168] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=17.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 05:57:28.169] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.171] [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-08-21 05:57:28.172] [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-08-21 05:57:28.172] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.209] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=35.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.210] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=36.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.210] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.220] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.221] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.223] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.224] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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-08-21 05:57:28.225] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.229] [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-08-21 05:57:28.229] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.230] [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-08-21 05:57:28.231] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.232] [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-08-21 05:57:28.234] [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-08-21 05:57:28.234] [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-08-21 05:57:28.235] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.236] [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-08-21 05:57:28.236] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.238] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.238] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.239] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.240] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.240] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.241] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.242] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.243] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.243] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.244] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.245] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 05:57:28.245] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-08-21 05:57:28.245] [INFO ] Offline device check completed successfully [2026-08-21 05:58:09.323] [INFO ] SIGTERM received - shutting down [2026-08-21 05:58:09.340] [INFO ] :alarm_handler: {:clear, :system_memory_high_watermark} [2026-08-21 05:58:09.341] [INFO ] :alarm_handler: {:clear, {:disk_almost_full, ~c"/"}} [2026-08-21 05:58:39.919] [INFO ] [Ysp.Scheduler] Started. SFTP in 21h 1m, MIS in 2h 1m [2026-08-21 05:58:39.954] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 05:58:39.962] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 05:58:41.483] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 05:58:41.483] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 05:58:41.483] [INFO ] Building initial filter cache... [2026-08-21 05:58:41.497] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.4ms idle=851.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-08-21 05:58:41.505] [DEBUG] QUERY OK source="filter_usage" db=0.3ms queue=0.4ms idle=16.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-08-21 05:58:41.505] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 05:58:41.596] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 05:58:41.625] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-08-21 05:58:41.641] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-08-21 05:58:45.107] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:58:45.109] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T05:58:44Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T05:58:44Z","value":"28"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T05:58:44Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T05:58:44Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T05:58:44Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T05:58:44Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T05:58:44Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T05:58:44Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T05:58:44Z","vendor":"MoreFun"} [2026-08-21 05:58:45.118] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T05:58:44Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T05:58:44Z", "value" => "28"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T05:58:44Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T05:58:44Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T05:58:44Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T05:58:44Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T05:58:44Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T05:58:44Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:58:44Z", "vendor" => "MoreFun"} [2026-08-21 05:58:45.119] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 05:58:45.134] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:58:45.134] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 05:58:45.144] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=3.8ms idle=1490.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-08-21 05:58:45.149] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=2.7ms idle=492.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-08-21 05:58:45.165] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms queue=1.4ms idle=11.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-08-21 05:58:45.208] [DEBUG] QUERY OK source="parameter_definitions" db=1.4ms queue=2.2ms idle=55.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-08-21 05:58:45.252] [DEBUG] QUERY OK source="pos_terminal" db=0.6ms queue=2.5ms idle=91.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-08-21 05:58:45.296] [DEBUG] QUERY OK source="pos_merchant" db=0.2ms queue=2.2ms idle=85.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 05:58:45.311] [DEBUG] QUERY OK db=3.3ms queue=1.9ms idle=1815.9ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["626165170000000"] [2026-08-21 05:58:45.311] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 05:58:45.332] [DEBUG] QUERY OK source="pos_terminal_data" db=2.1ms queue=3.6ms idle=74.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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 05:58:45.343] [DEBUG] QUERY OK source="address" db=0.6ms queue=0.5ms idle=46.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 05:58:45.354] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 05:58:45.399] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 05:58:45.503] [DEBUG] QUERY OK db=38.3ms queue=0.4ms idle=112.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b8a37ddaef78bc13ea70dea8a31cc0f3ffdcf589258574d9c731a41f7d659a64", 228, 938, ~U[2026-08-21 05:58:45Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 05:58:45], ~N[2026-08-21 05:58:45]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 05:58:45.504] [INFO ] AutoPushService: Created push log 48257 for MF919 params.zip [2026-08-21 05:58:45.517] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 228, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 05:58:45.517] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 05:58:45.528] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 05:58:45.535] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.4ms idle=190.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-08-21 05:58:45.550] [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-08-21 05:58:45.593] [DEBUG] QUERY OK db=40.3ms queue=1.1ms idle=67.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "7531223ed0e3f65fa2a3052117be3fba7c2129237c7117e4b7005e462d66eeed", 5346, 17947, ~U[2026-08-21 05:58:45Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 05:58:45], ~N[2026-08-21 05:58:45]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 05:58:45.594] [INFO ] AutoPushService: Created push log 48258 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 05:58:45.599] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 5346, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 05:58:45.599] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 05:58:45.599] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 05:58:45.602] [DEBUG] QUERY OK source="config_file_versions" db=2.9ms idle=64.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 05:58:45.618] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 05:58:45.623] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms queue=1.1ms idle=25.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 05:58:45.624] [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-08-21 05:58:45.863] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 05:58:45.864] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 05:58:45.865] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 05:58:45.881] [DEBUG] QUERY OK source="config_file_versions" db=11.6ms queue=1.3ms idle=245.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-08-21 05:58:45.882] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 05:58:45.882] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 05:58:45.939] [DEBUG] QUERY OK source="tms_terminals" db=3.5ms queue=1.2ms idle=262.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:58:45.952] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:58:46.041] [DEBUG] QUERY OK source="tms_terminals" db=85.1ms queue=3.0ms idle=71.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 05:58:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:58:46.051] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=1.0ms idle=110.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-08-21 05:58:46.053] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=11.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 05:58:46.054] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=2.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 05:58:46.054] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 05:58:46.098] [DEBUG] QUERY OK source="parameter_push_logs" db=26.5ms queue=1.6ms idle=16.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-08-21 05:28:46]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 05:58:46.098] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 05:58:46.098] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 05:58:46.102] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=47.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 05:58:46.103] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=4.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 05:58:46.104] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 05:58:46.105] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=2.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:58:46.174] [DEBUG] QUERY OK source="tms_terminals" db=67.8ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:58:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:58:46.231] [DEBUG] QUERY OK db=41.8ms queue=0.8ms idle=83.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T05:58:44Z", ~N[2026-08-21 05:58:46], ~N[2026-08-21 05:58:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:58:46.256] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76659, oid: "organization_id", upload_time: "2026-08-21T05:58:44Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:46], updated_at: ~N[2026-08-21 05:58:46]} [2026-08-21 05:58:46.258] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T05:58:44Z", "value" => "online"} [2026-08-21 05:58:46.321] [DEBUG] QUERY OK db=55.7ms queue=1.6ms idle=89.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T05:58:44Z", "online", "status", 76659, ~N[2026-08-21 05:58:46], ~N[2026-08-21 05:58:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:46.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776334, itemkey: "status", value: "online", timestamp: "2026-08-21T05:58:44Z", message: "Terminal status update", status_log_id: 76659, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:46], updated_at: ~N[2026-08-21 05:58:46]}} [2026-08-21 05:58:46.321] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 05:58:46.321] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T05:58:44Z", "value" => "28"} [2026-08-21 05:58:46.348] [DEBUG] QUERY OK db=25.7ms queue=0.5ms idle=90.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T05:58:44Z", "28", "battery", 76659, ~N[2026-08-21 05:58:46], ~N[2026-08-21 05:58:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:46.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776335, itemkey: "battery", value: "28", timestamp: "2026-08-21T05:58:44Z", message: "Battery level", status_log_id: 76659, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:46], updated_at: ~N[2026-08-21 05:58:46]}} [2026-08-21 05:58:46.350] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T05:58:44Z", "value" => "online"} [2026-08-21 05:58:46.415] [DEBUG] QUERY OK db=63.1ms queue=0.1ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T05:58:44Z", "online", "network", 76659, ~N[2026-08-21 05:58:46], ~N[2026-08-21 05:58:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:46.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776336, itemkey: "network", value: "online", timestamp: "2026-08-21T05:58:44Z", message: "Network connectivity", status_log_id: 76659, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:46], updated_at: ~N[2026-08-21 05:58:46]}} [2026-08-21 05:58:46.415] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 05:58:46.417] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T05:58:44Z", "value" => "0"} [2026-08-21 05:58:46.457] [DEBUG] QUERY OK db=37.7ms queue=0.3ms idle=71.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T05:58:44Z", "0", "cpu", 76659, ~N[2026-08-21 05:58:46], ~N[2026-08-21 05:58:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:46.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776337, itemkey: "cpu", value: "0", timestamp: "2026-08-21T05:58:44Z", message: "CPU usage percentage", status_log_id: 76659, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:46], updated_at: ~N[2026-08-21 05:58:46]}} [2026-08-21 05:58:46.459] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T05:58:44Z", "value" => "1.0.0"} [2026-08-21 05:58:46.506] [DEBUG] QUERY OK db=43.6ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T05:58:44Z", "1.0.0", "parameter_config", 76659, ~N[2026-08-21 05:58:46], ~N[2026-08-21 05:58:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:46.507] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776338, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T05:58:44Z", message: "Current parameters version", status_log_id: 76659, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:46], updated_at: ~N[2026-08-21 05:58:46]}} [2026-08-21 05:58:46.507] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T05:58:44Z", "value" => "1.0.1"} [2026-08-21 05:58:46.550] [DEBUG] QUERY OK db=42.6ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T05:58:44Z", "1.0.1", "emv_config", 76659, ~N[2026-08-21 05:58:46], ~N[2026-08-21 05:58:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:46.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776339, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T05:58:44Z", message: "Current EMV config version", status_log_id: 76659, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:46], updated_at: ~N[2026-08-21 05:58:46]}} [2026-08-21 05:58:46.550] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T05:58:44Z", "value" => ""} [2026-08-21 05:58:46.599] [DEBUG] QUERY OK db=41.9ms queue=1.8ms idle=51.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T05:58:44Z", "keys_config", 76659, ~N[2026-08-21 05:58:46], ~N[2026-08-21 05:58:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:46.599] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776340, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T05:58:44Z", message: "Current keys config version", status_log_id: 76659, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:46], updated_at: ~N[2026-08-21 05:58:46]}} [2026-08-21 05:58:46.599] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T05:58:44Z", "value" => "3.8.7.3"} [2026-08-21 05:58:46.655] [DEBUG] QUERY OK db=53.7ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T05:58:44Z", "3.8.7.3", "application", 76659, ~N[2026-08-21 05:58:46], ~N[2026-08-21 05:58:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:46.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776341, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T05:58:44Z", message: "Current application version", status_log_id: 76659, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:46], updated_at: ~N[2026-08-21 05:58:46]}} [2026-08-21 05:58:46.655] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T05:58:45Z"} [2026-08-21 05:58:46.661] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:58:45Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 2, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:58:47.455] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 05:58:47.456] [INFO ] Incoming JSON payload: {"oid":"b8e3e261-ddbb-43f0-8cb3-76ea11d3a575","sn":"98251226730001","uploadTime":"2026-08-21T05:58:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"ram_free_mb","value":"872","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"data_usage_mb","value":"23","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T05:58:47Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 05:58:47.459] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b8e3e261-ddbb-43f0-8cb3-76ea11d3a575", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:58:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T05:58:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:58:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:58:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:58:47Z", "value" => "872"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:58:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:58:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:58:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:58:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:58:47Z", "value" => "23"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:58:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:58:47Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T05:58:47Z", "vendor" => "morefun"} [2026-08-21 05:58:47.459] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 05:58:47.459] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 05:58:47.459] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 05:58:47.461] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=804.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-08-21 05:58:47.463] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=1.4ms idle=783.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-08-21 05:58:47.464] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 05:58:47.472] [DEBUG] QUERY OK source="tms_terminals" db=5.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 05:58:47.531] [DEBUG] QUERY OK source="tms_terminals" db=16.0ms queue=42.5ms idle=8.9ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 05:58:47], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 05:58:47.532] [INFO ] Terminal updated: 98251226730001 [2026-08-21 05:58:47.533] [INFO ] Event published: terminal_updated [2026-08-21 05:58:47.533] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 05:58:47.533] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 05:58:47.533] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 05:58:47.578] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.7ms queue=0.8ms idle=105.3ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 05:58:47], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 05:58:47.587] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms queue=1.0ms 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 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 05:58:47.602] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms queue=2.3ms idle=12.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-08-21 05:58:47.603] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 05:58:47.633] [DEBUG] QUERY OK source="tms_terminals" db=48.9ms queue=2.7ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 05:58:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 05:58:47.634] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 05:58:47.635] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.6ms idle=32.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 05:58:47.690] [DEBUG] QUERY OK source="tms_terminals" db=53.5ms queue=0.6ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 05:58:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 05:58:47.771] [DEBUG] QUERY OK db=77.0ms queue=0.9ms idle=11.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b8e3e261-ddbb-43f0-8cb3-76ea11d3a575", "2026-08-21T05:58:47Z", ~N[2026-08-21 05:58:47], ~N[2026-08-21 05:58:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 05:58:47.771] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76662, oid: "b8e3e261-ddbb-43f0-8cb3-76ea11d3a575", upload_time: "2026-08-21T05:58:47Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:47], updated_at: ~N[2026-08-21 05:58:47]} [2026-08-21 05:58:47.771] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T05:58:47Z", "value" => "morefun"} [2026-08-21 05:58:47.809] [DEBUG] QUERY OK db=31.0ms queue=1.2ms idle=87.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "morefun", "vendor", 76662, ~N[2026-08-21 05:58:47], ~N[2026-08-21 05:58:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:47.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776342, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:47], updated_at: ~N[2026-08-21 05:58:47]}} [2026-08-21 05:58:47.810] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T05:58:47Z", "value" => "kiosk_launcher"} [2026-08-21 05:58:47.872] [DEBUG] QUERY OK db=57.4ms queue=1.1ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "kiosk_launcher", "model", 76662, ~N[2026-08-21 05:58:47], ~N[2026-08-21 05:58:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:47.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776344, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:47], updated_at: ~N[2026-08-21 05:58:47]}} [2026-08-21 05:58:47.875] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T05:58:47Z", "value" => "1.0"} [2026-08-21 05:58:47.943] [DEBUG] QUERY OK db=67.7ms queue=0.5ms idle=65.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "1.0", "app_version", 76662, ~N[2026-08-21 05:58:47], ~N[2026-08-21 05:58:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:47.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776347, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:47], updated_at: ~N[2026-08-21 05:58:47]}} [2026-08-21 05:58:47.949] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T05:58:47Z", "value" => "13"} [2026-08-21 05:58:48.010] [DEBUG] QUERY OK db=58.5ms idle=80.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "13", "android_version", 76662, ~N[2026-08-21 05:58:47], ~N[2026-08-21 05:58:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:48.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776351, itemkey: "android_version", value: "13", timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:47], updated_at: ~N[2026-08-21 05:58:47]}} [2026-08-21 05:58:48.017] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T05:58:47Z", "value" => "872"} [2026-08-21 05:58:48.043] [DEBUG] QUERY OK db=25.8ms idle=73.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "872", "ram_free_mb", 76662, ~N[2026-08-21 05:58:48], ~N[2026-08-21 05:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:48.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776355, itemkey: "ram_free_mb", value: "872", timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:48], updated_at: ~N[2026-08-21 05:58:48]}} [2026-08-21 05:58:48.043] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T05:58:47Z", "value" => "WIFI"} [2026-08-21 05:58:48.148] [DEBUG] QUERY OK db=104.4ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "WIFI", "network_type", 76662, ~N[2026-08-21 05:58:48], ~N[2026-08-21 05:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:48.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776357, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:48], updated_at: ~N[2026-08-21 05:58:48]}} [2026-08-21 05:58:48.151] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T05:58:47Z", "value" => "true"} [2026-08-21 05:58:48.229] [DEBUG] QUERY OK db=74.2ms idle=111.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "true", "kiosk_active", 76662, ~N[2026-08-21 05:58:48], ~N[2026-08-21 05:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:48.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776362, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:48], updated_at: ~N[2026-08-21 05:58:48]}} [2026-08-21 05:58:48.229] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T05:58:47Z", "value" => ""} [2026-08-21 05:58:48.299] [DEBUG] QUERY OK db=66.8ms queue=2.8ms idle=81.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T05:58:47Z", "sim_operator", 76662, ~N[2026-08-21 05:58:48], ~N[2026-08-21 05:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:48.300] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776365, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:48], updated_at: ~N[2026-08-21 05:58:48]}} [2026-08-21 05:58:48.300] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T05:58:47Z", "value" => "UNKNOWN"} [2026-08-21 05:58:48.348] [DEBUG] QUERY OK db=47.4ms idle=71.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "UNKNOWN", "sim_number", 76662, ~N[2026-08-21 05:58:48], ~N[2026-08-21 05:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:48.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776367, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:48], updated_at: ~N[2026-08-21 05:58:48]}} [2026-08-21 05:58:48.348] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T05:58:47Z", "value" => "UNKNOWN"} [2026-08-21 05:58:48.414] [DEBUG] QUERY OK db=65.6ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "UNKNOWN", "sim_iccid", 76662, ~N[2026-08-21 05:58:48], ~N[2026-08-21 05:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:48.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776370, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:48], updated_at: ~N[2026-08-21 05:58:48]}} [2026-08-21 05:58:48.415] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T05:58:47Z", "value" => "UNKNOWN"} [2026-08-21 05:58:48.450] [DEBUG] QUERY OK db=35.0ms idle=67.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "UNKNOWN", "sim_imsi", 76662, ~N[2026-08-21 05:58:48], ~N[2026-08-21 05:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:48.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776373, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:48], updated_at: ~N[2026-08-21 05:58:48]}} [2026-08-21 05:58:48.451] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T05:58:47Z", "value" => "UNKNOWN"} [2026-08-21 05:58:48.521] [DEBUG] QUERY OK db=69.3ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "UNKNOWN", "sim_iccid2", 76662, ~N[2026-08-21 05:58:48], ~N[2026-08-21 05:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:48.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776376, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:48], updated_at: ~N[2026-08-21 05:58:48]}} [2026-08-21 05:58:48.521] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T05:58:47Z", "value" => "UNKNOWN"} [2026-08-21 05:58:48.572] [DEBUG] QUERY OK db=49.0ms idle=71.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "UNKNOWN", "sim_imsi2", 76662, ~N[2026-08-21 05:58:48], ~N[2026-08-21 05:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:48.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776379, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:48], updated_at: ~N[2026-08-21 05:58:48]}} [2026-08-21 05:58:48.572] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T05:58:47Z", "value" => "23"} [2026-08-21 05:58:48.643] [DEBUG] QUERY OK db=69.9ms idle=51.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "23", "data_usage_mb", 76662, ~N[2026-08-21 05:58:48], ~N[2026-08-21 05:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:48.644] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776382, itemkey: "data_usage_mb", value: "23", timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:48], updated_at: ~N[2026-08-21 05:58:48]}} [2026-08-21 05:58:48.644] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T05:58:47Z", "value" => "0"} [2026-08-21 05:58:48.688] [DEBUG] QUERY OK db=43.3ms idle=73.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "0", "mobile_data_mb", 76662, ~N[2026-08-21 05:58:48], ~N[2026-08-21 05:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:48.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776385, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:48], updated_at: ~N[2026-08-21 05:58:48]}} [2026-08-21 05:58:48.689] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T05:58:47Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 05:58:48.762] [DEBUG] QUERY OK db=72.1ms idle=5.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T05:58:47Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76662, ~N[2026-08-21 05:58:48], ~N[2026-08-21 05:58:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 05:58:48.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776388, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T05:58:47Z", message: nil, status_log_id: 76662, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 05:58:48], updated_at: ~N[2026-08-21 05:58:48]}} [2026-08-21 05:59:05.619] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T05:58:45Z"} [2026-08-21 05:59:05.619] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:58:45Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 3, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:59:05.627] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T05:58:45Z"} [2026-08-21 05:59:05.627] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:58:45Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 5, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:59:05.831] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T05:58:45Z"} [2026-08-21 05:59:05.831] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:58:45Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 6, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 05:59:06.017] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T05:58:45Z"} [2026-08-21 05:59:06.017] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T05:58:45Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 7, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 06:02:16.356] [INFO ] [Ysp.Scheduler] Started. SFTP in 20h 57m, MIS in 1h 57m [2026-08-21 06:02:16.394] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 06:02:16.407] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 06:02:18.013] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 06:02:18.016] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 06:02:18.018] [INFO ] Building initial filter cache... [2026-08-21 06:02:18.056] [DEBUG] QUERY OK source="tms_terminals" db=4.6ms queue=4.0ms idle=726.5ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 06:02:18.069] [DEBUG] QUERY OK source="filter_usage" db=0.5ms queue=1.2ms idle=193.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-08-21 06:02:18.070] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 06:02:18.422] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 06:02:18.528] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-08-21 06:02:18.562] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-08-21 06:02:18.756] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 06:02:18.756] [INFO ] Incoming JSON payload: {"oid":"8750ee27-2b47-45b0-ac1e-ddb3da7930f4","sn":"98251226730001","uploadTime":"2026-08-21T06:02:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"ram_free_mb","value":"877","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"data_usage_mb","value":"23","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T06:02:18Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 06:02:18.774] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8750ee27-2b47-45b0-ac1e-ddb3da7930f4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:02:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T06:02:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:02:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:02:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:02:18Z", "value" => "877"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:02:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:02:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:02:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:02:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:02:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:02:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:02:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:02:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:02:18Z", "value" => "23"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:02:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:02:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T06:02:18Z", "vendor" => "morefun"} [2026-08-21 06:02:18.775] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 06:02:18.814] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 06:02:18.815] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 06:02:18.831] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=2.1ms idle=759.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-08-21 06:02:18.833] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=1.2ms idle=494.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-08-21 06:02:18.834] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 06:02:18.894] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=2.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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 06:02:18.980] [INFO ] Terminal updated: 98251226730001 [2026-08-21 06:02:19.111] [DEBUG] QUERY OK source="tms_terminals" db=112.7ms queue=1.3ms idle=147.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 06:02:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 06:02:19.121] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 06:02:19.125] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=230.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 06:02:19.198] [DEBUG] QUERY OK source="tms_terminals" db=51.1ms idle=51.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 06:02:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 06:02:19.290] [DEBUG] QUERY OK db=52.2ms queue=1.7ms idle=110.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "8750ee27-2b47-45b0-ac1e-ddb3da7930f4", "2026-08-21T06:02:18Z", ~N[2026-08-21 06:02:19], ~N[2026-08-21 06:02:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 06:02:19.342] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76677, oid: "8750ee27-2b47-45b0-ac1e-ddb3da7930f4", upload_time: "2026-08-21T06:02:18Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:19], updated_at: ~N[2026-08-21 06:02:19]} [2026-08-21 06:02:19.343] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:02:18Z", "value" => "morefun"} [2026-08-21 06:02:19.389] [DEBUG] QUERY OK db=44.7ms queue=1.5ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "morefun", "vendor", 76677, ~N[2026-08-21 06:02:19], ~N[2026-08-21 06:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:19.392] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776598, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:19], updated_at: ~N[2026-08-21 06:02:19]}} [2026-08-21 06:02:19.392] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T06:02:18Z", "value" => "kiosk_launcher"} [2026-08-21 06:02:19.467] [DEBUG] QUERY OK db=68.7ms queue=5.3ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "kiosk_launcher", "model", 76677, ~N[2026-08-21 06:02:19], ~N[2026-08-21 06:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:19.467] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776601, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:19], updated_at: ~N[2026-08-21 06:02:19]}} [2026-08-21 06:02:19.467] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:02:18Z", "value" => "1.0"} [2026-08-21 06:02:19.514] [DEBUG] QUERY OK db=46.4ms idle=78.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "1.0", "app_version", 76677, ~N[2026-08-21 06:02:19], ~N[2026-08-21 06:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:19.514] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776604, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:19], updated_at: ~N[2026-08-21 06:02:19]}} [2026-08-21 06:02:19.514] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:02:18Z", "value" => "13"} [2026-08-21 06:02:19.597] [DEBUG] QUERY OK db=82.3ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "13", "android_version", 76677, ~N[2026-08-21 06:02:19], ~N[2026-08-21 06:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:19.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776607, itemkey: "android_version", value: "13", timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:19], updated_at: ~N[2026-08-21 06:02:19]}} [2026-08-21 06:02:19.597] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:02:18Z", "value" => "877"} [2026-08-21 06:02:19.642] [DEBUG] QUERY OK db=43.5ms idle=83.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "877", "ram_free_mb", 76677, ~N[2026-08-21 06:02:19], ~N[2026-08-21 06:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:19.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776610, itemkey: "ram_free_mb", value: "877", timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:19], updated_at: ~N[2026-08-21 06:02:19]}} [2026-08-21 06:02:19.643] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:02:18Z", "value" => "WIFI"} [2026-08-21 06:02:19.714] [DEBUG] QUERY OK db=70.5ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "WIFI", "network_type", 76677, ~N[2026-08-21 06:02:19], ~N[2026-08-21 06:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:19.714] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776613, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:19], updated_at: ~N[2026-08-21 06:02:19]}} [2026-08-21 06:02:19.714] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:02:18Z", "value" => "true"} [2026-08-21 06:02:19.763] [DEBUG] QUERY OK db=47.4ms idle=73.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "true", "kiosk_active", 76677, ~N[2026-08-21 06:02:19], ~N[2026-08-21 06:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:19.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776616, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:19], updated_at: ~N[2026-08-21 06:02:19]}} [2026-08-21 06:02:19.766] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:02:18Z", "value" => ""} [2026-08-21 06:02:19.849] [DEBUG] QUERY OK db=79.5ms queue=3.7ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T06:02:18Z", "sim_operator", 76677, ~N[2026-08-21 06:02:19], ~N[2026-08-21 06:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:19.849] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776619, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:19], updated_at: ~N[2026-08-21 06:02:19]}} [2026-08-21 06:02:19.850] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:02:18Z", "value" => "UNKNOWN"} [2026-08-21 06:02:19.924] [DEBUG] QUERY OK db=74.1ms idle=89.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "UNKNOWN", "sim_number", 76677, ~N[2026-08-21 06:02:19], ~N[2026-08-21 06:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:19.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776622, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:19], updated_at: ~N[2026-08-21 06:02:19]}} [2026-08-21 06:02:19.925] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:02:18Z", "value" => "UNKNOWN"} [2026-08-21 06:02:19.968] [DEBUG] QUERY OK db=41.8ms queue=0.9ms idle=76.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "UNKNOWN", "sim_iccid", 76677, ~N[2026-08-21 06:02:19], ~N[2026-08-21 06:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:19.969] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776623, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:19], updated_at: ~N[2026-08-21 06:02:19]}} [2026-08-21 06:02:19.969] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:02:18Z", "value" => "UNKNOWN"} [2026-08-21 06:02:20.019] [DEBUG] QUERY OK db=50.3ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "UNKNOWN", "sim_imsi", 76677, ~N[2026-08-21 06:02:19], ~N[2026-08-21 06:02:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:20.020] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776624, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:19], updated_at: ~N[2026-08-21 06:02:19]}} [2026-08-21 06:02:20.022] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:02:18Z", "value" => "UNKNOWN"} [2026-08-21 06:02:20.057] [DEBUG] QUERY OK db=33.3ms idle=54.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "UNKNOWN", "sim_iccid2", 76677, ~N[2026-08-21 06:02:20], ~N[2026-08-21 06:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:20.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776625, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:20], updated_at: ~N[2026-08-21 06:02:20]}} [2026-08-21 06:02:20.057] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:02:18Z", "value" => "UNKNOWN"} [2026-08-21 06:02:20.097] [DEBUG] QUERY OK db=34.8ms queue=0.1ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "UNKNOWN", "sim_imsi2", 76677, ~N[2026-08-21 06:02:20], ~N[2026-08-21 06:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:20.098] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776626, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:20], updated_at: ~N[2026-08-21 06:02:20]}} [2026-08-21 06:02:20.098] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:02:18Z", "value" => "23"} [2026-08-21 06:02:20.138] [DEBUG] QUERY OK db=40.0ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "23", "data_usage_mb", 76677, ~N[2026-08-21 06:02:20], ~N[2026-08-21 06:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:20.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776627, itemkey: "data_usage_mb", value: "23", timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:20], updated_at: ~N[2026-08-21 06:02:20]}} [2026-08-21 06:02:20.138] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:02:18Z", "value" => "0"} [2026-08-21 06:02:20.188] [DEBUG] QUERY OK db=49.4ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "0", "mobile_data_mb", 76677, ~N[2026-08-21 06:02:20], ~N[2026-08-21 06:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:20.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776628, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:20], updated_at: ~N[2026-08-21 06:02:20]}} [2026-08-21 06:02:20.200] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:02:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 06:02:20.266] [DEBUG] QUERY OK db=63.6ms idle=63.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:18Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76677, ~N[2026-08-21 06:02:20], ~N[2026-08-21 06:02:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:20.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776629, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T06:02:18Z", message: nil, status_log_id: 76677, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:20], updated_at: ~N[2026-08-21 06:02:20]}} [2026-08-21 06:02:48.837] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 06:02:48.837] [INFO ] Incoming JSON payload: {"oid":"bab14517-519b-4c90-a86d-38d82b72e9fd","sn":"98251226730001","uploadTime":"2026-08-21T06:02:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T06:02:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T06:02:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T06:02:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T06:02:48Z"},{"itemkey":"ram_free_mb","value":"876","timestamp":"2026-08-21T06:02:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T06:02:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T06:02:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T06:02:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T06:02:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T06:02:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T06:02:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T06:02:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T06:02:48Z"},{"itemkey":"data_usage_mb","value":"23","timestamp":"2026-08-21T06:02:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T06:02: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 06:02:48.840] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bab14517-519b-4c90-a86d-38d82b72e9fd", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:02:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T06:02:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:02:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:02:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:02:48Z", "value" => "876"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:02:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:02:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:02:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:02:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:02:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:02:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:02:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:02:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:02:48Z", "value" => "23"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:02:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:02: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T06:02:48Z", "vendor" => "morefun"} [2026-08-21 06:02:48.840] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 06:02:48.840] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 06:02:48.840] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 06:02:48.842] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=1327.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-08-21 06:02:48.844] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=327.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 06:02:48.844] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 06:02:48.846] [DEBUG] QUERY OK source="tms_terminals" db=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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 06:02:48.846] [INFO ] Terminal updated: 98251226730001 [2026-08-21 06:02:48.888] [DEBUG] QUERY OK source="tms_terminals" db=40.3ms queue=1.0ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 06:02:48], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 06:02:48.888] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 06:02:48.890] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=42.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 06:02:48.936] [DEBUG] QUERY OK source="tms_terminals" db=44.6ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 06:02:48], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 06:02:48.981] [DEBUG] QUERY OK db=40.7ms queue=0.5ms idle=49.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "bab14517-519b-4c90-a86d-38d82b72e9fd", "2026-08-21T06:02:48Z", ~N[2026-08-21 06:02:48], ~N[2026-08-21 06:02:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 06:02:48.981] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76680, oid: "bab14517-519b-4c90-a86d-38d82b72e9fd", upload_time: "2026-08-21T06:02:48Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:48], updated_at: ~N[2026-08-21 06:02:48]} [2026-08-21 06:02:48.981] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:02:48Z", "value" => "morefun"} [2026-08-21 06:02:49.041] [DEBUG] QUERY OK db=60.0ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:48Z", "morefun", "vendor", 76680, ~N[2026-08-21 06:02:48], ~N[2026-08-21 06:02:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776632, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:48], updated_at: ~N[2026-08-21 06:02:48]}} [2026-08-21 06:02:49.043] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T06:02:48Z", "value" => "kiosk_launcher"} [2026-08-21 06:02:49.095] [DEBUG] QUERY OK db=50.8ms idle=63.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:48Z", "kiosk_launcher", "model", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.095] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776635, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:49.095] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:02:48Z", "value" => "1.0"} [2026-08-21 06:02:49.144] [DEBUG] QUERY OK db=48.9ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:48Z", "1.0", "app_version", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776638, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:49.145] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:02:48Z", "value" => "13"} [2026-08-21 06:02:49.190] [DEBUG] QUERY OK db=42.9ms idle=52.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:48Z", "13", "android_version", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776641, itemkey: "android_version", value: "13", timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:49.190] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:02:48Z", "value" => "876"} [2026-08-21 06:02:49.242] [DEBUG] QUERY OK db=50.7ms queue=0.6ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:48Z", "876", "ram_free_mb", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776643, itemkey: "ram_free_mb", value: "876", timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:49.242] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:02:48Z", "value" => "WIFI"} [2026-08-21 06:02:49.306] [DEBUG] QUERY OK db=61.1ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:48Z", "WIFI", "network_type", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776647, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:49.307] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:02:48Z", "value" => "true"} [2026-08-21 06:02:49.353] [DEBUG] QUERY OK db=45.0ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:48Z", "true", "kiosk_active", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776650, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:49.354] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:02:48Z", "value" => ""} [2026-08-21 06:02:49.389] [DEBUG] QUERY OK db=34.8ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T06:02:48Z", "sim_operator", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776653, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:49.390] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:02:48Z", "value" => "UNKNOWN"} [2026-08-21 06:02:49.444] [DEBUG] QUERY OK db=52.9ms queue=0.4ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:48Z", "UNKNOWN", "sim_number", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.445] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776655, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:49.445] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:02:48Z", "value" => "UNKNOWN"} [2026-08-21 06:02:49.477] [DEBUG] QUERY OK db=31.8ms idle=56.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:48Z", "UNKNOWN", "sim_iccid", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.477] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776658, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:49.478] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:02:48Z", "value" => "UNKNOWN"} [2026-08-21 06:02:49.522] [DEBUG] QUERY OK db=43.9ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:48Z", "UNKNOWN", "sim_imsi", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776661, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:49.522] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:02:48Z", "value" => "UNKNOWN"} [2026-08-21 06:02:49.565] [DEBUG] QUERY OK db=41.5ms idle=4.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:48Z", "UNKNOWN", "sim_iccid2", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776665, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:49.565] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:02:48Z", "value" => "UNKNOWN"} [2026-08-21 06:02:49.632] [DEBUG] QUERY OK db=65.7ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:48Z", "UNKNOWN", "sim_imsi2", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776668, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:49.633] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:02:48Z", "value" => "23"} [2026-08-21 06:02:49.681] [DEBUG] QUERY OK db=47.7ms idle=68.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:48Z", "23", "data_usage_mb", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776671, itemkey: "data_usage_mb", value: "23", timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:49.681] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:02:48Z", "value" => "0"} [2026-08-21 06:02:49.877] [DEBUG] QUERY OK db=193.5ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02:48Z", "0", "mobile_data_mb", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776675, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:49.878] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:02: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 06:02:49.963] [DEBUG] QUERY OK db=82.6ms queue=0.2ms idle=198.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:02: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76680, ~N[2026-08-21 06:02:49], ~N[2026-08-21 06:02:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:02:49.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776677, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T06:02:48Z", message: nil, status_log_id: 76680, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:02:49], updated_at: ~N[2026-08-21 06:02:49]}} [2026-08-21 06:02:53.670] [INFO ] GET / [2026-08-21 06:02:53.718] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-08-21 06:02:53.809] [INFO ] Sent 200 in 138ms [2026-08-21 06:02:57.526] [INFO ] GET /images/favicon.png [2026-08-21 06:02:57.570] [DEBUG] ** (Phoenix.Router.NoRouteError) no route found for GET /images/favicon.png (PlatformWeb.Router) (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/phoenix/lib/phoenix/router.ex:541: PlatformWeb.Router.call/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.plug_builder_call/2 (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/plug/lib/plug/debugger.ex:155: PlatformWeb.Endpoint."call (overridable 3)"/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.call/2 (phoenix 1.7.21) lib/phoenix/endpoint/sync_code_reload_plug.ex:22: Phoenix.Endpoint.SyncCodeReloadPlug.do_call/4 (bandit 1.10.2) lib/bandit/pipeline.ex:131: Bandit.Pipeline.call_plug!/2 (bandit 1.10.2) lib/bandit/pipeline.ex:42: Bandit.Pipeline.run/5 (bandit 1.10.2) lib/bandit/http1/handler.ex:13: Bandit.HTTP1.Handler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:18: Bandit.DelegatingHandler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:8: Bandit.DelegatingHandler.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 [2026-08-21 06:02:59.140] [INFO ] GET /users/log_in [2026-08-21 06:02:59.140] [DEBUG] Processing with PlatformWeb.UserLoginLive.new/2 Parameters: %{} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-08-21 06:02:59.220] [INFO ] Sent 200 in 80ms [2026-08-21 06:03:00.844] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "fQB-AQRCBgs_LioGH1orJ1F5JwQVchoZONGwlwtxqKdEjmxq5-sFz0jL", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 06:03:01.065] [DEBUG] MOUNT PlatformWeb.UserLoginLive Parameters: %{} Session: %{"_csrf_token" => "2N9vh5rsNeNCu7SVdTTBoBpU"} [2026-08-21 06:03:01.065] [DEBUG] Replied in 268µs [2026-08-21 06:03:11.484] [INFO ] POST /users/log_in [2026-08-21 06:03:11.485] [DEBUG] Processing with PlatformWeb.UserSessionController.create/2 Parameters: %{"_csrf_token" => "fQB-AQRCBgs_LioGH1orJ1F5JwQVchoZONGwlwtxqKdEjmxq5-sFz0jL", "user" => %{"email" => "demo@mercury.com", "password" => "[FILTERED]", "remember_me" => "on"}} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-08-21 06:03:11.506] [DEBUG] QUERY OK source="users" db=0.4ms queue=0.3ms idle=1574.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-08-21 06:03:11.839] [DEBUG] QUERY OK db=46.4ms queue=0.5ms idle=1855.6ms INSERT INTO `users_tokens` (`context`,`token`,`user_id`,`inserted_at`) VALUES (?,?,?,?) ["session", <<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>, 3, ~U[2026-08-21 06:03:11Z]] ↳ DaProductApp.Users.generate_user_session_token/1, at: lib/da_product_app/users.ex:312 [2026-08-21 06:03:11.839] [INFO ] Sent 302 in 354ms [2026-08-21 06:03:11.850] [ERROR] ** (Plug.Conn.AlreadySentError) the response was already sent (plug 1.19.1) lib/plug/conn.ex:914: Plug.Conn.put_resp_header/3 (phoenix 1.7.21) lib/phoenix/controller.ex:495: Phoenix.Controller.redirect/2 (platform_web 0.1.0) lib/platform_web/controllers/user_session_controller.ex:1: PlatformWeb.UserSessionController.action/2 (platform_web 0.1.0) lib/platform_web/controllers/user_session_controller.ex:1: PlatformWeb.UserSessionController.phoenix_controller_pipeline/2 (phoenix 1.7.21) lib/phoenix/router.ex:484: Phoenix.Router.__call__/5 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.plug_builder_call/2 (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/plug/lib/plug/debugger.ex:155: PlatformWeb.Endpoint."call (overridable 3)"/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.call/2 (phoenix 1.7.21) lib/phoenix/endpoint/sync_code_reload_plug.ex:22: Phoenix.Endpoint.SyncCodeReloadPlug.do_call/4 (bandit 1.10.2) lib/bandit/pipeline.ex:131: Bandit.Pipeline.call_plug!/2 (bandit 1.10.2) lib/bandit/pipeline.ex:42: Bandit.Pipeline.run/5 (bandit 1.10.2) lib/bandit/http1/handler.ex:13: Bandit.HTTP1.Handler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:18: Bandit.DelegatingHandler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:8: Bandit.DelegatingHandler.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 [2026-08-21 06:03:12.149] [INFO ] GET /dashboard [2026-08-21 06:03:12.150] [DEBUG] Processing with PlatformWeb.DashboardLive.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 06:03:12.158] [DEBUG] QUERY OK source="users_tokens" db=0.5ms queue=0.7ms idle=651.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>, "session", ~U[2026-08-21 06:03:12.153984Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 06:03:12.165] [DEBUG] QUERY OK source="users_tokens" db=0.8ms idle=330.2ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>, "session", ~U[2026-08-21 06:03:12.164304Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-08-21 06:03:12.170] [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-08-20 18:44:09Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-08-21 06:03:12.171] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.7ms idle=571.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-08-21 06:03:12.172] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.4ms idle=295.0ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-08-21 06:03:12.191] [DEBUG] QUERY OK source="tms_terminals" db=18.2ms queue=0.4ms idle=1.3ms 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-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-08-21 06:03:12.196] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=0.4ms idle=22.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-08-21 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-08-21 06:03:12.196] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=4.4ms 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-08-21 06:03:12.198] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.3ms 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-08-21 06:03:12.313] [DEBUG] QUERY OK source="tms_terminals" db=109.7ms queue=0.7ms idle=6.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`area`, t0.`model`, t0.`imei`, t0.`remark`, t0.`vendor`, t0.`group`, t0.`inserted_at`, t0.`updated_at`, s1.`last_seen_at`, (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'battery' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'cpu' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'memory' ORDER BY inserted_at DESC LIMIT 1) FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen_at`, max(st0.`id`) AS `last_status_log_id` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` LEFT OUTER JOIN `tms_terminal_status_logs` AS t2 ON t2.`id` = s1.`last_status_log_id` [] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-08-21 06:03:12.318] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=0.4ms idle=119.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.319] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=0.6ms idle=4.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.320] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms 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-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.320] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.321] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=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-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.322] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.323] [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-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.323] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.324] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms queue=0.1ms 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-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.325] [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-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.325] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=0.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.327] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.9ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.327] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=1.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.328] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.329] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms 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-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.330] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.331] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms 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-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.332] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.333] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms 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-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.333] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms queue=0.1ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.335] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.336] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.9ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.336] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=1.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.337] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.338] [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-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.339] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.339] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.340] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.341] [DEBUG] QUERY OK source="ota_configurations" db=1.0ms 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-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.342] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.344] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms queue=0.1ms 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-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.345] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=2.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.346] [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-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.347] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.348] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms idle=1.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.349] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.9ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.350] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=1.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.351] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.352] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms 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-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.353] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.354] [DEBUG] QUERY OK source="ota_configurations" db=1.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-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.355] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=0.1ms idle=1.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.356] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms 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-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.358] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.358] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms 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-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.359] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.360] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms 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-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:12.361] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:12.463] [DEBUG] QUERY OK source="tms_terminals" db=100.3ms queue=0.7ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:58:12.361802Z], ~U[2026-08-21 05:33:12.361802Z], ~U[2026-08-21 05:03:12.361802Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 06:03:12.484] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.4ms queue=0.5ms idle=102.5ms 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-08-21 05:03:12]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-08-21 06:03:12.507] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.3ms queue=1.0ms idle=21.7ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 06:02:12]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-08-21 06:03:12.529] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.6ms queue=0.4ms idle=23.4ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 05:03:12]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-08-21 06:03:12.548] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.5ms idle=22.8ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 05:03:12]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-08-21 06:03:12.566] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.2ms queue=0.6ms idle=20.2ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 05:03:12]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-08-21 06:03:12.568] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=19.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-08-21 06:03:12.657] [DEBUG] QUERY OK source="tms_terminals" db=88.1ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:58:12.568840Z], ~U[2026-08-21 05:33:12.568840Z], ~U[2026-08-21 05:03:12.568840Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 06:03:12.747] [DEBUG] QUERY OK source="tms_terminals" db=90.0ms idle=53.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-08-21 05:58:12.657478Z], ~U[2026-08-21 05:33:12.657478Z], ~U[2026-08-21 05:03:12.657478Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 06:03:12.834] [DEBUG] QUERY OK source="tms_terminals" db=85.9ms idle=22.9ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:58:12.748079Z], ~U[2026-08-21 05:33:12.748079Z], ~U[2026-08-21 05:03:12.748079Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 06:03:12.949] [DEBUG] QUERY OK source="tms_terminals" db=114.6ms idle=87.4ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:58:12.834881Z], ~U[2026-08-21 05:33:12.834881Z], ~U[2026-08-21 05:03:12.834881Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 06:03:12.981] [INFO ] Sent 200 in 831ms [2026-08-21 06:03:14.643] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "NRIJJxFaThMuEDcgBhIsAkAwYldnSzgJWTjTI1xyBrgG3wcptsQ8R-vf", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 06:03:14.821] [DEBUG] MOUNT PlatformWeb.DashboardLive Parameters: %{} Session: %{"_csrf_token" => "bFcsXk6jlbPg5eOr4C3o5fNo", "live_socket_id" => "users_sessions:ojaCPBm5T4QMyO6MeumJQRCxXSc1XL9EjnAwwKQu-LA=", "user_token" => <<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>} [2026-08-21 06:03:14.823] [DEBUG] QUERY OK source="users_tokens" db=1.3ms idle=890.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)) [<<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>, "session", ~U[2026-08-21 06:03:14.821787Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 06:03:14.825] [DEBUG] QUERY OK source="users_tokens" db=1.3ms queue=0.2ms idle=892.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)) [<<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>, "session", ~U[2026-08-21 06:03:14.823636Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-08-21 06:03:14.825] [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-08-20 18:44:09Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-08-21 06:03:14.827] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=1.0ms idle=1219.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-08-21 06:03:14.828] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.6ms idle=218.4ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-08-21 06:03:14.847] [DEBUG] QUERY OK source="tms_terminals" db=17.6ms idle=2.3ms 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-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-08-21 06:03:14.847] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms queue=0.1ms idle=19.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-08-21 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-08-21 06:03:14.848] [DEBUG] QUERY OK source="tms_terminals" db=0.2ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:140 [2026-08-21 06:03:14.848] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=0.7ms 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-08-21 06:03:14.942] [DEBUG] QUERY OK source="tms_terminals" db=93.5ms idle=0.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`area`, t0.`model`, t0.`imei`, t0.`remark`, t0.`vendor`, t0.`group`, t0.`inserted_at`, t0.`updated_at`, s1.`last_seen_at`, (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'battery' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'cpu' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'memory' ORDER BY inserted_at DESC LIMIT 1) FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen_at`, max(st0.`id`) AS `last_status_log_id` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` LEFT OUTER JOIN `tms_terminal_status_logs` AS t2 ON t2.`id` = s1.`last_status_log_id` [] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-08-21 06:03:14.943] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=94.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:14.945] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.3ms queue=0.2ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:14.948] [DEBUG] QUERY OK source="ota_configurations" db=2.6ms 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-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:14.951] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.2ms idle=3.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:14.957] [DEBUG] QUERY OK source="ota_configurations" db=4.6ms idle=5.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:14.960] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.4ms idle=6.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:14.963] [DEBUG] QUERY OK source="ota_configurations" db=1.3ms queue=1.3ms 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-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:14.965] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.3ms idle=3.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:14.969] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms queue=0.4ms idle=4.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:14.970] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.1ms idle=4.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:14.973] [DEBUG] QUERY OK source="ota_configurations" db=1.8ms 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-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:14.974] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=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-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:14.976] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms queue=0.1ms idle=2.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:14.978] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=2.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:14.979] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=2.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:14.983] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=2.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:14.984] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=4.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:14.985] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.9ms idle=4.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:14.986] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=1.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:14.987] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:14.988] [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-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:14.989] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.9ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:14.990] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms idle=1.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:14.992] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.9ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:14.993] [DEBUG] QUERY OK source="ota_configurations" db=1.3ms 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-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:14.994] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:14.996] [DEBUG] QUERY OK source="ota_configurations" db=1.6ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:14.997] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=2.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:14.998] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms 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-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:15.001] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.9ms queue=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-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:15.001] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=2.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:15.002] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:15.003] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms queue=0.5ms idle=1.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:15.004] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:15.005] [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-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:15.006] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:15.007] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms 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-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:15.009] [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-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:15.010] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms 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-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:15.011] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:15.011] [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-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:15.012] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:15.013] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms 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-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:15.015] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.2ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:15.017] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=0.6ms idle=2.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:15.018] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=2.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:15.019] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=2.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 06:03:15.021] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.9ms idle=1.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 06:03:15.133] [DEBUG] QUERY OK source="tms_terminals" db=111.3ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:58:15.021651Z], ~U[2026-08-21 05:33:15.021651Z], ~U[2026-08-21 05:03:15.021651Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 06:03:15.166] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=31.8ms idle=112.7ms 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-08-21 05:03:15]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-08-21 06:03:15.190] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.0ms idle=33.3ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 06:02:15]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-08-21 06:03:15.214] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=23.6ms idle=24.9ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 05:03:15]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-08-21 06:03:15.241] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=26.3ms idle=24.7ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 05:03:15]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-08-21 06:03:15.266] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.2ms idle=27.2ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 05:03:15]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-08-21 06:03:15.268] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=24.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-08-21 06:03:15.401] [DEBUG] QUERY OK source="tms_terminals" db=132.8ms idle=2.2ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:58:15.268309Z], ~U[2026-08-21 05:33:15.268309Z], ~U[2026-08-21 05:03:15.268309Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 06:03:15.510] [DEBUG] QUERY OK source="tms_terminals" db=108.8ms idle=0.5ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:58:15.401757Z], ~U[2026-08-21 05:33:15.401757Z], ~U[2026-08-21 05:03:15.401757Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 06:03:15.601] [DEBUG] QUERY OK source="tms_terminals" db=90.3ms idle=83.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-08-21 05:58:15.511163Z], ~U[2026-08-21 05:33:15.511163Z], ~U[2026-08-21 05:03:15.511163Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 06:03:15.694] [DEBUG] QUERY OK source="tms_terminals" db=92.3ms idle=91.3ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 05:58:15.602065Z], ~U[2026-08-21 05:33:15.602065Z], ~U[2026-08-21 05:03:15.602065Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 06:03:15.694] [DEBUG] Replied in 873ms [2026-08-21 06:03:18.970] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 06:03:18.971] [INFO ] Incoming JSON payload: {"oid":"764b7c91-ace8-41c2-aa01-e6fc39adb467","sn":"98251226730001","uploadTime":"2026-08-21T06:03:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"ram_free_mb","value":"881","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"data_usage_mb","value":"23","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T06:03:18Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 06:03:18.972] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "764b7c91-ace8-41c2-aa01-e6fc39adb467", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:03:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T06:03:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:03:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:03:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:03:18Z", "value" => "881"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:03:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:03:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:03:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:03:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:03:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:03:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:03:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:03:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:03:18Z", "value" => "23"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:03:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:03:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T06:03:18Z", "vendor" => "morefun"} [2026-08-21 06:03:18.977] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 06:03:18.977] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 06:03:18.977] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 06:03:18.982] [DEBUG] QUERY OK source="parameter_templates" db=4.4ms idle=353.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-08-21 06:03:18.984] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=105.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-08-21 06:03:18.985] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 06:03:18.987] [DEBUG] QUERY OK source="tms_terminals" db=1.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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 06:03:18.987] [INFO ] Terminal updated: 98251226730001 [2026-08-21 06:03:19.007] [DEBUG] QUERY OK source="tms_terminals" db=16.8ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 06:03:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 06:03:19.007] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 06:03:19.010] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=21.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 06:03:19.070] [DEBUG] QUERY OK source="tms_terminals" db=59.0ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 06:03:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 06:03:19.104] [DEBUG] QUERY OK db=33.5ms queue=0.1ms idle=60.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "764b7c91-ace8-41c2-aa01-e6fc39adb467", "2026-08-21T06:03:18Z", ~N[2026-08-21 06:03:19], ~N[2026-08-21 06:03:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 06:03:19.104] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76681, oid: "764b7c91-ace8-41c2-aa01-e6fc39adb467", upload_time: "2026-08-21T06:03:18Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:19], updated_at: ~N[2026-08-21 06:03:19]} [2026-08-21 06:03:19.105] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:03:18Z", "value" => "morefun"} [2026-08-21 06:03:19.158] [DEBUG] QUERY OK db=53.4ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "morefun", "vendor", 76681, ~N[2026-08-21 06:03:19], ~N[2026-08-21 06:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:19.159] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776678, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:19], updated_at: ~N[2026-08-21 06:03:19]}} [2026-08-21 06:03:19.159] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T06:03:18Z", "value" => "kiosk_launcher"} [2026-08-21 06:03:19.202] [DEBUG] QUERY OK db=42.6ms idle=54.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "kiosk_launcher", "model", 76681, ~N[2026-08-21 06:03:19], ~N[2026-08-21 06:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:19.202] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776681, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:19], updated_at: ~N[2026-08-21 06:03:19]}} [2026-08-21 06:03:19.204] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:03:18Z", "value" => "1.0"} [2026-08-21 06:03:19.264] [DEBUG] QUERY OK db=56.9ms queue=0.2ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "1.0", "app_version", 76681, ~N[2026-08-21 06:03:19], ~N[2026-08-21 06:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:19.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776684, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:19], updated_at: ~N[2026-08-21 06:03:19]}} [2026-08-21 06:03:19.266] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:03:18Z", "value" => "13"} [2026-08-21 06:03:19.364] [DEBUG] QUERY OK db=97.7ms idle=65.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "13", "android_version", 76681, ~N[2026-08-21 06:03:19], ~N[2026-08-21 06:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:19.364] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776687, itemkey: "android_version", value: "13", timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:19], updated_at: ~N[2026-08-21 06:03:19]}} [2026-08-21 06:03:19.365] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:03:18Z", "value" => "881"} [2026-08-21 06:03:19.427] [DEBUG] QUERY OK db=62.5ms idle=100.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "881", "ram_free_mb", 76681, ~N[2026-08-21 06:03:19], ~N[2026-08-21 06:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:19.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776689, itemkey: "ram_free_mb", value: "881", timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:19], updated_at: ~N[2026-08-21 06:03:19]}} [2026-08-21 06:03:19.428] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:03:18Z", "value" => "WIFI"} [2026-08-21 06:03:19.557] [DEBUG] QUERY OK db=128.7ms idle=63.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "WIFI", "network_type", 76681, ~N[2026-08-21 06:03:19], ~N[2026-08-21 06:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:19.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776692, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:19], updated_at: ~N[2026-08-21 06:03:19]}} [2026-08-21 06:03:19.557] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:03:18Z", "value" => "true"} [2026-08-21 06:03:19.625] [DEBUG] QUERY OK db=67.7ms idle=130.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "true", "kiosk_active", 76681, ~N[2026-08-21 06:03:19], ~N[2026-08-21 06:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:19.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776695, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:19], updated_at: ~N[2026-08-21 06:03:19]}} [2026-08-21 06:03:19.625] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:03:18Z", "value" => ""} [2026-08-21 06:03:19.690] [DEBUG] QUERY OK db=63.5ms queue=0.6ms idle=0.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T06:03:18Z", "sim_operator", 76681, ~N[2026-08-21 06:03:19], ~N[2026-08-21 06:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:19.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776698, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:19], updated_at: ~N[2026-08-21 06:03:19]}} [2026-08-21 06:03:19.690] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:03:18Z", "value" => "UNKNOWN"} [2026-08-21 06:03:19.730] [DEBUG] QUERY OK db=39.4ms queue=0.1ms idle=63.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "UNKNOWN", "sim_number", 76681, ~N[2026-08-21 06:03:19], ~N[2026-08-21 06:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:19.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776701, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:19], updated_at: ~N[2026-08-21 06:03:19]}} [2026-08-21 06:03:19.731] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:03:18Z", "value" => "UNKNOWN"} [2026-08-21 06:03:19.775] [DEBUG] QUERY OK db=44.0ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "UNKNOWN", "sim_iccid", 76681, ~N[2026-08-21 06:03:19], ~N[2026-08-21 06:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:19.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776704, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:19], updated_at: ~N[2026-08-21 06:03:19]}} [2026-08-21 06:03:19.776] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:03:18Z", "value" => "UNKNOWN"} [2026-08-21 06:03:19.836] [DEBUG] QUERY OK db=59.2ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "UNKNOWN", "sim_imsi", 76681, ~N[2026-08-21 06:03:19], ~N[2026-08-21 06:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:19.836] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776707, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:19], updated_at: ~N[2026-08-21 06:03:19]}} [2026-08-21 06:03:19.836] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:03:18Z", "value" => "UNKNOWN"} [2026-08-21 06:03:19.888] [DEBUG] QUERY OK db=51.3ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "UNKNOWN", "sim_iccid2", 76681, ~N[2026-08-21 06:03:19], ~N[2026-08-21 06:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:19.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776710, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:19], updated_at: ~N[2026-08-21 06:03:19]}} [2026-08-21 06:03:19.888] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:03:18Z", "value" => "UNKNOWN"} [2026-08-21 06:03:20.036] [DEBUG] QUERY OK db=147.5ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "UNKNOWN", "sim_imsi2", 76681, ~N[2026-08-21 06:03:19], ~N[2026-08-21 06:03:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:20.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776713, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:19], updated_at: ~N[2026-08-21 06:03:19]}} [2026-08-21 06:03:20.036] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:03:18Z", "value" => "23"} [2026-08-21 06:03:20.072] [DEBUG] QUERY OK db=34.9ms idle=148.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "23", "data_usage_mb", 76681, ~N[2026-08-21 06:03:20], ~N[2026-08-21 06:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:20.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776716, itemkey: "data_usage_mb", value: "23", timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:20], updated_at: ~N[2026-08-21 06:03:20]}} [2026-08-21 06:03:20.072] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:03:18Z", "value" => "0"} [2026-08-21 06:03:20.123] [DEBUG] QUERY OK db=50.2ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "0", "mobile_data_mb", 76681, ~N[2026-08-21 06:03:20], ~N[2026-08-21 06:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:20.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776718, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:20], updated_at: ~N[2026-08-21 06:03:20]}} [2026-08-21 06:03:20.124] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:03:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 06:03:20.192] [DEBUG] QUERY OK db=67.3ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:18Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76681, ~N[2026-08-21 06:03:20], ~N[2026-08-21 06:03:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:20.193] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776721, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T06:03:18Z", message: nil, status_log_id: 76681, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:20], updated_at: ~N[2026-08-21 06:03:20]}} [2026-08-21 06:03:21.062] [WARN ] navigate event to "http://localhost:5329/admin/settlements/summary" failed because you are redirecting across live_sessions. A full page reload will be performed instead [2026-08-21 06:03:21.375] [INFO ] GET /admin/settlements/summary [2026-08-21 06:03:21.375] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 06:03:21.376] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=1444.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>, "session", ~U[2026-08-21 06:03:21.376062Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 06:03:21.415] [DEBUG] QUERY OK source="core_transactions" db=7.5ms queue=2.3ms idle=1209.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 06:03:21.422] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms queue=0.6ms idle=791.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 06:03:21.430] [DEBUG] QUERY OK source="core_transactions" db=2.6ms queue=1.4ms idle=15.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 06:03:21.435] [DEBUG] QUERY OK source="tid_masters" db=0.9ms queue=0.5ms idle=12.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 06:03:21.438] [INFO ] Sent 200 in 62ms [2026-08-21 06:03:23.062] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 22µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "UnYEAWtdQC0oEjQMQC0eJ1U2XR19JBQ600gr36vGDpdkuHQUaunrHBZU", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 06:03:23.243] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "bFcsXk6jlbPg5eOr4C3o5fNo", "live_socket_id" => "users_sessions:ojaCPBm5T4QMyO6MeumJQRCxXSc1XL9EjnAwwKQu-LA=", "user_token" => <<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>} [2026-08-21 06:03:23.245] [DEBUG] QUERY OK source="users_tokens" db=1.2ms queue=0.1ms idle=1311.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)) [<<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>, "session", ~U[2026-08-21 06:03:23.243895Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 06:03:23.247] [DEBUG] QUERY OK source="core_transactions" db=2.1ms idle=609.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 06:03:23.249] [DEBUG] QUERY OK source="merchant_adjustments" db=0.9ms idle=371.0ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 06:03:23.249] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=1.4ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 06:03:23.251] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=0.4ms idle=1.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 06:03:23.251] [DEBUG] Replied in 8ms [2026-08-21 06:03:37.782] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-17", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 06:03:37.784] [DEBUG] QUERY OK source="core_transactions" db=1.3ms idle=904.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-17], ~D[2026-08-21], ~D[2026-07-17], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 06:03:37.785] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms idle=101.0ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-17], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 06:03:37.787] [DEBUG] QUERY OK source="core_transactions" db=1.4ms idle=1.2ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-17], ~D[2026-08-21], ~D[2026-07-17], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 06:03:37.789] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.7ms idle=2.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 06:03:37.789] [DEBUG] Replied in 6ms [2026-08-21 06:03:41.696] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-08-17", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 06:03:41.697] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=0.1ms idle=379.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-17], ~D[2026-08-21], ~D[2026-08-17], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 06:03:41.698] [DEBUG] QUERY OK source="merchant_adjustments" db=0.3ms idle=4.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-17], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 06:03:41.699] [DEBUG] QUERY OK source="core_transactions" db=0.4ms idle=0.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-17], ~D[2026-08-21], ~D[2026-08-17], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 06:03:41.700] [DEBUG] QUERY OK source="tid_masters" db=0.3ms queue=0.4ms idle=1.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 06:03:41.700] [DEBUG] Replied in 4ms [2026-08-21 06:03:49.321] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 06:03:49.321] [INFO ] Incoming JSON payload: {"oid":"7ae2fc20-406b-4b95-9883-dcdb516dab85","sn":"98251226730001","uploadTime":"2026-08-21T06:03:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"ram_free_mb","value":"883","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"data_usage_mb","value":"23","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T06:03:48Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 06:03:49.329] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7ae2fc20-406b-4b95-9883-dcdb516dab85", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:03:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T06:03:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:03:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:03:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:03:48Z", "value" => "883"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:03:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:03:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:03:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:03:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:03:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:03:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:03:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:03:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:03:48Z", "value" => "23"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:03:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:03:48Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T06:03:48Z", "vendor" => "morefun"} [2026-08-21 06:03:49.329] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 06:03:49.329] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 06:03:49.329] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 06:03:49.335] [DEBUG] QUERY OK source="parameter_templates" db=3.6ms idle=616.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-08-21 06:03:49.337] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=0.4ms idle=456.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 06:03:49.337] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 06:03:49.340] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.3ms idle=5.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 06:03:49.340] [INFO ] Terminal updated: 98251226730001 [2026-08-21 06:03:49.353] [DEBUG] QUERY OK source="tms_terminals" db=12.9ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 06:03:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 06:03:49.354] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 06:03:49.357] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=15.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 06:03:49.387] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_to"], "_unused_merchant_mid" => "", "date_from" => "2026-08-17", "date_to" => "2026-08-17", "merchant_mid" => ""} [2026-08-21 06:03:49.389] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.3ms idle=30.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-17], ~D[2026-08-17], ~D[2026-08-17], ~D[2026-08-17]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 06:03:49.389] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=0.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-17], ~D[2026-08-17]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 06:03:49.390] [DEBUG] QUERY OK source="core_transactions" db=0.4ms idle=0.2ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-17], ~D[2026-08-17], ~D[2026-08-17], ~D[2026-08-17]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 06:03:49.392] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=0.8ms idle=0.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 06:03:49.392] [DEBUG] Replied in 5ms [2026-08-21 06:03:49.413] [DEBUG] QUERY OK source="tms_terminals" db=55.1ms idle=4.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 06:03:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 06:03:49.471] [DEBUG] QUERY OK db=57.5ms idle=21.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "7ae2fc20-406b-4b95-9883-dcdb516dab85", "2026-08-21T06:03:48Z", ~N[2026-08-21 06:03:49], ~N[2026-08-21 06:03:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 06:03:49.472] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76686, oid: "7ae2fc20-406b-4b95-9883-dcdb516dab85", upload_time: "2026-08-21T06:03:48Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:49], updated_at: ~N[2026-08-21 06:03:49]} [2026-08-21 06:03:49.472] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:03:48Z", "value" => "morefun"} [2026-08-21 06:03:49.542] [DEBUG] QUERY OK db=69.1ms queue=0.3ms idle=59.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "morefun", "vendor", 76686, ~N[2026-08-21 06:03:49], ~N[2026-08-21 06:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:49.543] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776728, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:49], updated_at: ~N[2026-08-21 06:03:49]}} [2026-08-21 06:03:49.543] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T06:03:48Z", "value" => "kiosk_launcher"} [2026-08-21 06:03:49.582] [DEBUG] QUERY OK db=38.4ms queue=0.4ms idle=71.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "kiosk_launcher", "model", 76686, ~N[2026-08-21 06:03:49], ~N[2026-08-21 06:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:49.582] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776731, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:49], updated_at: ~N[2026-08-21 06:03:49]}} [2026-08-21 06:03:49.582] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:03:48Z", "value" => "1.0"} [2026-08-21 06:03:49.746] [DEBUG] QUERY OK db=163.4ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "1.0", "app_version", 76686, ~N[2026-08-21 06:03:49], ~N[2026-08-21 06:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:49.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776733, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:49], updated_at: ~N[2026-08-21 06:03:49]}} [2026-08-21 06:03:49.747] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:03:48Z", "value" => "13"} [2026-08-21 06:03:49.853] [DEBUG] QUERY OK db=106.3ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "13", "android_version", 76686, ~N[2026-08-21 06:03:49], ~N[2026-08-21 06:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:49.853] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776736, itemkey: "android_version", value: "13", timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:49], updated_at: ~N[2026-08-21 06:03:49]}} [2026-08-21 06:03:49.854] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:03:48Z", "value" => "883"} [2026-08-21 06:03:49.922] [DEBUG] QUERY OK db=67.8ms idle=107.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "883", "ram_free_mb", 76686, ~N[2026-08-21 06:03:49], ~N[2026-08-21 06:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:49.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776740, itemkey: "ram_free_mb", value: "883", timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:49], updated_at: ~N[2026-08-21 06:03:49]}} [2026-08-21 06:03:49.922] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:03:48Z", "value" => "WIFI"} [2026-08-21 06:03:49.987] [DEBUG] QUERY OK db=64.2ms idle=69.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "WIFI", "network_type", 76686, ~N[2026-08-21 06:03:49], ~N[2026-08-21 06:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:49.988] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776743, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:49], updated_at: ~N[2026-08-21 06:03:49]}} [2026-08-21 06:03:49.988] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:03:48Z", "value" => "true"} [2026-08-21 06:03:50.050] [DEBUG] QUERY OK db=61.6ms idle=66.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "true", "kiosk_active", 76686, ~N[2026-08-21 06:03:49], ~N[2026-08-21 06:03:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:50.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776746, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:49], updated_at: ~N[2026-08-21 06:03:49]}} [2026-08-21 06:03:50.051] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:03:48Z", "value" => ""} [2026-08-21 06:03:50.078] [DEBUG] QUERY OK db=26.6ms idle=64.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T06:03:48Z", "sim_operator", 76686, ~N[2026-08-21 06:03:50], ~N[2026-08-21 06:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:50.079] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776749, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:50], updated_at: ~N[2026-08-21 06:03:50]}} [2026-08-21 06:03:50.079] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:03:48Z", "value" => "UNKNOWN"} [2026-08-21 06:03:50.132] [DEBUG] QUERY OK db=52.0ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "UNKNOWN", "sim_number", 76686, ~N[2026-08-21 06:03:50], ~N[2026-08-21 06:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:50.132] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776752, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:50], updated_at: ~N[2026-08-21 06:03:50]}} [2026-08-21 06:03:50.132] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:03:48Z", "value" => "UNKNOWN"} [2026-08-21 06:03:50.182] [DEBUG] QUERY OK db=49.3ms idle=54.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "UNKNOWN", "sim_iccid", 76686, ~N[2026-08-21 06:03:50], ~N[2026-08-21 06:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:50.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776755, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:50], updated_at: ~N[2026-08-21 06:03:50]}} [2026-08-21 06:03:50.183] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:03:48Z", "value" => "UNKNOWN"} [2026-08-21 06:03:50.239] [DEBUG] QUERY OK db=55.5ms queue=0.1ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "UNKNOWN", "sim_imsi", 76686, ~N[2026-08-21 06:03:50], ~N[2026-08-21 06:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:50.239] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776759, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:50], updated_at: ~N[2026-08-21 06:03:50]}} [2026-08-21 06:03:50.239] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:03:48Z", "value" => "UNKNOWN"} [2026-08-21 06:03:50.316] [DEBUG] QUERY OK db=76.3ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "UNKNOWN", "sim_iccid2", 76686, ~N[2026-08-21 06:03:50], ~N[2026-08-21 06:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:50.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776761, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:50], updated_at: ~N[2026-08-21 06:03:50]}} [2026-08-21 06:03:50.317] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:03:48Z", "value" => "UNKNOWN"} [2026-08-21 06:03:50.410] [DEBUG] QUERY OK db=92.5ms idle=78.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "UNKNOWN", "sim_imsi2", 76686, ~N[2026-08-21 06:03:50], ~N[2026-08-21 06:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:50.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776765, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:50], updated_at: ~N[2026-08-21 06:03:50]}} [2026-08-21 06:03:50.410] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:03:48Z", "value" => "23"} [2026-08-21 06:03:50.451] [DEBUG] QUERY OK db=40.4ms idle=94.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "23", "data_usage_mb", 76686, ~N[2026-08-21 06:03:50], ~N[2026-08-21 06:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:50.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776768, itemkey: "data_usage_mb", value: "23", timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:50], updated_at: ~N[2026-08-21 06:03:50]}} [2026-08-21 06:03:50.452] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:03:48Z", "value" => "0"} [2026-08-21 06:03:50.488] [DEBUG] QUERY OK db=35.4ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "0", "mobile_data_mb", 76686, ~N[2026-08-21 06:03:50], ~N[2026-08-21 06:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:50.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776771, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:50], updated_at: ~N[2026-08-21 06:03:50]}} [2026-08-21 06:03:50.489] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:03:48Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 06:03:50.543] [DEBUG] QUERY OK db=51.7ms queue=1.1ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:03:48Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76686, ~N[2026-08-21 06:03:50], ~N[2026-08-21 06:03:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:03:50.545] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776773, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T06:03:48Z", message: nil, status_log_id: 76686, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:03:50], updated_at: ~N[2026-08-21 06:03:50]}} [2026-08-21 06:04:02.269] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 06:04:02.269] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T06:04:02Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T06:04:02Z","value":"28"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T06:04:02Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T06:04:02Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T06:04:02Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T06:04:02Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T06:04:02Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T06:04:02Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T06:04:02Z","vendor":"MoreFun"} [2026-08-21 06:04:02.271] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T06:04:02Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T06:04:02Z", "value" => "28"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T06:04:02Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T06:04:02Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T06:04:02Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T06:04:02Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T06:04:02Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T06:04:02Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T06:04:02Z", "vendor" => "MoreFun"} [2026-08-21 06:04:02.271] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 06:04:02.272] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 06:04:02.273] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 06:04:02.276] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms idle=525.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-08-21 06:04:02.279] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=397.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 06:04:02.299] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms queue=0.6ms idle=22.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-08-21 06:04:02.324] [DEBUG] QUERY OK source="parameter_definitions" db=3.3ms queue=6.7ms idle=34.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-08-21 06:04:02.342] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms queue=1.2ms idle=41.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-08-21 06:04:02.367] [DEBUG] QUERY OK source="pos_merchant" db=2.3ms queue=14.2ms idle=26.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 06:04:02.381] [DEBUG] QUERY OK db=0.7ms queue=1.5ms idle=1496.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 ["626165170000000"] [2026-08-21 06:04:02.383] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 06:04:02.393] [DEBUG] QUERY OK source="pos_terminal_data" db=1.5ms queue=0.4ms idle=49.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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 06:04:02.407] [DEBUG] QUERY OK source="address" db=0.6ms queue=0.4ms idle=39.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 06:04:02.407] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 06:04:02.427] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 06:04:02.499] [DEBUG] QUERY OK db=53.2ms queue=1.5ms idle=50.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c7c30659849266bd49231a423a39822c0fd87e1be0a88d789e02158fe5241d59", 2020, 938, ~U[2026-08-21 06:04:02Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 06:04:02], ~N[2026-08-21 06:04:02]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 06:04:02.499] [INFO ] AutoPushService: Created push log 48262 for MF919 params.zip [2026-08-21 06:04:02.513] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 2020, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 06:04:02.513] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 06:04:02.532] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 06:04:02.554] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=1.6ms idle=144.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-08-21 06:04:02.580] [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-08-21 06:04:02.635] [DEBUG] QUERY OK db=49.0ms queue=3.9ms idle=82.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "6080b539117da4cea0000d9664f704d9b60d46785abb4cfeed5aba7603a7946d", 2116, 17947, ~U[2026-08-21 06:04:02Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 06:04:02], ~N[2026-08-21 06:04:02]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 06:04:02.640] [INFO ] AutoPushService: Created push log 48264 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 06:04:02.640] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2116, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 06:04:02.640] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 06:04:02.640] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 06:04:02.643] [DEBUG] QUERY OK source="config_file_versions" db=2.5ms queue=0.2ms idle=87.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-08-21 06:04:02.667] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 06:04:02.677] [DEBUG] QUERY OK source="tms_terminals" db=5.0ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 06:04:02.680] [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-08-21 06:04:02.857] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 06:04:02.858] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 06:04:02.858] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 06:04:02.862] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms queue=0.2ms idle=183.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-08-21 06:04:02.863] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 06:04:02.863] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 06:04:02.864] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=109.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-08-21 06:04:02.864] [INFO ] Terminal updated: 98251226730001 [2026-08-21 06:04:02.925] [DEBUG] QUERY OK source="tms_terminals" db=60.4ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 06:04:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 06:04:02.928] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=2.0ms idle=61.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 06:04:02.933] [DEBUG] QUERY OK source="config_file_versions" db=4.7ms idle=3.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 06:04:02.939] [DEBUG] QUERY OK source="config_file_versions" db=4.8ms idle=5.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 06:04:02.939] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 06:04:02.986] [DEBUG] QUERY OK source="parameter_push_logs" db=44.7ms queue=1.2ms idle=6.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-08-21 05:34:02]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 06:04:02.986] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 06:04:02.988] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 06:04:02.989] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=49.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-08-21 06:04:02.992] [DEBUG] QUERY OK source="config_file_versions" db=3.1ms idle=2.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 06:04:02.993] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 06:04:02.997] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 06:04:03.067] [DEBUG] QUERY OK source="tms_terminals" db=69.8ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 06:04:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 06:04:03.106] [DEBUG] QUERY OK db=37.8ms idle=70.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T06:04:02Z", ~N[2026-08-21 06:04:03], ~N[2026-08-21 06:04:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 06:04:03.106] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76689, oid: "organization_id", upload_time: "2026-08-21T06:04:02Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:03], updated_at: ~N[2026-08-21 06:04:03]} [2026-08-21 06:04:03.106] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T06:04:02Z", "value" => "online"} [2026-08-21 06:04:03.154] [DEBUG] QUERY OK db=43.2ms queue=4.6ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T06:04:02Z", "online", "status", 76689, ~N[2026-08-21 06:04:03], ~N[2026-08-21 06:04:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:03.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776782, itemkey: "status", value: "online", timestamp: "2026-08-21T06:04:02Z", message: "Terminal status update", status_log_id: 76689, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:03], updated_at: ~N[2026-08-21 06:04:03]}} [2026-08-21 06:04:03.155] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 06:04:03.156] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T06:04:02Z", "value" => "28"} [2026-08-21 06:04:03.214] [DEBUG] QUERY OK db=55.3ms queue=2.9ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T06:04:02Z", "28", "battery", 76689, ~N[2026-08-21 06:04:03], ~N[2026-08-21 06:04:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:03.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776784, itemkey: "battery", value: "28", timestamp: "2026-08-21T06:04:02Z", message: "Battery level", status_log_id: 76689, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:03], updated_at: ~N[2026-08-21 06:04:03]}} [2026-08-21 06:04:03.215] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T06:04:02Z", "value" => "online"} [2026-08-21 06:04:03.281] [DEBUG] QUERY OK db=66.2ms idle=60.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T06:04:02Z", "online", "network", 76689, ~N[2026-08-21 06:04:03], ~N[2026-08-21 06:04:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:03.282] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776787, itemkey: "network", value: "online", timestamp: "2026-08-21T06:04:02Z", message: "Network connectivity", status_log_id: 76689, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:03], updated_at: ~N[2026-08-21 06:04:03]}} [2026-08-21 06:04:03.282] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 06:04:03.283] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T06:04:02Z", "value" => "0"} [2026-08-21 06:04:03.375] [DEBUG] QUERY OK db=83.0ms idle=77.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T06:04:02Z", "0", "cpu", 76689, ~N[2026-08-21 06:04:03], ~N[2026-08-21 06:04:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:03.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776791, itemkey: "cpu", value: "0", timestamp: "2026-08-21T06:04:02Z", message: "CPU usage percentage", status_log_id: 76689, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:03], updated_at: ~N[2026-08-21 06:04:03]}} [2026-08-21 06:04:03.376] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T06:04:02Z", "value" => "1.0.0"} [2026-08-21 06:04:03.482] [DEBUG] QUERY OK db=105.8ms idle=94.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T06:04:02Z", "1.0.0", "parameter_config", 76689, ~N[2026-08-21 06:04:03], ~N[2026-08-21 06:04:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:03.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776794, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T06:04:02Z", message: "Current parameters version", status_log_id: 76689, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:03], updated_at: ~N[2026-08-21 06:04:03]}} [2026-08-21 06:04:03.482] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T06:04:02Z", "value" => "1.0.1"} [2026-08-21 06:04:03.522] [DEBUG] QUERY OK db=39.4ms idle=107.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T06:04:02Z", "1.0.1", "emv_config", 76689, ~N[2026-08-21 06:04:03], ~N[2026-08-21 06:04:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:03.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776795, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T06:04:02Z", message: "Current EMV config version", status_log_id: 76689, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:03], updated_at: ~N[2026-08-21 06:04:03]}} [2026-08-21 06:04:03.522] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T06:04:02Z", "value" => ""} [2026-08-21 06:04:03.575] [DEBUG] QUERY OK db=51.8ms queue=0.4ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T06:04:02Z", "keys_config", 76689, ~N[2026-08-21 06:04:03], ~N[2026-08-21 06:04:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:03.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776796, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T06:04:02Z", message: "Current keys config version", status_log_id: 76689, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:03], updated_at: ~N[2026-08-21 06:04:03]}} [2026-08-21 06:04:03.575] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T06:04:02Z", "value" => "3.8.7.3"} [2026-08-21 06:04:03.617] [DEBUG] QUERY OK db=40.8ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T06:04:02Z", "3.8.7.3", "application", 76689, ~N[2026-08-21 06:04:03], ~N[2026-08-21 06:04:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:03.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776797, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T06:04:02Z", message: "Current application version", status_log_id: 76689, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:03], updated_at: ~N[2026-08-21 06:04:03]}} [2026-08-21 06:04:03.626] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T06:04:02Z"} [2026-08-21 06:04:03.634] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T06:04:02Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 6, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 06:04:19.446] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 06:04:19.446] [INFO ] Incoming JSON payload: {"oid":"e42c9848-7dce-4991-aa3b-56af57da9f68","sn":"98251226730001","uploadTime":"2026-08-21T06:04:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"ram_free_mb","value":"880","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"data_usage_mb","value":"23","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T06:04:19Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 06:04:19.448] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e42c9848-7dce-4991-aa3b-56af57da9f68", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:04:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T06:04:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:04:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:04:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:04:19Z", "value" => "880"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:04:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:04:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:04:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:04:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:04:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:04:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:04:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:04:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:04:19Z", "value" => "23"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:04:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:04:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T06:04:19Z", "vendor" => "morefun"} [2026-08-21 06:04:19.448] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 06:04:19.448] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 06:04:19.448] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 06:04:19.449] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=643.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-08-21 06:04:19.451] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=568.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 06:04:19.451] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 06:04:19.453] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 06:04:19.543] [DEBUG] QUERY OK source="tms_terminals" db=46.2ms queue=42.7ms idle=3.6ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 06:04:19], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 06:04:19.543] [INFO ] Terminal updated: 98251226730001 [2026-08-21 06:04:19.544] [INFO ] Event published: terminal_updated [2026-08-21 06:04:19.544] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 06:04:19.544] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 06:04:19.544] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 06:04:19.562] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=0.4ms idle=108.6ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 06:04:19], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 06:04:19.564] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=1.0ms 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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 06:04:19.574] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms queue=0.4ms idle=9.8ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 06:04:19.574] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 06:04:19.607] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms queue=41.3ms idle=0.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 06:04:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 06:04:19.608] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 06:04:19.609] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=33.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 06:04:19.678] [DEBUG] QUERY OK source="tms_terminals" db=28.0ms queue=40.8ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 06:04:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 06:04:19.709] [DEBUG] QUERY OK db=29.8ms idle=69.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e42c9848-7dce-4991-aa3b-56af57da9f68", "2026-08-21T06:04:19Z", ~N[2026-08-21 06:04:19], ~N[2026-08-21 06:04:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 06:04:19.709] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76690, oid: "e42c9848-7dce-4991-aa3b-56af57da9f68", upload_time: "2026-08-21T06:04:19Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:19], updated_at: ~N[2026-08-21 06:04:19]} [2026-08-21 06:04:19.709] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:04:19Z", "value" => "morefun"} [2026-08-21 06:04:19.799] [DEBUG] QUERY OK db=88.8ms queue=0.1ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "morefun", "vendor", 76690, ~N[2026-08-21 06:04:19], ~N[2026-08-21 06:04:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:19.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776798, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:19], updated_at: ~N[2026-08-21 06:04:19]}} [2026-08-21 06:04:19.799] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T06:04:19Z", "value" => "kiosk_launcher"} [2026-08-21 06:04:19.927] [DEBUG] QUERY OK db=85.9ms queue=40.9ms idle=90.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "kiosk_launcher", "model", 76690, ~N[2026-08-21 06:04:19], ~N[2026-08-21 06:04:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:19.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776801, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:19], updated_at: ~N[2026-08-21 06:04:19]}} [2026-08-21 06:04:19.927] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:04:19Z", "value" => "1.0"} [2026-08-21 06:04:19.989] [DEBUG] QUERY OK db=61.6ms idle=119.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "1.0", "app_version", 76690, ~N[2026-08-21 06:04:19], ~N[2026-08-21 06:04:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:19.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776803, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:19], updated_at: ~N[2026-08-21 06:04:19]}} [2026-08-21 06:04:19.989] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:04:19Z", "value" => "13"} [2026-08-21 06:04:20.034] [DEBUG] QUERY OK db=44.7ms idle=63.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "13", "android_version", 76690, ~N[2026-08-21 06:04:19], ~N[2026-08-21 06:04:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:20.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776805, itemkey: "android_version", value: "13", timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:19], updated_at: ~N[2026-08-21 06:04:19]}} [2026-08-21 06:04:20.035] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:04:19Z", "value" => "880"} [2026-08-21 06:04:20.071] [DEBUG] QUERY OK db=34.7ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "880", "ram_free_mb", 76690, ~N[2026-08-21 06:04:20], ~N[2026-08-21 06:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:20.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776807, itemkey: "ram_free_mb", value: "880", timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:20], updated_at: ~N[2026-08-21 06:04:20]}} [2026-08-21 06:04:20.071] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:04:19Z", "value" => "WIFI"} [2026-08-21 06:04:20.134] [DEBUG] QUERY OK db=62.0ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "WIFI", "network_type", 76690, ~N[2026-08-21 06:04:20], ~N[2026-08-21 06:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:20.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776809, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:20], updated_at: ~N[2026-08-21 06:04:20]}} [2026-08-21 06:04:20.135] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:04:19Z", "value" => "true"} [2026-08-21 06:04:20.206] [DEBUG] QUERY OK db=70.3ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "true", "kiosk_active", 76690, ~N[2026-08-21 06:04:20], ~N[2026-08-21 06:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:20.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776811, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:20], updated_at: ~N[2026-08-21 06:04:20]}} [2026-08-21 06:04:20.206] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:04:19Z", "value" => ""} [2026-08-21 06:04:20.245] [DEBUG] QUERY OK db=38.1ms idle=72.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T06:04:19Z", "sim_operator", 76690, ~N[2026-08-21 06:04:20], ~N[2026-08-21 06:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:20.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776813, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:20], updated_at: ~N[2026-08-21 06:04:20]}} [2026-08-21 06:04:20.245] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:04:19Z", "value" => "UNKNOWN"} [2026-08-21 06:04:20.324] [DEBUG] QUERY OK db=78.6ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "UNKNOWN", "sim_number", 76690, ~N[2026-08-21 06:04:20], ~N[2026-08-21 06:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:20.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776815, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:20], updated_at: ~N[2026-08-21 06:04:20]}} [2026-08-21 06:04:20.325] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:04:19Z", "value" => "UNKNOWN"} [2026-08-21 06:04:20.439] [DEBUG] QUERY OK db=112.9ms idle=81.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "UNKNOWN", "sim_iccid", 76690, ~N[2026-08-21 06:04:20], ~N[2026-08-21 06:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:20.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776817, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:20], updated_at: ~N[2026-08-21 06:04:20]}} [2026-08-21 06:04:20.440] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:04:19Z", "value" => "UNKNOWN"} [2026-08-21 06:04:20.504] [DEBUG] QUERY OK db=63.6ms idle=116.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "UNKNOWN", "sim_imsi", 76690, ~N[2026-08-21 06:04:20], ~N[2026-08-21 06:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:20.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776819, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:20], updated_at: ~N[2026-08-21 06:04:20]}} [2026-08-21 06:04:20.505] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:04:19Z", "value" => "UNKNOWN"} [2026-08-21 06:04:20.625] [DEBUG] QUERY OK db=119.8ms idle=66.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "UNKNOWN", "sim_iccid2", 76690, ~N[2026-08-21 06:04:20], ~N[2026-08-21 06:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:20.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776821, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:20], updated_at: ~N[2026-08-21 06:04:20]}} [2026-08-21 06:04:20.625] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:04:19Z", "value" => "UNKNOWN"} [2026-08-21 06:04:20.696] [DEBUG] QUERY OK db=69.9ms idle=121.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "UNKNOWN", "sim_imsi2", 76690, ~N[2026-08-21 06:04:20], ~N[2026-08-21 06:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:20.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776823, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:20], updated_at: ~N[2026-08-21 06:04:20]}} [2026-08-21 06:04:20.696] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:04:19Z", "value" => "23"} [2026-08-21 06:04:20.768] [DEBUG] QUERY OK db=71.8ms idle=71.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "23", "data_usage_mb", 76690, ~N[2026-08-21 06:04:20], ~N[2026-08-21 06:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:20.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776825, itemkey: "data_usage_mb", value: "23", timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:20], updated_at: ~N[2026-08-21 06:04:20]}} [2026-08-21 06:04:20.769] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:04:19Z", "value" => "0"} [2026-08-21 06:04:21.036] [DEBUG] QUERY OK db=266.9ms idle=73.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "0", "mobile_data_mb", 76690, ~N[2026-08-21 06:04:20], ~N[2026-08-21 06:04:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:21.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776827, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:20], updated_at: ~N[2026-08-21 06:04:20]}} [2026-08-21 06:04:21.038] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:04:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 06:04:21.147] [DEBUG] QUERY OK db=109.0ms idle=227.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:04:19Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76690, ~N[2026-08-21 06:04:21], ~N[2026-08-21 06:04:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:04:21.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 776829, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T06:04:19Z", message: nil, status_log_id: 76690, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:04:21], updated_at: ~N[2026-08-21 06:04:21]}} [2026-08-21 06:04:21.915] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch544403057034","sn":"98251226730001","status":"error","message":"Unknown command: card","timestamp":"2026-08-21T06:04:21Z"} [2026-08-21 06:04:21.915] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: card", "oid" => "ch544403057034", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T06:04:21Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 158, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 13, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 53, 52, 52, 52, 48, 51, 48, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 06:04:22.874] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T06:04:02Z"} [2026-08-21 06:04:22.875] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T06:04:02Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 7, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 06:04:22.923] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T06:04:02Z"} [2026-08-21 06:04:22.924] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T06:04:02Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 8, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 06:04:22.944] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T06:04:02Z"} [2026-08-21 06:04:22.945] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T06:04:02Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 10, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 06:04:30.089] [DEBUG] MOUNT PlatformWeb.SettlementLive.MisApproval Parameters: %{} Session: %{"_csrf_token" => "bFcsXk6jlbPg5eOr4C3o5fNo", "live_socket_id" => "users_sessions:ojaCPBm5T4QMyO6MeumJQRCxXSc1XL9EjnAwwKQu-LA=", "user_token" => <<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>} [2026-08-21 06:04:30.090] [DEBUG] QUERY OK source="users_tokens" db=0.5ms idle=1149.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)) [<<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>, "session", ~U[2026-08-21 06:04:30.089724Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 06:04:30.125] [DEBUG] QUERY OK source="settlement_mis" db=1.2ms queue=0.8ms idle=285.9ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-08-21 06:04:30.138] [DEBUG] Replied in 45ms [2026-08-21 06:06:30.717] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 06:06:58.474] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "bFcsXk6jlbPg5eOr4C3o5fNo", "live_socket_id" => "users_sessions:ojaCPBm5T4QMyO6MeumJQRCxXSc1XL9EjnAwwKQu-LA=", "user_token" => <<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>} [2026-08-21 06:06:58.477] [DEBUG] QUERY OK source="users_tokens" db=1.7ms idle=1532.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)) [<<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>, "session", ~U[2026-08-21 06:06:58.475799Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 06:06:58.479] [DEBUG] QUERY OK source="core_transactions" db=1.0ms idle=583.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 06:06:58.480] [DEBUG] QUERY OK source="merchant_adjustments" db=1.3ms idle=134.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 06:06:58.486] [DEBUG] QUERY OK source="core_transactions" db=5.6ms queue=0.1ms idle=1.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 06:06:58.490] [DEBUG] QUERY OK source="tid_masters" db=1.3ms queue=1.7ms idle=6.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 06:06:58.490] [DEBUG] Replied in 16ms [2026-08-21 06:07:17.999] [INFO ] Running offline device check... [2026-08-21 06:07:17.999] [INFO ] Starting offline device check... [2026-08-21 06:07:18.001] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.6ms idle=576.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-08-21 06:07:18.011] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms queue=0.4ms idle=106.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 06:07:18.017] [INFO ] Starting scheduled rule validation [2026-08-21 06:07:18.017] [DEBUG] Validating missing assignments [2026-08-21 06:07:18.017] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.021] [DEBUG] QUERY OK source="terminal_group_rules" db=2.0ms queue=1.4ms idle=6.8ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-08-21 06:07:18.021] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.023] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.023] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-08-21 06:07:18.025] [DEBUG] Re-applied 0 rules during validation [2026-08-21 06:07:18.025] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.025] [DEBUG] Validating invalid assignments [2026-08-21 06:07:18.025] [DEBUG] Validating rule consistency [2026-08-21 06:07:18.025] [DEBUG] Updating group terminal counts [2026-08-21 06:07:18.026] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.027] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.028] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.029] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 06:07:18.031] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.032] [DEBUG] QUERY OK source="terminal_groups" db=0.2ms queue=0.3ms idle=0.3ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-08-21 06:07:18.033] [DEBUG] QUERY OK source="terminal_groups" db=0.6ms queue=0.4ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:249 [2026-08-21 06:07:18.034] [DEBUG] QUERY OK source="terminal_groups" db=0.2ms queue=0.6ms idle=0.1ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-08-21 06:07:18.035] [DEBUG] QUERY OK source="terminal_group_rules" db=0.1ms queue=0.6ms idle=0.1ms 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-08-21 06:07:18.036] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms queue=0.1ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.037] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.038] [DEBUG] QUERY OK source="terminal_group_rules" db=1.0ms queue=1.0ms 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-08-21 06:07:18.039] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.2ms queue=0.8ms 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-08-21 06:07:18.040] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.2ms queue=0.3ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:262 [2026-08-21 06:07:18.040] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=0.2ms idle=0.1ms SELECT t0.`assignment_type`, count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) GROUP BY t0.`assignment_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:269 [2026-08-21 06:07:18.041] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-08-21 06:07:18.041] [INFO ] Rule validation completed - applied 0 fixes [2026-08-21 06:07:18.053] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.058] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=12.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.060] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.062] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.063] [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-08-21 06:07:18.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.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-08-21 06:07:18.085] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=21.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.086] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.087] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.088] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.090] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.129] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=38.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.130] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=38.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 06:07:18.132] [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-08-21 06:07:18.138] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.139] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.143] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms queue=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.144] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.145] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.152] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.154] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=7.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.155] [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-08-21 06:07:18.157] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.159] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.162] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.163] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.165] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.166] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.167] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.169] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.171] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.172] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.174] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.177] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.177] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.178] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.179] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.179] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.180] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.181] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:07:18.181] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-08-21 06:07:18.182] [INFO ] Offline device check completed successfully [2026-08-21 06:07:42.533] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-06-22", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 06:07:42.534] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=0.1ms idle=1032.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-06-22], ~D[2026-08-21], ~D[2026-06-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 06:07:42.535] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms idle=32.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-06-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 06:07:42.536] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=1.4ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-06-22], ~D[2026-08-21], ~D[2026-06-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 06:07:42.538] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.4ms idle=1.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 06:07:42.538] [DEBUG] Replied in 5ms [2026-08-21 06:07:42.753] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-05-22", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 06:07:42.756] [DEBUG] QUERY OK source="core_transactions" db=1.5ms idle=218.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-05-22], ~D[2026-08-21], ~D[2026-05-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 06:07:42.758] [DEBUG] QUERY OK source="merchant_adjustments" db=1.6ms idle=218.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-05-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 06:07:42.760] [DEBUG] QUERY OK source="core_transactions" db=1.4ms idle=2.2ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-22], ~D[2026-08-21], ~D[2026-05-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 06:07:42.762] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=1.2ms idle=2.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 06:07:42.762] [DEBUG] Replied in 9ms [2026-08-21 06:07:45.889] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-05-01", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 06:07:45.891] [DEBUG] QUERY OK source="core_transactions" db=1.6ms idle=377.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 06:07:45.892] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=0.1ms idle=50.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 06:07:45.894] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=1.5ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 06:07:45.895] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.5ms idle=1.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?,?,?)) ["TESTMID_FULL", "TESTMID_SEED", "419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 06:07:45.895] [DEBUG] Replied in 6ms [2026-08-21 06:08:10.704] [INFO ] GET /admin/settlements/summary [2026-08-21 06:08:10.704] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 06:08:10.707] [DEBUG] QUERY OK source="users_tokens" db=0.7ms queue=0.7ms idle=760.7ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>, "session", ~U[2026-08-21 06:08:10.705773Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 06:08:10.708] [DEBUG] QUERY OK source="core_transactions" db=0.7ms idle=802.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 06:08:10.709] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms idle=107.0ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 06:08:10.710] [DEBUG] QUERY OK source="core_transactions" db=0.4ms queue=0.1ms idle=1.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 06:08:10.712] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.7ms idle=1.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 06:08:10.714] [INFO ] Sent 200 in 9ms [2026-08-21 06:08:12.421] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "JjAhFTExfj4vBikADS4kIEBxXz5qCnZXDvBfiZHTCdyg8KkRt2lQ_l88", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 06:08:12.598] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "bFcsXk6jlbPg5eOr4C3o5fNo", "live_socket_id" => "users_sessions:ojaCPBm5T4QMyO6MeumJQRCxXSc1XL9EjnAwwKQu-LA=", "user_token" => <<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>} [2026-08-21 06:08:12.599] [DEBUG] QUERY OK source="users_tokens" db=0.8ms queue=0.1ms idle=653.2ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<162, 54, 130, 60, 25, 185, 79, 132, 12, 200, 238, 140, 122, 233, 137, 65, 16, 177, 93, 39, 53, 92, 191, 68, 142, 112, 48, 192, 164, 46, 248, 176>>, "session", ~U[2026-08-21 06:08:12.598200Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 06:08:12.600] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=694.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 06:08:12.600] [DEBUG] QUERY OK source="merchant_adjustments" db=0.3ms idle=560.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 06:08:12.601] [DEBUG] QUERY OK source="core_transactions" db=0.7ms idle=0.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 06:08:12.604] [DEBUG] QUERY OK source="tid_masters" db=1.1ms queue=0.7ms idle=1.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 06:08:12.604] [DEBUG] Replied in 6ms [2026-08-21 06:08:16.241] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-06-22", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 06:08:16.245] [DEBUG] QUERY OK source="core_transactions" db=3.4ms idle=622.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-06-22], ~D[2026-08-21], ~D[2026-06-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 06:08:16.248] [DEBUG] QUERY OK source="merchant_adjustments" db=2.2ms idle=357.7ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-06-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 06:08:16.255] [DEBUG] QUERY OK source="core_transactions" db=5.9ms idle=4.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-06-22], ~D[2026-08-21], ~D[2026-06-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 06:08:16.257] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=1.0ms idle=6.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 06:08:16.257] [DEBUG] Replied in 16ms [2026-08-21 06:08:16.857] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-05-22", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 06:08:16.860] [DEBUG] QUERY OK source="core_transactions" db=2.0ms idle=601.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-05-22], ~D[2026-08-21], ~D[2026-05-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 06:08:16.861] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=239.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-05-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 06:08:16.861] [DEBUG] QUERY OK source="core_transactions" db=0.4ms idle=1.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-22], ~D[2026-08-21], ~D[2026-05-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 06:08:16.864] [DEBUG] QUERY OK source="tid_masters" db=1.5ms queue=0.9ms idle=1.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 06:08:16.864] [DEBUG] Replied in 7ms [2026-08-21 06:08:19.593] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-05-01", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 06:08:19.594] [DEBUG] QUERY OK source="core_transactions" db=0.9ms idle=1684.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:37 [2026-08-21 06:08:19.595] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms idle=967.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:40 [2026-08-21 06:08:19.596] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=1.5ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 06:08:19.598] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=1.1ms idle=1.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?,?,?)) ["TESTMID_FULL", "TESTMID_SEED", "419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 06:08:19.599] [DEBUG] Replied in 5ms [2026-08-21 06:10:54.315] [INFO ] [Ysp.Scheduler] Started. SFTP in 20h 49m, MIS in 1h 49m [2026-08-21 06:10:54.348] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 06:10:54.359] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 06:10:55.796] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 06:10:55.796] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 06:10:55.797] [INFO ] Building initial filter cache... [2026-08-21 06:10:55.807] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.4ms idle=1734.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-08-21 06:10:55.812] [DEBUG] QUERY OK source="filter_usage" db=0.5ms queue=0.8ms idle=817.6ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 06:10:55.813] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 06:10:55.879] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 06:10:55.926] [DEBUG] QUERY OK source="core_transactions" db=10.2ms queue=0.9ms idle=110.3ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`transaction_type` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], "SALE"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 06:10:55.932] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=2.1ms idle=116.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 06:10:55.967] [DEBUG] QUERY OK source="core_transactions" db=2.1ms queue=26.2ms idle=15.7ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` = ?) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], "425590250000000", "VISA"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 06:10:55.969] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=0.8ms idle=35.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` = ?) [~D[2026-08-06], ~D[2026-08-06], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 06:10:56.009] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=32.8ms idle=8.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?)) ["425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.merchant_display_name/1, at: lib/settlement_core/settlement_summary_builder.ex:196 [2026-08-21 06:10:56.012] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.6ms idle=12.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`transaction_type` IN (?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 06:10:56.051] [DEBUG] QUERY OK source="merchant_adjustments" db=38.8ms idle=2.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 06:11:24.164] [INFO ] [Ysp.Scheduler] Started. SFTP in 20h 48m, MIS in 1h 48m [2026-08-21 06:11:24.198] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 06:11:24.205] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 06:11:26.307] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 06:11:26.308] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 06:11:26.309] [INFO ] Building initial filter cache... [2026-08-21 06:11:26.322] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.5ms idle=625.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-08-21 06:11:26.338] [DEBUG] QUERY OK source="filter_usage" db=0.6ms queue=1.5ms idle=401.5ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 06:11:26.338] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 06:11:26.479] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 06:11:26.483] [DEBUG] QUERY OK source="core_transactions" db=18.8ms queue=1.5ms idle=142.3ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?)) AND (c0.`transaction_type` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], "VISA", "MASTERCARD", "SALE"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 06:11:26.490] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=0.6ms idle=151.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 06:11:26.494] [INFO ] [EmailPdfGenerator] Rendering settlement_summary_pdf to PDF: Settlement_Summary_2026-08-06_to_2026-08-06.pdf [2026-08-21 06:11:26.518] [INFO ] [EmailPdfGenerator] ✓ HTML rendered, size: 4316 bytes [2026-08-21 06:11:26.519] [INFO ] [EmailPdfGenerator] ✓ HTML written to /tmp/platform_web_pdf_1475/document.html [2026-08-21 06:11:26.519] [INFO ] [EmailPdfGenerator] Using wkhtmltopdf [2026-08-21 06:11:27.045] [INFO ] [EmailPdfGenerator] ✓ PDF rendered successfully, size: 21937 bytes [2026-08-21 06:12:18.183] [INFO ] Running offline device check... [2026-08-21 06:12:18.183] [INFO ] Starting offline device check... [2026-08-21 06:12:18.187] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms idle=605.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-08-21 06:12:18.201] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.4ms idle=260.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 06:12:18.212] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.7ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.214] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=10.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.216] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.219] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=1.6ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.220] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.223] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.224] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.5ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.225] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.228] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.234] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.235] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.2ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.255] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.265] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.2ms queue=0.1ms idle=19.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.269] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=11.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.272] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=1.0ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.274] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.299] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.302] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=26.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 06:12:18.305] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.307] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.312] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.1ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.314] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.358] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=43.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.362] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=44.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 06:12:18.364] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 06:12:18.374] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.9ms queue=0.1ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.376] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=9.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.379] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms queue=0.6ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.382] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.383] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.389] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.390] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.390] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.392] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms 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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.395] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.397] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.399] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.401] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.401] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.403] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.405] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.408] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=1.7ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.410] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.411] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.413] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.416] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.417] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.418] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.422] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=1.2ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.423] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.424] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 06:12:18.424] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-08-21 06:12:18.425] [INFO ] Offline device check completed successfully [2026-08-21 06:16:17.638] [INFO ] [Ysp.Scheduler] Started. SFTP in 20h 43m, MIS in 1h 43m [2026-08-21 06:16:17.669] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 06:16:17.677] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 06:16:19.004] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 06:16:19.005] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 06:16:19.005] [INFO ] Building initial filter cache... [2026-08-21 06:16:19.033] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=1.5ms idle=1607.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-08-21 06:16:19.052] [DEBUG] QUERY OK source="filter_usage" db=3.4ms queue=1.0ms idle=727.7ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 06:16:19.052] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 06:16:19.164] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-08-21 06:16:19.190] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-08-21 06:16:19.195] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 06:16:23.241] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 06:16:23.241] [INFO ] Incoming JSON payload: {"oid":"a22e84ff-1f65-4f91-91d1-b8bef1efea2b","sn":"98251226730001","uploadTime":"2026-08-21T06:16:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"ram_free_mb","value":"891","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"data_usage_mb","value":"23","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T06:16:22Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 06:16:23.285] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a22e84ff-1f65-4f91-91d1-b8bef1efea2b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:16:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T06:16:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:16:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:16:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:16:22Z", "value" => "891"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:16:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:16:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:16:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:16:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:16:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:16:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:16:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:16:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:16:22Z", "value" => "23"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:16:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:16:22Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T06:16:22Z", "vendor" => "morefun"} [2026-08-21 06:16:23.285] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 06:16:23.347] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 06:16:23.347] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 06:16:23.381] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms queue=4.6ms idle=1004.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-08-21 06:16:23.391] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=8.6ms idle=0.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 06:16:23.391] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 06:16:23.444] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 06:16:23.517] [INFO ] Terminal updated: 98251226730001 [2026-08-21 06:16:23.622] [DEBUG] QUERY OK source="tms_terminals" db=82.1ms queue=0.8ms idle=127.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 06:16:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 06:16:23.646] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 06:16:23.649] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms queue=0.8ms idle=201.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 06:16:23.730] [DEBUG] QUERY OK source="tms_terminals" db=64.3ms idle=64.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 06:16:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 06:16:23.844] [DEBUG] QUERY OK db=70.9ms queue=0.3ms idle=123.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a22e84ff-1f65-4f91-91d1-b8bef1efea2b", "2026-08-21T06:16:22Z", ~N[2026-08-21 06:16:23], ~N[2026-08-21 06:16:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 06:16:23.877] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76733, oid: "a22e84ff-1f65-4f91-91d1-b8bef1efea2b", upload_time: "2026-08-21T06:16:22Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:23], updated_at: ~N[2026-08-21 06:16:23]} [2026-08-21 06:16:23.877] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:16:22Z", "value" => "morefun"} [2026-08-21 06:16:23.937] [DEBUG] QUERY OK db=56.8ms queue=2.5ms idle=147.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "morefun", "vendor", 76733, ~N[2026-08-21 06:16:23], ~N[2026-08-21 06:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:23.941] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777400, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:23], updated_at: ~N[2026-08-21 06:16:23]}} [2026-08-21 06:16:23.941] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T06:16:22Z", "value" => "kiosk_launcher"} [2026-08-21 06:16:23.991] [DEBUG] QUERY OK db=49.0ms queue=0.8ms idle=96.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "kiosk_launcher", "model", 76733, ~N[2026-08-21 06:16:23], ~N[2026-08-21 06:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:23.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777403, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:23], updated_at: ~N[2026-08-21 06:16:23]}} [2026-08-21 06:16:23.992] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:16:22Z", "value" => "1.0"} [2026-08-21 06:16:24.063] [DEBUG] QUERY OK db=71.3ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "1.0", "app_version", 76733, ~N[2026-08-21 06:16:23], ~N[2026-08-21 06:16:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:24.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777406, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:23], updated_at: ~N[2026-08-21 06:16:23]}} [2026-08-21 06:16:24.064] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:16:22Z", "value" => "13"} [2026-08-21 06:16:24.107] [DEBUG] QUERY OK db=43.3ms idle=72.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "13", "android_version", 76733, ~N[2026-08-21 06:16:24], ~N[2026-08-21 06:16:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:24.107] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777410, itemkey: "android_version", value: "13", timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:24], updated_at: ~N[2026-08-21 06:16:24]}} [2026-08-21 06:16:24.108] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:16:22Z", "value" => "891"} [2026-08-21 06:16:24.175] [DEBUG] QUERY OK db=53.4ms queue=3.3ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "891", "ram_free_mb", 76733, ~N[2026-08-21 06:16:24], ~N[2026-08-21 06:16:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:24.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777413, itemkey: "ram_free_mb", value: "891", timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:24], updated_at: ~N[2026-08-21 06:16:24]}} [2026-08-21 06:16:24.177] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:16:22Z", "value" => "WIFI"} [2026-08-21 06:16:24.257] [DEBUG] QUERY OK db=78.7ms idle=71.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "WIFI", "network_type", 76733, ~N[2026-08-21 06:16:24], ~N[2026-08-21 06:16:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:24.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777416, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:24], updated_at: ~N[2026-08-21 06:16:24]}} [2026-08-21 06:16:24.258] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:16:22Z", "value" => "true"} [2026-08-21 06:16:24.350] [DEBUG] QUERY OK db=92.3ms idle=82.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "true", "kiosk_active", 76733, ~N[2026-08-21 06:16:24], ~N[2026-08-21 06:16:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:24.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777418, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:24], updated_at: ~N[2026-08-21 06:16:24]}} [2026-08-21 06:16:24.351] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:16:22Z", "value" => ""} [2026-08-21 06:16:24.417] [DEBUG] QUERY OK db=61.6ms queue=4.6ms idle=93.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T06:16:22Z", "sim_operator", 76733, ~N[2026-08-21 06:16:24], ~N[2026-08-21 06:16:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:24.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777421, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:24], updated_at: ~N[2026-08-21 06:16:24]}} [2026-08-21 06:16:24.419] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:16:22Z", "value" => "UNKNOWN"} [2026-08-21 06:16:24.478] [DEBUG] QUERY OK db=57.3ms queue=1.0ms idle=12.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "UNKNOWN", "sim_number", 76733, ~N[2026-08-21 06:16:24], ~N[2026-08-21 06:16:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:24.478] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777422, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:24], updated_at: ~N[2026-08-21 06:16:24]}} [2026-08-21 06:16:24.478] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:16:22Z", "value" => "UNKNOWN"} [2026-08-21 06:16:24.552] [DEBUG] QUERY OK db=68.7ms queue=5.0ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "UNKNOWN", "sim_iccid", 76733, ~N[2026-08-21 06:16:24], ~N[2026-08-21 06:16:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:24.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777423, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:24], updated_at: ~N[2026-08-21 06:16:24]}} [2026-08-21 06:16:24.554] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:16:22Z", "value" => "UNKNOWN"} [2026-08-21 06:16:24.630] [DEBUG] QUERY OK db=68.5ms queue=1.6ms idle=81.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "UNKNOWN", "sim_imsi", 76733, ~N[2026-08-21 06:16:24], ~N[2026-08-21 06:16:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:24.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777424, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:24], updated_at: ~N[2026-08-21 06:16:24]}} [2026-08-21 06:16:24.631] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:16:22Z", "value" => "UNKNOWN"} [2026-08-21 06:16:24.678] [DEBUG] QUERY OK db=45.9ms idle=79.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "UNKNOWN", "sim_iccid2", 76733, ~N[2026-08-21 06:16:24], ~N[2026-08-21 06:16:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:24.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777425, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:24], updated_at: ~N[2026-08-21 06:16:24]}} [2026-08-21 06:16:24.680] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:16:22Z", "value" => "UNKNOWN"} [2026-08-21 06:16:24.725] [DEBUG] QUERY OK db=42.2ms idle=53.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "UNKNOWN", "sim_imsi2", 76733, ~N[2026-08-21 06:16:24], ~N[2026-08-21 06:16:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:24.726] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777426, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:24], updated_at: ~N[2026-08-21 06:16:24]}} [2026-08-21 06:16:24.726] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:16:22Z", "value" => "23"} [2026-08-21 06:16:24.776] [DEBUG] QUERY OK db=48.1ms queue=1.5ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "23", "data_usage_mb", 76733, ~N[2026-08-21 06:16:24], ~N[2026-08-21 06:16:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:24.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777427, itemkey: "data_usage_mb", value: "23", timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:24], updated_at: ~N[2026-08-21 06:16:24]}} [2026-08-21 06:16:24.785] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:16:22Z", "value" => "0"} [2026-08-21 06:16:24.838] [DEBUG] QUERY OK db=51.9ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "0", "mobile_data_mb", 76733, ~N[2026-08-21 06:16:24], ~N[2026-08-21 06:16:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:24.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777428, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:24], updated_at: ~N[2026-08-21 06:16:24]}} [2026-08-21 06:16:24.842] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:16:22Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 06:16:24.905] [DEBUG] QUERY OK db=61.9ms idle=65.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:22Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76733, ~N[2026-08-21 06:16:24], ~N[2026-08-21 06:16:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:24.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777429, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T06:16:22Z", message: nil, status_log_id: 76733, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:24], updated_at: ~N[2026-08-21 06:16:24]}} [2026-08-21 06:16:53.314] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 06:16:53.315] [INFO ] Incoming JSON payload: {"oid":"c75dc671-6485-4144-9e82-1cc5cb495451","sn":"98251226730001","uploadTime":"2026-08-21T06:16:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"ram_free_mb","value":"888","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"data_usage_mb","value":"23","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T06:16:52Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 06:16:53.324] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c75dc671-6485-4144-9e82-1cc5cb495451", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:16:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T06:16:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:16:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:16:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:16:52Z", "value" => "888"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:16:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:16:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:16:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:16:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:16:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:16:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:16:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:16:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:16:52Z", "value" => "23"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:16:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:16:52Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T06:16:52Z", "vendor" => "morefun"} [2026-08-21 06:16:53.324] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 06:16:53.324] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 06:16:53.324] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 06:16:53.329] [DEBUG] QUERY OK source="parameter_templates" db=5.1ms idle=799.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-08-21 06:16:53.330] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=163.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-08-21 06:16:53.330] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 06:16:53.333] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 06:16:53.333] [INFO ] Terminal updated: 98251226730001 [2026-08-21 06:16:53.374] [DEBUG] QUERY OK source="tms_terminals" db=40.3ms queue=0.3ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 06:16:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 06:16:53.375] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 06:16:53.378] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=42.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 06:16:53.407] [DEBUG] QUERY OK source="tms_terminals" db=29.3ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 06:16:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 06:16:53.464] [DEBUG] QUERY OK db=55.2ms queue=0.8ms idle=30.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c75dc671-6485-4144-9e82-1cc5cb495451", "2026-08-21T06:16:52Z", ~N[2026-08-21 06:16:53], ~N[2026-08-21 06:16:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 06:16:53.464] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76734, oid: "c75dc671-6485-4144-9e82-1cc5cb495451", upload_time: "2026-08-21T06:16:52Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:53], updated_at: ~N[2026-08-21 06:16:53]} [2026-08-21 06:16:53.464] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:16:52Z", "value" => "morefun"} [2026-08-21 06:16:53.524] [DEBUG] QUERY OK db=59.7ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "morefun", "vendor", 76734, ~N[2026-08-21 06:16:53], ~N[2026-08-21 06:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:53.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777430, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:53], updated_at: ~N[2026-08-21 06:16:53]}} [2026-08-21 06:16:53.525] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T06:16:52Z", "value" => "kiosk_launcher"} [2026-08-21 06:16:53.577] [DEBUG] QUERY OK db=51.1ms idle=61.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "kiosk_launcher", "model", 76734, ~N[2026-08-21 06:16:53], ~N[2026-08-21 06:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:53.577] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777433, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:53], updated_at: ~N[2026-08-21 06:16:53]}} [2026-08-21 06:16:53.577] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:16:52Z", "value" => "1.0"} [2026-08-21 06:16:53.660] [DEBUG] QUERY OK db=81.5ms queue=0.5ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "1.0", "app_version", 76734, ~N[2026-08-21 06:16:53], ~N[2026-08-21 06:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:53.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777436, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:53], updated_at: ~N[2026-08-21 06:16:53]}} [2026-08-21 06:16:53.660] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:16:52Z", "value" => "13"} [2026-08-21 06:16:53.732] [DEBUG] QUERY OK db=71.5ms idle=83.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "13", "android_version", 76734, ~N[2026-08-21 06:16:53], ~N[2026-08-21 06:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:53.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777439, itemkey: "android_version", value: "13", timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:53], updated_at: ~N[2026-08-21 06:16:53]}} [2026-08-21 06:16:53.733] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:16:52Z", "value" => "888"} [2026-08-21 06:16:53.802] [DEBUG] QUERY OK db=69.1ms idle=73.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "888", "ram_free_mb", 76734, ~N[2026-08-21 06:16:53], ~N[2026-08-21 06:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:53.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777442, itemkey: "ram_free_mb", value: "888", timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:53], updated_at: ~N[2026-08-21 06:16:53]}} [2026-08-21 06:16:53.803] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:16:52Z", "value" => "WIFI"} [2026-08-21 06:16:53.862] [DEBUG] QUERY OK db=58.7ms idle=70.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "WIFI", "network_type", 76734, ~N[2026-08-21 06:16:53], ~N[2026-08-21 06:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:53.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777445, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:53], updated_at: ~N[2026-08-21 06:16:53]}} [2026-08-21 06:16:53.863] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:16:52Z", "value" => "true"} [2026-08-21 06:16:53.906] [DEBUG] QUERY OK db=42.5ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "true", "kiosk_active", 76734, ~N[2026-08-21 06:16:53], ~N[2026-08-21 06:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:53.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777448, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:53], updated_at: ~N[2026-08-21 06:16:53]}} [2026-08-21 06:16:53.906] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:16:52Z", "value" => ""} [2026-08-21 06:16:53.966] [DEBUG] QUERY OK db=56.8ms queue=0.6ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T06:16:52Z", "sim_operator", 76734, ~N[2026-08-21 06:16:53], ~N[2026-08-21 06:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:53.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777451, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:53], updated_at: ~N[2026-08-21 06:16:53]}} [2026-08-21 06:16:53.966] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:16:52Z", "value" => "UNKNOWN"} [2026-08-21 06:16:54.008] [DEBUG] QUERY OK db=40.8ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "UNKNOWN", "sim_number", 76734, ~N[2026-08-21 06:16:53], ~N[2026-08-21 06:16:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:54.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777454, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:53], updated_at: ~N[2026-08-21 06:16:53]}} [2026-08-21 06:16:54.008] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:16:52Z", "value" => "UNKNOWN"} [2026-08-21 06:16:54.094] [DEBUG] QUERY OK db=85.7ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "UNKNOWN", "sim_iccid", 76734, ~N[2026-08-21 06:16:54], ~N[2026-08-21 06:16:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:54.095] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777456, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:54], updated_at: ~N[2026-08-21 06:16:54]}} [2026-08-21 06:16:54.095] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:16:52Z", "value" => "UNKNOWN"} [2026-08-21 06:16:54.147] [DEBUG] QUERY OK db=51.7ms idle=87.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "UNKNOWN", "sim_imsi", 76734, ~N[2026-08-21 06:16:54], ~N[2026-08-21 06:16:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:54.148] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777460, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:54], updated_at: ~N[2026-08-21 06:16:54]}} [2026-08-21 06:16:54.148] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:16:52Z", "value" => "UNKNOWN"} [2026-08-21 06:16:54.219] [DEBUG] QUERY OK db=70.5ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "UNKNOWN", "sim_iccid2", 76734, ~N[2026-08-21 06:16:54], ~N[2026-08-21 06:16:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:54.219] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777463, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:54], updated_at: ~N[2026-08-21 06:16:54]}} [2026-08-21 06:16:54.219] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:16:52Z", "value" => "UNKNOWN"} [2026-08-21 06:16:54.270] [DEBUG] QUERY OK db=49.3ms idle=72.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "UNKNOWN", "sim_imsi2", 76734, ~N[2026-08-21 06:16:54], ~N[2026-08-21 06:16:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:54.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777465, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:54], updated_at: ~N[2026-08-21 06:16:54]}} [2026-08-21 06:16:54.272] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:16:52Z", "value" => "23"} [2026-08-21 06:16:54.325] [DEBUG] QUERY OK db=53.2ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "23", "data_usage_mb", 76734, ~N[2026-08-21 06:16:54], ~N[2026-08-21 06:16:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:54.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777469, itemkey: "data_usage_mb", value: "23", timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:54], updated_at: ~N[2026-08-21 06:16:54]}} [2026-08-21 06:16:54.326] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:16:52Z", "value" => "0"} [2026-08-21 06:16:54.417] [DEBUG] QUERY OK db=91.3ms idle=56.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "0", "mobile_data_mb", 76734, ~N[2026-08-21 06:16:54], ~N[2026-08-21 06:16:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:54.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777471, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:54], updated_at: ~N[2026-08-21 06:16:54]}} [2026-08-21 06:16:54.420] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:16:52Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 06:16:54.482] [DEBUG] QUERY OK db=60.7ms idle=95.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:16:52Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76734, ~N[2026-08-21 06:16:54], ~N[2026-08-21 06:16:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:16:54.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777474, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T06:16:52Z", message: nil, status_log_id: 76734, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:16:54], updated_at: ~N[2026-08-21 06:16:54]}} [2026-08-21 06:17:23.431] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 06:17:23.431] [INFO ] Incoming JSON payload: {"oid":"b2e660ca-8611-4821-b179-dce3d81ee854","sn":"98251226730001","uploadTime":"2026-08-21T06:17:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"ram_free_mb","value":"886","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"data_usage_mb","value":"23","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T06:17:23Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 06:17:23.435] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b2e660ca-8611-4821-b179-dce3d81ee854", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:17:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T06:17:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:17:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:17:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:17:23Z", "value" => "886"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:17:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:17:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:17:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:17:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:17:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:17:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:17:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:17:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:17:23Z", "value" => "23"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:17:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:17:23Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T06:17:23Z", "vendor" => "morefun"} [2026-08-21 06:17:23.435] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 06:17:23.435] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 06:17:23.435] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 06:17:23.437] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=818.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-08-21 06:17:23.440] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms queue=0.2ms idle=270.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-08-21 06:17:23.440] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 06:17:23.443] [DEBUG] QUERY OK source="tms_terminals" db=2.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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 06:17:23.443] [INFO ] Terminal updated: 98251226730001 [2026-08-21 06:17:23.467] [DEBUG] QUERY OK source="tms_terminals" db=23.1ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 06:17:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 06:17:23.467] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 06:17:23.471] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=1.0ms idle=25.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 06:17:23.548] [DEBUG] QUERY OK source="tms_terminals" db=74.9ms queue=0.1ms idle=6.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 06:17:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 06:17:23.606] [DEBUG] QUERY OK db=57.3ms queue=0.1ms idle=78.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b2e660ca-8611-4821-b179-dce3d81ee854", "2026-08-21T06:17:23Z", ~N[2026-08-21 06:17:23], ~N[2026-08-21 06:17:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 06:17:23.606] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76737, oid: "b2e660ca-8611-4821-b179-dce3d81ee854", upload_time: "2026-08-21T06:17:23Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:23], updated_at: ~N[2026-08-21 06:17:23]} [2026-08-21 06:17:23.606] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:17:23Z", "value" => "morefun"} [2026-08-21 06:17:23.678] [DEBUG] QUERY OK db=70.6ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "morefun", "vendor", 76737, ~N[2026-08-21 06:17:23], ~N[2026-08-21 06:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:23.678] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777478, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:23], updated_at: ~N[2026-08-21 06:17:23]}} [2026-08-21 06:17:23.678] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T06:17:23Z", "value" => "kiosk_launcher"} [2026-08-21 06:17:23.763] [DEBUG] QUERY OK db=84.9ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "kiosk_launcher", "model", 76737, ~N[2026-08-21 06:17:23], ~N[2026-08-21 06:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:23.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777481, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:23], updated_at: ~N[2026-08-21 06:17:23]}} [2026-08-21 06:17:23.764] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:17:23Z", "value" => "1.0"} [2026-08-21 06:17:23.886] [DEBUG] QUERY OK db=121.4ms idle=87.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "1.0", "app_version", 76737, ~N[2026-08-21 06:17:23], ~N[2026-08-21 06:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:23.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777484, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:23], updated_at: ~N[2026-08-21 06:17:23]}} [2026-08-21 06:17:23.887] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:17:23Z", "value" => "13"} [2026-08-21 06:17:24.041] [DEBUG] QUERY OK db=154.1ms queue=0.1ms idle=123.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "13", "android_version", 76737, ~N[2026-08-21 06:17:23], ~N[2026-08-21 06:17:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:24.046] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777487, itemkey: "android_version", value: "13", timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:23], updated_at: ~N[2026-08-21 06:17:23]}} [2026-08-21 06:17:24.047] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:17:23Z", "value" => "886"} [2026-08-21 06:17:24.115] [DEBUG] QUERY OK db=66.2ms queue=1.0ms idle=161.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "886", "ram_free_mb", 76737, ~N[2026-08-21 06:17:24], ~N[2026-08-21 06:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:24.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777491, itemkey: "ram_free_mb", value: "886", timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:24], updated_at: ~N[2026-08-21 06:17:24]}} [2026-08-21 06:17:24.115] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:17:23Z", "value" => "WIFI"} [2026-08-21 06:17:24.167] [DEBUG] QUERY OK db=51.7ms idle=74.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "WIFI", "network_type", 76737, ~N[2026-08-21 06:17:24], ~N[2026-08-21 06:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:24.167] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777494, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:24], updated_at: ~N[2026-08-21 06:17:24]}} [2026-08-21 06:17:24.167] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:17:23Z", "value" => "true"} [2026-08-21 06:17:24.256] [DEBUG] QUERY OK db=88.0ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "true", "kiosk_active", 76737, ~N[2026-08-21 06:17:24], ~N[2026-08-21 06:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:24.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777497, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:24], updated_at: ~N[2026-08-21 06:17:24]}} [2026-08-21 06:17:24.256] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:17:23Z", "value" => ""} [2026-08-21 06:17:24.318] [DEBUG] QUERY OK db=61.2ms idle=89.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T06:17:23Z", "sim_operator", 76737, ~N[2026-08-21 06:17:24], ~N[2026-08-21 06:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:24.318] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777500, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:24], updated_at: ~N[2026-08-21 06:17:24]}} [2026-08-21 06:17:24.318] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:17:23Z", "value" => "UNKNOWN"} [2026-08-21 06:17:24.365] [DEBUG] QUERY OK db=45.1ms idle=64.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "UNKNOWN", "sim_number", 76737, ~N[2026-08-21 06:17:24], ~N[2026-08-21 06:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:24.366] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777504, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:24], updated_at: ~N[2026-08-21 06:17:24]}} [2026-08-21 06:17:24.366] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:17:23Z", "value" => "UNKNOWN"} [2026-08-21 06:17:24.438] [DEBUG] QUERY OK db=72.0ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "UNKNOWN", "sim_iccid", 76737, ~N[2026-08-21 06:17:24], ~N[2026-08-21 06:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:24.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777507, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:24], updated_at: ~N[2026-08-21 06:17:24]}} [2026-08-21 06:17:24.439] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:17:23Z", "value" => "UNKNOWN"} [2026-08-21 06:17:24.503] [DEBUG] QUERY OK db=64.4ms queue=0.1ms idle=73.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "UNKNOWN", "sim_imsi", 76737, ~N[2026-08-21 06:17:24], ~N[2026-08-21 06:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:24.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777511, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:24], updated_at: ~N[2026-08-21 06:17:24]}} [2026-08-21 06:17:24.504] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:17:23Z", "value" => "UNKNOWN"} [2026-08-21 06:17:24.553] [DEBUG] QUERY OK db=43.2ms idle=71.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "UNKNOWN", "sim_iccid2", 76737, ~N[2026-08-21 06:17:24], ~N[2026-08-21 06:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:24.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777514, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:24], updated_at: ~N[2026-08-21 06:17:24]}} [2026-08-21 06:17:24.553] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:17:23Z", "value" => "UNKNOWN"} [2026-08-21 06:17:24.595] [DEBUG] QUERY OK db=41.5ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "UNKNOWN", "sim_imsi2", 76737, ~N[2026-08-21 06:17:24], ~N[2026-08-21 06:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:24.595] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777517, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:24], updated_at: ~N[2026-08-21 06:17:24]}} [2026-08-21 06:17:24.596] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:17:23Z", "value" => "23"} [2026-08-21 06:17:24.692] [DEBUG] QUERY OK db=88.3ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "23", "data_usage_mb", 76737, ~N[2026-08-21 06:17:24], ~N[2026-08-21 06:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:24.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777520, itemkey: "data_usage_mb", value: "23", timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:24], updated_at: ~N[2026-08-21 06:17:24]}} [2026-08-21 06:17:24.692] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:17:23Z", "value" => "0"} [2026-08-21 06:17:24.866] [DEBUG] QUERY OK db=173.9ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "0", "mobile_data_mb", 76737, ~N[2026-08-21 06:17:24], ~N[2026-08-21 06:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:24.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777523, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:24], updated_at: ~N[2026-08-21 06:17:24]}} [2026-08-21 06:17:24.867] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:17:23Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 06:17:24.924] [DEBUG] QUERY OK db=52.2ms queue=3.6ms idle=176.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:23Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76737, ~N[2026-08-21 06:17:24], ~N[2026-08-21 06:17:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:24.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777525, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T06:17:23Z", message: nil, status_log_id: 76737, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:24], updated_at: ~N[2026-08-21 06:17:24]}} [2026-08-21 06:17:53.554] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 06:17:53.554] [INFO ] Incoming JSON payload: {"oid":"e2044b56-a336-436a-a445-652159841093","sn":"98251226730001","uploadTime":"2026-08-21T06:17:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"ram_free_mb","value":"883","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"data_usage_mb","value":"23","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T06:17:53Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 06:17:53.556] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e2044b56-a336-436a-a445-652159841093", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:17:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T06:17:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:17:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:17:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:17:53Z", "value" => "883"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:17:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:17:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:17:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:17:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:17:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:17:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:17:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:17:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:17:53Z", "value" => "23"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:17:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:17:53Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T06:17:53Z", "vendor" => "morefun"} [2026-08-21 06:17:53.557] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 06:17:53.557] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 06:17:53.557] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 06:17:53.559] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=832.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-08-21 06:17:53.564] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms idle=384.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-08-21 06:17:53.564] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 06:17:53.565] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=4.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 06:17:53.565] [INFO ] Terminal updated: 98251226730001 [2026-08-21 06:17:53.623] [DEBUG] QUERY OK source="tms_terminals" db=56.2ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 06:17:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 06:17:53.624] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 06:17:53.625] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=59.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 06:17:53.679] [DEBUG] QUERY OK source="tms_terminals" db=53.6ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 06:17:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 06:17:53.740] [DEBUG] QUERY OK db=60.2ms idle=54.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e2044b56-a336-436a-a445-652159841093", "2026-08-21T06:17:53Z", ~N[2026-08-21 06:17:53], ~N[2026-08-21 06:17:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 06:17:53.740] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76740, oid: "e2044b56-a336-436a-a445-652159841093", upload_time: "2026-08-21T06:17:53Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:53], updated_at: ~N[2026-08-21 06:17:53]} [2026-08-21 06:17:53.740] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:17:53Z", "value" => "morefun"} [2026-08-21 06:17:53.772] [DEBUG] QUERY OK db=31.4ms queue=0.3ms idle=13.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:53Z", "morefun", "vendor", 76740, ~N[2026-08-21 06:17:53], ~N[2026-08-21 06:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:53.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777526, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:53], updated_at: ~N[2026-08-21 06:17:53]}} [2026-08-21 06:17:53.773] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T06:17:53Z", "value" => "kiosk_launcher"} [2026-08-21 06:17:53.816] [DEBUG] QUERY OK db=42.3ms queue=0.2ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:53Z", "kiosk_launcher", "model", 76740, ~N[2026-08-21 06:17:53], ~N[2026-08-21 06:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:53.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777529, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:53], updated_at: ~N[2026-08-21 06:17:53]}} [2026-08-21 06:17:53.816] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:17:53Z", "value" => "1.0"} [2026-08-21 06:17:53.876] [DEBUG] QUERY OK db=59.5ms queue=0.1ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:53Z", "1.0", "app_version", 76740, ~N[2026-08-21 06:17:53], ~N[2026-08-21 06:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:53.876] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777532, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:53], updated_at: ~N[2026-08-21 06:17:53]}} [2026-08-21 06:17:53.877] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:17:53Z", "value" => "13"} [2026-08-21 06:17:53.960] [DEBUG] QUERY OK db=82.9ms queue=0.2ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:53Z", "13", "android_version", 76740, ~N[2026-08-21 06:17:53], ~N[2026-08-21 06:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:53.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777535, itemkey: "android_version", value: "13", timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:53], updated_at: ~N[2026-08-21 06:17:53]}} [2026-08-21 06:17:53.961] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:17:53Z", "value" => "883"} [2026-08-21 06:17:54.032] [DEBUG] QUERY OK db=71.1ms idle=85.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:53Z", "883", "ram_free_mb", 76740, ~N[2026-08-21 06:17:53], ~N[2026-08-21 06:17:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:54.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777538, itemkey: "ram_free_mb", value: "883", timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:53], updated_at: ~N[2026-08-21 06:17:53]}} [2026-08-21 06:17:54.033] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:17:53Z", "value" => "WIFI"} [2026-08-21 06:17:54.102] [DEBUG] QUERY OK db=68.2ms queue=0.1ms idle=73.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:53Z", "WIFI", "network_type", 76740, ~N[2026-08-21 06:17:54], ~N[2026-08-21 06:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:54.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777541, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:54], updated_at: ~N[2026-08-21 06:17:54]}} [2026-08-21 06:17:54.102] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:17:53Z", "value" => "true"} [2026-08-21 06:17:54.328] [DEBUG] QUERY OK db=225.4ms queue=0.2ms idle=70.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:53Z", "true", "kiosk_active", 76740, ~N[2026-08-21 06:17:54], ~N[2026-08-21 06:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:54.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777544, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:54], updated_at: ~N[2026-08-21 06:17:54]}} [2026-08-21 06:17:54.329] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:17:53Z", "value" => ""} [2026-08-21 06:17:54.425] [DEBUG] QUERY OK db=95.9ms idle=227.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T06:17:53Z", "sim_operator", 76740, ~N[2026-08-21 06:17:54], ~N[2026-08-21 06:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:54.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777547, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:54], updated_at: ~N[2026-08-21 06:17:54]}} [2026-08-21 06:17:54.425] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:17:53Z", "value" => "UNKNOWN"} [2026-08-21 06:17:54.488] [DEBUG] QUERY OK db=61.1ms queue=0.6ms idle=97.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:53Z", "UNKNOWN", "sim_number", 76740, ~N[2026-08-21 06:17:54], ~N[2026-08-21 06:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:54.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777550, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:54], updated_at: ~N[2026-08-21 06:17:54]}} [2026-08-21 06:17:54.488] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:17:53Z", "value" => "UNKNOWN"} [2026-08-21 06:17:54.537] [DEBUG] QUERY OK db=48.4ms idle=63.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:53Z", "UNKNOWN", "sim_iccid", 76740, ~N[2026-08-21 06:17:54], ~N[2026-08-21 06:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:54.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777553, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:54], updated_at: ~N[2026-08-21 06:17:54]}} [2026-08-21 06:17:54.537] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:17:53Z", "value" => "UNKNOWN"} [2026-08-21 06:17:54.606] [DEBUG] QUERY OK db=68.6ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:53Z", "UNKNOWN", "sim_imsi", 76740, ~N[2026-08-21 06:17:54], ~N[2026-08-21 06:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:54.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777556, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:54], updated_at: ~N[2026-08-21 06:17:54]}} [2026-08-21 06:17:54.607] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:17:53Z", "value" => "UNKNOWN"} [2026-08-21 06:17:54.672] [DEBUG] QUERY OK db=61.6ms idle=73.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:53Z", "UNKNOWN", "sim_iccid2", 76740, ~N[2026-08-21 06:17:54], ~N[2026-08-21 06:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:54.672] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777559, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:54], updated_at: ~N[2026-08-21 06:17:54]}} [2026-08-21 06:17:54.673] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:17:53Z", "value" => "UNKNOWN"} [2026-08-21 06:17:54.716] [DEBUG] QUERY OK db=42.4ms idle=67.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:53Z", "UNKNOWN", "sim_imsi2", 76740, ~N[2026-08-21 06:17:54], ~N[2026-08-21 06:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:54.716] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777562, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:54], updated_at: ~N[2026-08-21 06:17:54]}} [2026-08-21 06:17:54.716] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:17:53Z", "value" => "23"} [2026-08-21 06:17:54.763] [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-08-21T06:17:53Z", "23", "data_usage_mb", 76740, ~N[2026-08-21 06:17:54], ~N[2026-08-21 06:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:54.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777565, itemkey: "data_usage_mb", value: "23", timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:54], updated_at: ~N[2026-08-21 06:17:54]}} [2026-08-21 06:17:54.765] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:17:53Z", "value" => "0"} [2026-08-21 06:17:54.843] [DEBUG] QUERY OK db=78.2ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:53Z", "0", "mobile_data_mb", 76740, ~N[2026-08-21 06:17:54], ~N[2026-08-21 06:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:54.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777568, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:54], updated_at: ~N[2026-08-21 06:17:54]}} [2026-08-21 06:17:54.845] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:17:53Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 06:17:54.898] [DEBUG] QUERY OK db=50.4ms idle=84.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:17:53Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76740, ~N[2026-08-21 06:17:54], ~N[2026-08-21 06:17:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:17:54.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777571, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T06:17:53Z", message: nil, status_log_id: 76740, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:17:54], updated_at: ~N[2026-08-21 06:17:54]}} [2026-08-21 06:18:24.206] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 06:18:24.206] [INFO ] Incoming JSON payload: {"oid":"9b4bf1e1-9fe0-427d-9b28-69194de5f029","sn":"98251226730001","uploadTime":"2026-08-21T06:18:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"ram_free_mb","value":"883","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"data_usage_mb","value":"23","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T06:18:23Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 06:18:24.207] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "9b4bf1e1-9fe0-427d-9b28-69194de5f029", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:18:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T06:18:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:18:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:18:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:18:23Z", "value" => "883"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:18:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:18:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:18:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:18:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:18:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:18:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:18:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:18:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:18:23Z", "value" => "23"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:18:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:18:23Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T06:18:23Z", "vendor" => "morefun"} [2026-08-21 06:18:24.211] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 06:18:24.211] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 06:18:24.211] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 06:18:24.214] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=1.8ms idle=1033.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 06:18:24.214] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=360.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-08-21 06:18:24.214] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 06:18:24.216] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 06:18:24.216] [INFO ] Terminal updated: 98251226730001 [2026-08-21 06:18:24.281] [DEBUG] QUERY OK source="tms_terminals" db=61.0ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 06:18:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 06:18:24.281] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 06:18:24.283] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=65.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 06:18:24.322] [DEBUG] QUERY OK source="tms_terminals" db=38.1ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 06:18:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 06:18:24.400] [DEBUG] QUERY OK db=77.2ms idle=38.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "9b4bf1e1-9fe0-427d-9b28-69194de5f029", "2026-08-21T06:18:23Z", ~N[2026-08-21 06:18:24], ~N[2026-08-21 06:18:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 06:18:24.400] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76743, oid: "9b4bf1e1-9fe0-427d-9b28-69194de5f029", upload_time: "2026-08-21T06:18:23Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:24], updated_at: ~N[2026-08-21 06:18:24]} [2026-08-21 06:18:24.401] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:18:23Z", "value" => "morefun"} [2026-08-21 06:18:24.465] [DEBUG] QUERY OK db=61.6ms idle=81.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "morefun", "vendor", 76743, ~N[2026-08-21 06:18:24], ~N[2026-08-21 06:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:24.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777576, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:24], updated_at: ~N[2026-08-21 06:18:24]}} [2026-08-21 06:18:24.466] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T06:18:23Z", "value" => "kiosk_launcher"} [2026-08-21 06:18:24.512] [DEBUG] QUERY OK db=45.1ms queue=0.1ms idle=66.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "kiosk_launcher", "model", 76743, ~N[2026-08-21 06:18:24], ~N[2026-08-21 06:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:24.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777579, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:24], updated_at: ~N[2026-08-21 06:18:24]}} [2026-08-21 06:18:24.512] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:18:23Z", "value" => "1.0"} [2026-08-21 06:18:24.554] [DEBUG] QUERY OK db=39.9ms queue=1.3ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "1.0", "app_version", 76743, ~N[2026-08-21 06:18:24], ~N[2026-08-21 06:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:24.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777582, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:24], updated_at: ~N[2026-08-21 06:18:24]}} [2026-08-21 06:18:24.554] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:18:23Z", "value" => "13"} [2026-08-21 06:18:24.607] [DEBUG] QUERY OK db=52.7ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "13", "android_version", 76743, ~N[2026-08-21 06:18:24], ~N[2026-08-21 06:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:24.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777584, itemkey: "android_version", value: "13", timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:24], updated_at: ~N[2026-08-21 06:18:24]}} [2026-08-21 06:18:24.608] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:18:23Z", "value" => "883"} [2026-08-21 06:18:24.696] [DEBUG] QUERY OK db=87.8ms idle=54.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "883", "ram_free_mb", 76743, ~N[2026-08-21 06:18:24], ~N[2026-08-21 06:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:24.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777587, itemkey: "ram_free_mb", value: "883", timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:24], updated_at: ~N[2026-08-21 06:18:24]}} [2026-08-21 06:18:24.696] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:18:23Z", "value" => "WIFI"} [2026-08-21 06:18:24.729] [DEBUG] QUERY OK db=32.8ms idle=89.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "WIFI", "network_type", 76743, ~N[2026-08-21 06:18:24], ~N[2026-08-21 06:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:24.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777590, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:24], updated_at: ~N[2026-08-21 06:18:24]}} [2026-08-21 06:18:24.730] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:18:23Z", "value" => "true"} [2026-08-21 06:18:24.769] [DEBUG] QUERY OK db=35.1ms queue=0.2ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "true", "kiosk_active", 76743, ~N[2026-08-21 06:18:24], ~N[2026-08-21 06:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:24.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777593, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:24], updated_at: ~N[2026-08-21 06:18:24]}} [2026-08-21 06:18:24.769] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:18:23Z", "value" => ""} [2026-08-21 06:18:24.839] [DEBUG] QUERY OK db=68.3ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T06:18:23Z", "sim_operator", 76743, ~N[2026-08-21 06:18:24], ~N[2026-08-21 06:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:24.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777597, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:24], updated_at: ~N[2026-08-21 06:18:24]}} [2026-08-21 06:18:24.840] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:18:23Z", "value" => "UNKNOWN"} [2026-08-21 06:18:24.885] [DEBUG] QUERY OK db=45.1ms idle=71.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "UNKNOWN", "sim_number", 76743, ~N[2026-08-21 06:18:24], ~N[2026-08-21 06:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:24.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777600, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:24], updated_at: ~N[2026-08-21 06:18:24]}} [2026-08-21 06:18:24.886] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:18:23Z", "value" => "UNKNOWN"} [2026-08-21 06:18:24.940] [DEBUG] QUERY OK db=51.6ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "UNKNOWN", "sim_iccid", 76743, ~N[2026-08-21 06:18:24], ~N[2026-08-21 06:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:24.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777603, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:24], updated_at: ~N[2026-08-21 06:18:24]}} [2026-08-21 06:18:24.940] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:18:23Z", "value" => "UNKNOWN"} [2026-08-21 06:18:25.001] [DEBUG] QUERY OK db=59.8ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "UNKNOWN", "sim_imsi", 76743, ~N[2026-08-21 06:18:24], ~N[2026-08-21 06:18:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:25.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777605, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:24], updated_at: ~N[2026-08-21 06:18:24]}} [2026-08-21 06:18:25.002] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:18:23Z", "value" => "UNKNOWN"} [2026-08-21 06:18:25.057] [DEBUG] QUERY OK db=54.7ms queue=0.1ms idle=62.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "UNKNOWN", "sim_iccid2", 76743, ~N[2026-08-21 06:18:25], ~N[2026-08-21 06:18:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:25.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777609, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:25], updated_at: ~N[2026-08-21 06:18:25]}} [2026-08-21 06:18:25.058] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:18:23Z", "value" => "UNKNOWN"} [2026-08-21 06:18:25.166] [DEBUG] QUERY OK db=108.3ms idle=56.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "UNKNOWN", "sim_imsi2", 76743, ~N[2026-08-21 06:18:25], ~N[2026-08-21 06:18:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:25.167] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777611, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:25], updated_at: ~N[2026-08-21 06:18:25]}} [2026-08-21 06:18:25.167] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:18:23Z", "value" => "23"} [2026-08-21 06:18:25.362] [DEBUG] QUERY OK db=192.4ms idle=110.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "23", "data_usage_mb", 76743, ~N[2026-08-21 06:18:25], ~N[2026-08-21 06:18:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:25.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777614, itemkey: "data_usage_mb", value: "23", timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:25], updated_at: ~N[2026-08-21 06:18:25]}} [2026-08-21 06:18:25.364] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:18:23Z", "value" => "0"} [2026-08-21 06:18:25.420] [DEBUG] QUERY OK db=53.7ms idle=200.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "0", "mobile_data_mb", 76743, ~N[2026-08-21 06:18:25], ~N[2026-08-21 06:18:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:25.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777618, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:25], updated_at: ~N[2026-08-21 06:18:25]}} [2026-08-21 06:18:25.421] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:18:23Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 06:18:25.521] [DEBUG] QUERY OK db=98.7ms idle=62.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:23Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76743, ~N[2026-08-21 06:18:25], ~N[2026-08-21 06:18:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:25.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777620, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T06:18:23Z", message: nil, status_log_id: 76743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:25], updated_at: ~N[2026-08-21 06:18:25]}} [2026-08-21 06:18:40.932] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 06:18:40.932] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T06:18:40Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T06:18:40Z","value":"26"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T06:18:40Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T06:18:40Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T06:18:40Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T06:18:40Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T06:18:40Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T06:18:40Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T06:18:40Z","vendor":"MoreFun"} [2026-08-21 06:18:40.933] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T06:18:40Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T06:18:40Z", "value" => "26"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T06:18:40Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T06:18:40Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T06:18:40Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T06:18:40Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T06:18:40Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T06:18:40Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T06:18:40Z", "vendor" => "MoreFun"} [2026-08-21 06:18:40.933] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 06:18:40.933] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 06:18:40.933] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 06:18:40.934] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=957.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-08-21 06:18:40.935] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=34.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 06:18:40.949] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms queue=2.9ms idle=11.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-08-21 06:18:40.974] [DEBUG] QUERY OK source="parameter_definitions" db=1.2ms queue=0.8ms idle=37.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-08-21 06:18:40.994] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms queue=0.3ms idle=43.5ms 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-08-21 06:18:41.015] [DEBUG] QUERY OK source="pos_merchant" db=0.2ms queue=11.9ms idle=28.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 06:18:41.023] [DEBUG] QUERY OK db=0.7ms queue=0.4ms idle=1842.8ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["626165170000000"] [2026-08-21 06:18:41.024] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 06:18:41.029] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms queue=0.6ms idle=34.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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 06:18:41.034] [DEBUG] QUERY OK source="address" db=0.4ms queue=0.5ms idle=18.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 06:18:41.034] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 06:18:41.047] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 06:18:41.354] [DEBUG] QUERY OK db=279.3ms queue=0.6ms idle=31.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ebcd5263ad10c1dd7acef3fab76db680cd73c09e96d92bf9d1c9039716fc89be", 420, 939, ~U[2026-08-21 06:18:41Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 06:18:41], ~N[2026-08-21 06:18:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 06:18:41.355] [INFO ] AutoPushService: Created push log 48281 for MF919 params.zip [2026-08-21 06:18:41.370] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 420, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 06:18:41.370] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 06:18:41.382] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 06:18:41.419] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.9ms idle=383.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 06:18:41.434] [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-08-21 06:18:41.610] [DEBUG] QUERY OK db=171.9ms queue=3.6ms idle=94.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e64906dcee7216ec0ac741eb1a738a2c252b19f8e20161acff4c4c491fe80019", 4322, 17947, ~U[2026-08-21 06:18:41Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 06:18:41], ~N[2026-08-21 06:18:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 06:18:41.610] [INFO ] AutoPushService: Created push log 48283 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 06:18:41.610] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 4322, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 06:18:41.611] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 06:18:41.611] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 06:18:41.613] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=192.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-08-21 06:18:41.629] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 06:18:41.632] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=2.0ms idle=18.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 06:18:41.632] [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-08-21 06:18:41.782] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 06:18:41.782] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 06:18:41.783] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 06:18:41.784] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=170.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-08-21 06:18:41.785] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 06:18:41.785] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 06:18:41.790] [DEBUG] QUERY OK source="tms_terminals" db=4.2ms idle=153.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 06:18:41.790] [INFO ] Terminal updated: 98251226730001 [2026-08-21 06:18:41.832] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=42.0ms idle=5.8ms UPDATE `tms_terminals` SET `status` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 06:18:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 06:18:41.837] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.6ms idle=46.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 06:18:41.838] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms queue=0.1ms idle=4.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 06:18:41.843] [DEBUG] QUERY OK source="config_file_versions" db=5.1ms idle=0.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 06:18:41.843] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 06:18:41.917] [DEBUG] QUERY OK source="parameter_push_logs" db=32.8ms queue=0.5ms idle=45.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-08-21 05:48:41]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 06:18:41.918] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 06:18:41.918] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 06:18:41.919] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=6.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 06:18:41.925] [DEBUG] QUERY OK source="config_file_versions" db=4.9ms 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-08-21 06:18:41.925] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 06:18:41.928] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=6.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 06:18:42.004] [DEBUG] QUERY OK source="tms_terminals" db=33.2ms queue=41.3ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 06:18:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 06:18:42.072] [DEBUG] QUERY OK db=65.2ms queue=1.5ms idle=77.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T06:18:40Z", ~N[2026-08-21 06:18:42], ~N[2026-08-21 06:18:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 06:18:42.072] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76748, oid: "organization_id", upload_time: "2026-08-21T06:18:40Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:42], updated_at: ~N[2026-08-21 06:18:42]} [2026-08-21 06:18:42.072] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T06:18:40Z", "value" => "online"} [2026-08-21 06:18:42.127] [DEBUG] QUERY OK db=53.8ms queue=0.5ms idle=69.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T06:18:40Z", "online", "status", 76748, ~N[2026-08-21 06:18:42], ~N[2026-08-21 06:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:42.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777623, itemkey: "status", value: "online", timestamp: "2026-08-21T06:18:40Z", message: "Terminal status update", status_log_id: 76748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:42], updated_at: ~N[2026-08-21 06:18:42]}} [2026-08-21 06:18:42.134] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 06:18:42.135] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T06:18:40Z", "value" => "26"} [2026-08-21 06:18:42.212] [DEBUG] QUERY OK db=71.3ms queue=4.4ms idle=63.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T06:18:40Z", "26", "battery", 76748, ~N[2026-08-21 06:18:42], ~N[2026-08-21 06:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:42.212] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777627, itemkey: "battery", value: "26", timestamp: "2026-08-21T06:18:40Z", message: "Battery level", status_log_id: 76748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:42], updated_at: ~N[2026-08-21 06:18:42]}} [2026-08-21 06:18:42.212] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T06:18:40Z", "value" => "online"} [2026-08-21 06:18:42.247] [DEBUG] QUERY OK db=28.1ms queue=3.0ms idle=88.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T06:18:40Z", "online", "network", 76748, ~N[2026-08-21 06:18:42], ~N[2026-08-21 06:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:42.249] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777630, itemkey: "network", value: "online", timestamp: "2026-08-21T06:18:40Z", message: "Network connectivity", status_log_id: 76748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:42], updated_at: ~N[2026-08-21 06:18:42]}} [2026-08-21 06:18:42.249] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 06:18:42.249] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T06:18:40Z", "value" => "0"} [2026-08-21 06:18:42.309] [DEBUG] QUERY OK db=57.0ms 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-08-21T06:18:40Z", "0", "cpu", 76748, ~N[2026-08-21 06:18:42], ~N[2026-08-21 06:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:42.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777633, itemkey: "cpu", value: "0", timestamp: "2026-08-21T06:18:40Z", message: "CPU usage percentage", status_log_id: 76748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:42], updated_at: ~N[2026-08-21 06:18:42]}} [2026-08-21 06:18:42.309] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T06:18:40Z", "value" => "1.0.0"} [2026-08-21 06:18:42.358] [DEBUG] QUERY OK db=46.3ms queue=2.5ms idle=62.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T06:18:40Z", "1.0.0", "parameter_config", 76748, ~N[2026-08-21 06:18:42], ~N[2026-08-21 06:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:42.359] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777634, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T06:18:40Z", message: "Current parameters version", status_log_id: 76748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:42], updated_at: ~N[2026-08-21 06:18:42]}} [2026-08-21 06:18:42.359] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T06:18:40Z", "value" => "1.0.1"} [2026-08-21 06:18:42.419] [DEBUG] QUERY OK db=57.5ms queue=0.2ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T06:18:40Z", "1.0.1", "emv_config", 76748, ~N[2026-08-21 06:18:42], ~N[2026-08-21 06:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:42.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777637, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T06:18:40Z", message: "Current EMV config version", status_log_id: 76748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:42], updated_at: ~N[2026-08-21 06:18:42]}} [2026-08-21 06:18:42.419] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T06:18:40Z", "value" => ""} [2026-08-21 06:18:42.463] [DEBUG] QUERY OK db=41.3ms queue=1.8ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T06:18:40Z", "keys_config", 76748, ~N[2026-08-21 06:18:42], ~N[2026-08-21 06:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:42.464] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777640, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T06:18:40Z", message: "Current keys config version", status_log_id: 76748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:42], updated_at: ~N[2026-08-21 06:18:42]}} [2026-08-21 06:18:42.464] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T06:18:40Z", "value" => "3.8.7.3"} [2026-08-21 06:18:42.545] [DEBUG] QUERY OK db=78.4ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T06:18:40Z", "3.8.7.3", "application", 76748, ~N[2026-08-21 06:18:42], ~N[2026-08-21 06:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:42.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777642, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T06:18:40Z", message: "Current application version", status_log_id: 76748, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:42], updated_at: ~N[2026-08-21 06:18:42]}} [2026-08-21 06:18:42.568] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T06:18:41Z"} [2026-08-21 06:18:42.589] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T06:18:41Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 7, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 06:18:43.709] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch544403057034_20260821061843359","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T06:18:43Z"} [2026-08-21 06:18:43.709] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch544403057034_20260821061843359", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T06:18:43Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 12, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 53, 52, 52, 52, 48, 51, 48, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 06:18:54.005] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 06:18:54.005] [INFO ] Incoming JSON payload: {"oid":"534ce792-ae69-4280-b2d4-cd50629065e4","sn":"98251226730001","uploadTime":"2026-08-21T06:18:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"ram_free_mb","value":"883","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"data_usage_mb","value":"24","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T06:18:53Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 06:18:54.008] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "534ce792-ae69-4280-b2d4-cd50629065e4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:18:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T06:18:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:18:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:18:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:18:53Z", "value" => "883"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:18:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:18:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:18:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:18:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:18:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:18:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:18:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:18:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:18:53Z", "value" => "24"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:18:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:18:53Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T06:18:53Z", "vendor" => "morefun"} [2026-08-21 06:18:54.008] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 06:18:54.008] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 06:18:54.008] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 06:18:54.010] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.3ms idle=373.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-08-21 06:18:54.012] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=53.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-08-21 06:18:54.015] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 06:18:54.016] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=5.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 06:18:54.058] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=41.2ms idle=4.1ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 06:18:54], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 06:18:54.058] [INFO ] Terminal updated: 98251226730001 [2026-08-21 06:18:54.059] [INFO ] Event published: terminal_updated [2026-08-21 06:18:54.059] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 06:18:54.059] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 06:18:54.059] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 06:18:54.071] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=0.7ms idle=53.3ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 06:18:54], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 06:18:54.076] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms queue=1.9ms idle=13.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 06:18:54.100] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms queue=0.8ms idle=22.7ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 06:18:54.100] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 06:18:54.118] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=44.6ms idle=0.8ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 06:18:54], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 06:18:54.118] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 06:18:54.121] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms idle=18.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 06:18:54.191] [DEBUG] QUERY OK source="tms_terminals" db=24.7ms queue=44.5ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 06:18:54], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 06:18:54.243] [DEBUG] QUERY OK db=51.3ms queue=0.1ms idle=71.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "534ce792-ae69-4280-b2d4-cd50629065e4", "2026-08-21T06:18:53Z", ~N[2026-08-21 06:18:54], ~N[2026-08-21 06:18:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 06:18:54.244] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76749, oid: "534ce792-ae69-4280-b2d4-cd50629065e4", upload_time: "2026-08-21T06:18:53Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:54], updated_at: ~N[2026-08-21 06:18:54]} [2026-08-21 06:18:54.244] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T06:18:53Z", "value" => "morefun"} [2026-08-21 06:18:54.288] [DEBUG] QUERY OK db=37.3ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "morefun", "vendor", 76749, ~N[2026-08-21 06:18:54], ~N[2026-08-21 06:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:54.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777646, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:54], updated_at: ~N[2026-08-21 06:18:54]}} [2026-08-21 06:18:54.288] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T06:18:53Z", "value" => "kiosk_launcher"} [2026-08-21 06:18:54.385] [DEBUG] QUERY OK db=90.1ms queue=6.2ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "kiosk_launcher", "model", 76749, ~N[2026-08-21 06:18:54], ~N[2026-08-21 06:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:54.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777649, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:54], updated_at: ~N[2026-08-21 06:18:54]}} [2026-08-21 06:18:54.385] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T06:18:53Z", "value" => "1.0"} [2026-08-21 06:18:54.457] [DEBUG] QUERY OK db=71.5ms idle=97.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "1.0", "app_version", 76749, ~N[2026-08-21 06:18:54], ~N[2026-08-21 06:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:54.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777652, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:54], updated_at: ~N[2026-08-21 06:18:54]}} [2026-08-21 06:18:54.457] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T06:18:53Z", "value" => "13"} [2026-08-21 06:18:54.536] [DEBUG] QUERY OK db=77.7ms idle=72.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "13", "android_version", 76749, ~N[2026-08-21 06:18:54], ~N[2026-08-21 06:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:54.536] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777653, itemkey: "android_version", value: "13", timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:54], updated_at: ~N[2026-08-21 06:18:54]}} [2026-08-21 06:18:54.536] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T06:18:53Z", "value" => "883"} [2026-08-21 06:18:54.597] [DEBUG] QUERY OK db=60.4ms idle=79.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "883", "ram_free_mb", 76749, ~N[2026-08-21 06:18:54], ~N[2026-08-21 06:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:54.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777658, itemkey: "ram_free_mb", value: "883", timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:54], updated_at: ~N[2026-08-21 06:18:54]}} [2026-08-21 06:18:54.601] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T06:18:53Z", "value" => "WIFI"} [2026-08-21 06:18:54.638] [DEBUG] QUERY OK db=37.1ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "WIFI", "network_type", 76749, ~N[2026-08-21 06:18:54], ~N[2026-08-21 06:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:54.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777661, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:54], updated_at: ~N[2026-08-21 06:18:54]}} [2026-08-21 06:18:54.640] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T06:18:53Z", "value" => "true"} [2026-08-21 06:18:54.698] [DEBUG] QUERY OK db=58.1ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "true", "kiosk_active", 76749, ~N[2026-08-21 06:18:54], ~N[2026-08-21 06:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:54.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777663, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:54], updated_at: ~N[2026-08-21 06:18:54]}} [2026-08-21 06:18:54.699] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T06:18:53Z", "value" => ""} [2026-08-21 06:18:54.732] [DEBUG] QUERY OK db=32.7ms idle=60.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T06:18:53Z", "sim_operator", 76749, ~N[2026-08-21 06:18:54], ~N[2026-08-21 06:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:54.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777667, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:54], updated_at: ~N[2026-08-21 06:18:54]}} [2026-08-21 06:18:54.732] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T06:18:53Z", "value" => "UNKNOWN"} [2026-08-21 06:18:54.804] [DEBUG] QUERY OK db=71.4ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "UNKNOWN", "sim_number", 76749, ~N[2026-08-21 06:18:54], ~N[2026-08-21 06:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:54.804] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777669, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:54], updated_at: ~N[2026-08-21 06:18:54]}} [2026-08-21 06:18:54.805] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T06:18:53Z", "value" => "UNKNOWN"} [2026-08-21 06:18:54.862] [DEBUG] QUERY OK db=52.3ms idle=77.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "UNKNOWN", "sim_iccid", 76749, ~N[2026-08-21 06:18:54], ~N[2026-08-21 06:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:54.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777673, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:54], updated_at: ~N[2026-08-21 06:18:54]}} [2026-08-21 06:18:54.865] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T06:18:53Z", "value" => "UNKNOWN"} [2026-08-21 06:18:54.913] [DEBUG] QUERY OK db=48.0ms idle=60.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "UNKNOWN", "sim_imsi", 76749, ~N[2026-08-21 06:18:54], ~N[2026-08-21 06:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:54.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777675, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:54], updated_at: ~N[2026-08-21 06:18:54]}} [2026-08-21 06:18:54.913] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T06:18:53Z", "value" => "UNKNOWN"} [2026-08-21 06:18:54.978] [DEBUG] QUERY OK db=64.4ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "UNKNOWN", "sim_iccid2", 76749, ~N[2026-08-21 06:18:54], ~N[2026-08-21 06:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:54.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777679, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:54], updated_at: ~N[2026-08-21 06:18:54]}} [2026-08-21 06:18:54.979] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T06:18:53Z", "value" => "UNKNOWN"} [2026-08-21 06:18:55.030] [DEBUG] QUERY OK db=51.0ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "UNKNOWN", "sim_imsi2", 76749, ~N[2026-08-21 06:18:54], ~N[2026-08-21 06:18:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:55.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777681, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:54], updated_at: ~N[2026-08-21 06:18:54]}} [2026-08-21 06:18:55.031] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T06:18:53Z", "value" => "24"} [2026-08-21 06:18:55.080] [DEBUG] QUERY OK db=48.8ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "24", "data_usage_mb", 76749, ~N[2026-08-21 06:18:55], ~N[2026-08-21 06:18:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:55.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777684, itemkey: "data_usage_mb", value: "24", timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:55], updated_at: ~N[2026-08-21 06:18:55]}} [2026-08-21 06:18:55.080] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T06:18:53Z", "value" => "0"} [2026-08-21 06:18:55.138] [DEBUG] QUERY OK db=56.9ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "0", "mobile_data_mb", 76749, ~N[2026-08-21 06:18:55], ~N[2026-08-21 06:18:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:55.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777687, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:55], updated_at: ~N[2026-08-21 06:18:55]}} [2026-08-21 06:18:55.142] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T06:18:53Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 06:18:55.190] [DEBUG] QUERY OK db=45.9ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T06:18:53Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 76749, ~N[2026-08-21 06:18:55], ~N[2026-08-21 06:18:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:55.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777691, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T06:18:53Z", message: nil, status_log_id: 76749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:55], updated_at: ~N[2026-08-21 06:18:55]}} [2026-08-21 06:18:56.448] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 06:18:56.448] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T06:18:56Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T06:18:56Z","value":"26"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T06:18:56Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T06:18:56Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T06:18:56Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T06:18:56Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T06:18:56Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T06:18:56Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T06:18:56Z","vendor":"MoreFun"} [2026-08-21 06:18:56.448] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T06:18:56Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T06:18:56Z", "value" => "26"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T06:18:56Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T06:18:56Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T06:18:56Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T06:18:56Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T06:18:56Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T06:18:56Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T06:18:56Z", "vendor" => "MoreFun"} [2026-08-21 06:18:56.448] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 06:18:56.449] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 06:18:56.449] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 06:18:56.451] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=1260.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-08-21 06:18:56.452] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=486.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 06:18:56.458] [DEBUG] QUERY OK source="parameter_template_values" db=5.3ms 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-08-21 06:18:56.464] [DEBUG] QUERY OK source="parameter_definitions" db=4.5ms queue=1.1ms idle=6.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-08-21 06:18:56.476] [DEBUG] QUERY OK source="pos_terminal" db=1.2ms queue=0.2ms idle=17.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-08-21 06:18:56.507] [DEBUG] QUERY OK source="pos_merchant" db=29.9ms idle=12.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 06:18:56.508] [DEBUG] QUERY OK db=0.6ms queue=0.8ms idle=323.8ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["626165170000000"] [2026-08-21 06:18:56.508] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 06:18:56.514] [DEBUG] QUERY OK source="pos_terminal_data" db=5.8ms idle=32.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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 06:18:56.516] [DEBUG] QUERY OK source="address" db=1.3ms idle=8.1ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 06:18:56.516] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 06:18:56.522] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 06:18:56.609] [DEBUG] QUERY OK db=82.3ms queue=3.3ms idle=8.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "db60d527032564835624f03ba62a78c2929ef1cfe4d5a86ba0ec4fd4e2dd52b2", 1155, 939, ~U[2026-08-21 06:18:56Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 06:18:56], ~N[2026-08-21 06:18:56]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 06:18:56.609] [INFO ] AutoPushService: Created push log 48285 for MF919 params.zip [2026-08-21 06:18:56.610] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1155, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 06:18:56.610] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 06:18:56.611] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 06:18:56.612] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=95.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-08-21 06:18:56.615] [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-08-21 06:18:56.670] [DEBUG] QUERY OK db=53.2ms queue=0.7ms idle=7.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "f5456cf5760b7a871ca06b2237b95ab603d36a1d8301dae0d911a19ad5e1ad99", 4610, 17947, ~U[2026-08-21 06:18:56Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 06:18:56], ~N[2026-08-21 06:18:56]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 06:18:56.670] [INFO ] AutoPushService: Created push log 48288 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 06:18:56.670] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 4610, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 06:18:56.671] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 06:18:56.671] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 06:18:56.672] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.9ms idle=58.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-08-21 06:18:56.672] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 06:18:56.674] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=2.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 06:18:56.674] [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-08-21 06:18:56.677] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 06:18:56.680] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 06:18:56.680] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 06:18:56.684] [DEBUG] QUERY OK source="config_file_versions" db=3.3ms idle=7.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 06:18:56.684] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 06:18:56.684] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 06:18:56.685] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=10.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-08-21 06:18:56.729] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=41.9ms idle=2.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 06:18:56], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 06:18:56.729] [INFO ] Terminal updated: 98251226730001 [2026-08-21 06:18:56.729] [INFO ] Event published: terminal_updated [2026-08-21 06:18:56.729] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 06:18:56.729] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 06:18:56.729] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 06:18:56.730] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.0ms idle=43.6ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 06:18:56], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 06:18:56.732] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.1ms idle=2.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 06:18:56.734] [DEBUG] QUERY OK source="terminal_group_rules" db=1.0ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 06:18:56.734] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 06:18:56.774] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=41.9ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 06:18:56], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 06:18:56.777] [DEBUG] QUERY OK source="parameter_templates" db=3.0ms idle=40.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-08-21 06:18:56.780] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms queue=0.1ms idle=3.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 06:18:56.783] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=2.0ms idle=2.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 06:18:56.783] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 06:18:56.821] [DEBUG] QUERY OK source="parameter_push_logs" db=37.4ms idle=3.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-08-21 05:48:56]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 06:18:56.823] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 06:18:56.823] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 06:18:56.826] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=41.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 06:18:56.829] [DEBUG] QUERY OK source="config_file_versions" db=3.2ms idle=5.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 06:18:56.831] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 06:18:56.832] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=5.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 06:18:56.898] [DEBUG] QUERY OK source="tms_terminals" db=24.6ms queue=40.6ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 06:18:56], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 06:18:56.943] [DEBUG] QUERY OK db=43.3ms queue=0.6ms idle=66.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T06:18:56Z", ~N[2026-08-21 06:18:56], ~N[2026-08-21 06:18:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 06:18:56.943] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 76752, oid: "organization_id", upload_time: "2026-08-21T06:18:56Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:56], updated_at: ~N[2026-08-21 06:18:56]} [2026-08-21 06:18:56.943] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T06:18:56Z", "value" => "online"} [2026-08-21 06:18:56.992] [DEBUG] QUERY OK db=48.1ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T06:18:56Z", "online", "status", 76752, ~N[2026-08-21 06:18:56], ~N[2026-08-21 06:18:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:56.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777694, itemkey: "status", value: "online", timestamp: "2026-08-21T06:18:56Z", message: "Terminal status update", status_log_id: 76752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:56], updated_at: ~N[2026-08-21 06:18:56]}} [2026-08-21 06:18:56.992] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 06:18:56.992] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T06:18:56Z", "value" => "26"} [2026-08-21 06:18:57.073] [DEBUG] QUERY OK db=80.5ms queue=0.1ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T06:18:56Z", "26", "battery", 76752, ~N[2026-08-21 06:18:56], ~N[2026-08-21 06:18:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:57.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777697, itemkey: "battery", value: "26", timestamp: "2026-08-21T06:18:56Z", message: "Battery level", status_log_id: 76752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:56], updated_at: ~N[2026-08-21 06:18:56]}} [2026-08-21 06:18:57.073] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T06:18:56Z", "value" => "online"} [2026-08-21 06:18:57.155] [DEBUG] QUERY OK db=81.2ms idle=82.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T06:18:56Z", "online", "network", 76752, ~N[2026-08-21 06:18:57], ~N[2026-08-21 06:18:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:57.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777700, itemkey: "network", value: "online", timestamp: "2026-08-21T06:18:56Z", message: "Network connectivity", status_log_id: 76752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:57], updated_at: ~N[2026-08-21 06:18:57]}} [2026-08-21 06:18:57.155] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 06:18:57.156] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T06:18:56Z", "value" => "0"} [2026-08-21 06:18:57.208] [DEBUG] QUERY OK db=52.0ms idle=82.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T06:18:56Z", "0", "cpu", 76752, ~N[2026-08-21 06:18:57], ~N[2026-08-21 06:18:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:57.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777703, itemkey: "cpu", value: "0", timestamp: "2026-08-21T06:18:56Z", message: "CPU usage percentage", status_log_id: 76752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:57], updated_at: ~N[2026-08-21 06:18:57]}} [2026-08-21 06:18:57.208] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T06:18:56Z", "value" => "1.0.0"} [2026-08-21 06:18:57.241] [DEBUG] QUERY OK db=31.6ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T06:18:56Z", "1.0.0", "parameter_config", 76752, ~N[2026-08-21 06:18:57], ~N[2026-08-21 06:18:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:57.241] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777706, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T06:18:56Z", message: "Current parameters version", status_log_id: 76752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:57], updated_at: ~N[2026-08-21 06:18:57]}} [2026-08-21 06:18:57.243] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T06:18:56Z", "value" => "1.0.1"} [2026-08-21 06:18:57.339] [DEBUG] QUERY OK db=95.0ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T06:18:56Z", "1.0.1", "emv_config", 76752, ~N[2026-08-21 06:18:57], ~N[2026-08-21 06:18:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:57.339] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777709, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T06:18:56Z", message: "Current EMV config version", status_log_id: 76752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:57], updated_at: ~N[2026-08-21 06:18:57]}} [2026-08-21 06:18:57.340] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T06:18:56Z", "value" => ""} [2026-08-21 06:18:57.468] [DEBUG] QUERY OK db=87.9ms queue=40.5ms idle=99.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T06:18:56Z", "keys_config", 76752, ~N[2026-08-21 06:18:57], ~N[2026-08-21 06:18:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:57.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777713, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T06:18:56Z", message: "Current keys config version", status_log_id: 76752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:57], updated_at: ~N[2026-08-21 06:18:57]}} [2026-08-21 06:18:57.469] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T06:18:56Z", "value" => "3.8.7.3"} [2026-08-21 06:18:57.533] [DEBUG] QUERY OK db=63.0ms idle=130.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T06:18:56Z", "3.8.7.3", "application", 76752, ~N[2026-08-21 06:18:57], ~N[2026-08-21 06:18:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 06:18:57.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 777717, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T06:18:56Z", message: "Current application version", status_log_id: 76752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 06:18:57], updated_at: ~N[2026-08-21 06:18:57]}} [2026-08-21 06:18:57.533] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T06:18:56Z"} [2026-08-21 06:18:57.533] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T06:18:56Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 15, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:14:32.167] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 45m, MIS in 0h 45m [2026-08-21 07:14:32.208] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 07:14:32.224] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 07:14:34.352] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 07:14:34.352] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 07:14:34.353] [INFO ] Building initial filter cache... [2026-08-21 07:14:34.382] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.5ms idle=905.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-08-21 07:14:34.404] [DEBUG] QUERY OK source="filter_usage" db=2.5ms queue=2.0ms idle=661.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-08-21 07:14:34.404] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 07:14:34.554] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:14:34.611] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-08-21 07:14:34.637] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-08-21 07:14:40.720] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:14:40.720] [INFO ] Incoming JSON payload: {"oid":"5be49505-0aa0-4803-81aa-31f452072e43","sn":"98251226730001","uploadTime":"2026-08-21T07:14:40Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:14:40Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:14:40Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:14:40Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:14:40Z"},{"itemkey":"ram_free_mb","value":"892","timestamp":"2026-08-21T07:14:40Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:14:40Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:14:40Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:14:40Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:14:40Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:14:40Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:14:40Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:14:40Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:14:40Z"},{"itemkey":"data_usage_mb","value":"25","timestamp":"2026-08-21T07:14:40Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:14: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:14:40.776] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5be49505-0aa0-4803-81aa-31f452072e43", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:14:40Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:14:40Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:14:40Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:14:40Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:14:40Z", "value" => "892"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:14:40Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:14:40Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:14:40Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:14:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:14:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:14:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:14:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:14:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:14:40Z", "value" => "25"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:14:40Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:14: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:14:40Z", "vendor" => "morefun"} [2026-08-21 07:14:40.777] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:14:40.804] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:14:40.804] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:14:40.827] [DEBUG] QUERY OK source="parameter_templates" db=4.0ms queue=1.9ms idle=1354.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-08-21 07:14:40.840] [DEBUG] QUERY OK source="parameter_templates" db=8.3ms queue=0.9ms idle=3.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-08-21 07:14:40.840] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:14:40.871] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.4ms idle=30.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:14:40.938] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:14:40.995] [DEBUG] QUERY OK source="tms_terminals" db=36.2ms queue=0.4ms idle=97.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:14:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:14:41.024] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:14:41.029] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=156.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:14:41.140] [DEBUG] QUERY OK source="tms_terminals" db=84.8ms queue=6.7ms idle=73.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:14:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:14:41.233] [DEBUG] QUERY OK db=47.3ms queue=0.8ms idle=156.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "5be49505-0aa0-4803-81aa-31f452072e43", "2026-08-21T07:14:40Z", ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:14:41.262] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77013, oid: "5be49505-0aa0-4803-81aa-31f452072e43", upload_time: "2026-08-21T07:14:40Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]} [2026-08-21 07:14:41.262] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:14:40Z", "value" => "morefun"} [2026-08-21 07:14:41.340] [DEBUG] QUERY OK db=76.9ms queue=0.7ms idle=122.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14:40Z", "morefun", "vendor", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:41.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781412, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:41.341] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:14:40Z", "value" => "kiosk_launcher"} [2026-08-21 07:14:41.388] [DEBUG] QUERY OK db=46.7ms queue=0.8ms idle=107.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14:40Z", "kiosk_launcher", "model", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:41.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781414, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:41.389] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:14:40Z", "value" => "1.0"} [2026-08-21 07:14:41.432] [DEBUG] QUERY OK db=42.6ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14:40Z", "1.0", "app_version", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:41.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781415, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:41.432] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:14:40Z", "value" => "13"} [2026-08-21 07:14:41.466] [DEBUG] QUERY OK db=32.2ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14:40Z", "13", "android_version", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:41.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781417, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:41.468] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:14:40Z", "value" => "892"} [2026-08-21 07:14:41.518] [DEBUG] QUERY OK db=49.2ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14:40Z", "892", "ram_free_mb", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:41.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781418, itemkey: "ram_free_mb", value: "892", timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:41.518] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:14:40Z", "value" => "WIFI"} [2026-08-21 07:14:41.543] [DEBUG] QUERY OK db=23.7ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14:40Z", "WIFI", "network_type", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:41.543] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781419, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:41.543] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:14:40Z", "value" => "true"} [2026-08-21 07:14:41.590] [DEBUG] QUERY OK db=46.8ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14:40Z", "true", "kiosk_active", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:41.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781420, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:41.590] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:14:40Z", "value" => ""} [2026-08-21 07:14:41.635] [DEBUG] QUERY OK db=39.4ms queue=4.5ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:14:40Z", "sim_operator", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:41.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781421, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:41.638] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:14:40Z", "value" => "UNKNOWN"} [2026-08-21 07:14:41.690] [DEBUG] QUERY OK db=51.4ms idle=48.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14:40Z", "UNKNOWN", "sim_number", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:41.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781422, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:41.691] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:14:40Z", "value" => "UNKNOWN"} [2026-08-21 07:14:41.746] [DEBUG] QUERY OK db=53.7ms queue=0.1ms idle=57.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14:40Z", "UNKNOWN", "sim_iccid", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:41.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781424, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:41.747] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:14:40Z", "value" => "UNKNOWN"} [2026-08-21 07:14:41.799] [DEBUG] QUERY OK db=49.8ms queue=1.7ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14:40Z", "UNKNOWN", "sim_imsi", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:41.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781426, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:41.799] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:14:40Z", "value" => "UNKNOWN"} [2026-08-21 07:14:41.850] [DEBUG] QUERY OK db=49.3ms idle=53.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14:40Z", "UNKNOWN", "sim_iccid2", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:41.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781427, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:41.850] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:14:40Z", "value" => "UNKNOWN"} [2026-08-21 07:14:41.879] [DEBUG] QUERY OK db=26.8ms idle=5.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14:40Z", "UNKNOWN", "sim_imsi2", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:41.880] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781429, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:41.880] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:14:40Z", "value" => "25"} [2026-08-21 07:14:41.915] [DEBUG] QUERY OK db=34.4ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14:40Z", "25", "data_usage_mb", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:41.915] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781431, itemkey: "data_usage_mb", value: "25", timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:41.915] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:14:40Z", "value" => "0"} [2026-08-21 07:14:42.015] [DEBUG] QUERY OK db=98.5ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14:40Z", "0", "mobile_data_mb", 77013, ~N[2026-08-21 07:14:41], ~N[2026-08-21 07:14:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:42.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781433, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:41], updated_at: ~N[2026-08-21 07:14:41]}} [2026-08-21 07:14:42.016] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:14: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:14:42.089] [DEBUG] QUERY OK db=72.4ms idle=101.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:14: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77013, ~N[2026-08-21 07:14:42], ~N[2026-08-21 07:14:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:14:42.090] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781435, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:14:40Z", message: nil, status_log_id: 77013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:14:42], updated_at: ~N[2026-08-21 07:14:42]}} [2026-08-21 07:14:47.229] [INFO ] GET / [2026-08-21 07:14:47.277] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-08-21 07:14:47.365] [INFO ] Sent 200 in 135ms [2026-08-21 07:15:01.038] [INFO ] [SlaMonitorWorker] Running at hour=7 checking settlement_date=2026-08-20 [2026-08-21 07:15:01.038] [INFO ] [SlaMonitorWorker] Running at hour=7 checking settlement_date=2026-08-20 [2026-08-21 07:15:01.048] [DEBUG] QUERY OK source="settlement_mis" db=0.1ms queue=1.0ms idle=0.0ms SELECT TRUE FROM `settlement_mis` AS s0 WHERE (s0.`mis_date` = ?) LIMIT 1 [~D[2026-08-20]] ↳ SettlementCore.Workers.SlaMonitorWorker.check_mis_generation_sla/1, at: lib/settlement_core/workers/sla_monitor_worker.ex:84 [2026-08-21 07:15:01.048] [WARN ] [SlaMonitorWorker] SLA BREACH: MIS not generated for 2026-08-20 [2026-08-21 07:15:01.048] [DEBUG] QUERY OK source="settlement_mis" db=0.3ms queue=0.6ms idle=14.9ms SELECT TRUE FROM `settlement_mis` AS s0 WHERE (s0.`mis_date` = ?) LIMIT 1 [~D[2026-08-20]] ↳ SettlementCore.Workers.SlaMonitorWorker.check_mis_generation_sla/1, at: lib/settlement_core/workers/sla_monitor_worker.ex:84 [2026-08-21 07:15:01.048] [WARN ] [SlaMonitorWorker] SLA BREACH: MIS not generated for 2026-08-20 [2026-08-21 07:15:10.070] [INFO ] GET /images/favicon.png [2026-08-21 07:15:10.197] [DEBUG] ** (Phoenix.Router.NoRouteError) no route found for GET /images/favicon.png (PlatformWeb.Router) (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/phoenix/lib/phoenix/router.ex:541: PlatformWeb.Router.call/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.plug_builder_call/2 (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/plug/lib/plug/debugger.ex:155: PlatformWeb.Endpoint."call (overridable 3)"/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.call/2 (phoenix 1.7.21) lib/phoenix/endpoint/sync_code_reload_plug.ex:22: Phoenix.Endpoint.SyncCodeReloadPlug.do_call/4 (bandit 1.10.2) lib/bandit/pipeline.ex:131: Bandit.Pipeline.call_plug!/2 (bandit 1.10.2) lib/bandit/pipeline.ex:42: Bandit.Pipeline.run/5 (bandit 1.10.2) lib/bandit/http1/handler.ex:13: Bandit.HTTP1.Handler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:18: Bandit.DelegatingHandler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:8: Bandit.DelegatingHandler.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 [2026-08-21 07:15:10.775] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:15:10.775] [INFO ] Incoming JSON payload: {"oid":"6ea4a46e-4f56-46a1-ac03-4c69bf47d0ff","sn":"98251226730001","uploadTime":"2026-08-21T07:15:10Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:15:10Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:15:10Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:15:10Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:15:10Z"},{"itemkey":"ram_free_mb","value":"891","timestamp":"2026-08-21T07:15:10Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:15:10Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:15:10Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:15:10Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:15:10Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:15:10Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:15:10Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:15:10Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:15:10Z"},{"itemkey":"data_usage_mb","value":"25","timestamp":"2026-08-21T07:15:10Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:15:10.783] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6ea4a46e-4f56-46a1-ac03-4c69bf47d0ff", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:15:10Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:15:10Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:15:10Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:15:10Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:15:10Z", "value" => "891"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:15:10Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:15:10Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:15:10Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:15:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:15:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:15:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:15:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:15:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:15:10Z", "value" => "25"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:15:10Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:15:10Z", "vendor" => "morefun"} [2026-08-21 07:15:10.783] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:15:10.783] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:15:10.784] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:15:10.788] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=1316.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-08-21 07:15:10.791] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms queue=0.9ms idle=802.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-08-21 07:15:10.791] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:15:10.793] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:15:10.793] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:15:10.827] [DEBUG] QUERY OK source="tms_terminals" db=33.6ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:15:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:15:10.827] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:15:10.828] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=34.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:15:10.853] [DEBUG] QUERY OK source="tms_terminals" db=24.4ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:15:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:15:10.924] [DEBUG] QUERY OK db=70.6ms idle=25.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6ea4a46e-4f56-46a1-ac03-4c69bf47d0ff", "2026-08-21T07:15:10Z", ~N[2026-08-21 07:15:10], ~N[2026-08-21 07:15:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:15:10.925] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77014, oid: "6ea4a46e-4f56-46a1-ac03-4c69bf47d0ff", upload_time: "2026-08-21T07:15:10Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:10], updated_at: ~N[2026-08-21 07:15:10]} [2026-08-21 07:15:10.925] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:15:10Z", "value" => "morefun"} [2026-08-21 07:15:10.953] [DEBUG] QUERY OK db=27.3ms queue=0.1ms idle=72.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:10Z", "morefun", "vendor", 77014, ~N[2026-08-21 07:15:10], ~N[2026-08-21 07:15:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:10.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781438, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:10], updated_at: ~N[2026-08-21 07:15:10]}} [2026-08-21 07:15:10.953] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:15:10Z", "value" => "kiosk_launcher"} [2026-08-21 07:15:11.005] [DEBUG] QUERY OK db=51.5ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:10Z", "kiosk_launcher", "model", 77014, ~N[2026-08-21 07:15:10], ~N[2026-08-21 07:15:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.005] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781440, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:10], updated_at: ~N[2026-08-21 07:15:10]}} [2026-08-21 07:15:11.005] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:15:10Z", "value" => "1.0"} [2026-08-21 07:15:11.048] [DEBUG] QUERY OK db=41.7ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:10Z", "1.0", "app_version", 77014, ~N[2026-08-21 07:15:11], ~N[2026-08-21 07:15:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781442, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:11], updated_at: ~N[2026-08-21 07:15:11]}} [2026-08-21 07:15:11.048] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:15:10Z", "value" => "13"} [2026-08-21 07:15:11.093] [DEBUG] QUERY OK db=44.8ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:10Z", "13", "android_version", 77014, ~N[2026-08-21 07:15:11], ~N[2026-08-21 07:15:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781444, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:11], updated_at: ~N[2026-08-21 07:15:11]}} [2026-08-21 07:15:11.094] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:15:10Z", "value" => "891"} [2026-08-21 07:15:11.154] [DEBUG] QUERY OK db=59.9ms queue=0.5ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:10Z", "891", "ram_free_mb", 77014, ~N[2026-08-21 07:15:11], ~N[2026-08-21 07:15:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781446, itemkey: "ram_free_mb", value: "891", timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:11], updated_at: ~N[2026-08-21 07:15:11]}} [2026-08-21 07:15:11.155] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:15:10Z", "value" => "WIFI"} [2026-08-21 07:15:11.200] [DEBUG] QUERY OK db=45.1ms idle=62.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:10Z", "WIFI", "network_type", 77014, ~N[2026-08-21 07:15:11], ~N[2026-08-21 07:15:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.201] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781448, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:11], updated_at: ~N[2026-08-21 07:15:11]}} [2026-08-21 07:15:11.201] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:15:10Z", "value" => "true"} [2026-08-21 07:15:11.256] [DEBUG] QUERY OK db=52.5ms queue=0.1ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:10Z", "true", "kiosk_active", 77014, ~N[2026-08-21 07:15:11], ~N[2026-08-21 07:15:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781450, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:11], updated_at: ~N[2026-08-21 07:15:11]}} [2026-08-21 07:15:11.256] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:15:10Z", "value" => ""} [2026-08-21 07:15:11.304] [DEBUG] QUERY OK db=47.9ms idle=56.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:15:10Z", "sim_operator", 77014, ~N[2026-08-21 07:15:11], ~N[2026-08-21 07:15:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781452, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:11], updated_at: ~N[2026-08-21 07:15:11]}} [2026-08-21 07:15:11.305] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:15:10Z", "value" => "UNKNOWN"} [2026-08-21 07:15:11.349] [DEBUG] QUERY OK db=44.0ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:10Z", "UNKNOWN", "sim_number", 77014, ~N[2026-08-21 07:15:11], ~N[2026-08-21 07:15:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781454, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:11], updated_at: ~N[2026-08-21 07:15:11]}} [2026-08-21 07:15:11.350] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:15:10Z", "value" => "UNKNOWN"} [2026-08-21 07:15:11.392] [DEBUG] QUERY OK db=41.3ms queue=0.3ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:10Z", "UNKNOWN", "sim_iccid", 77014, ~N[2026-08-21 07:15:11], ~N[2026-08-21 07:15:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.392] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781456, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:11], updated_at: ~N[2026-08-21 07:15:11]}} [2026-08-21 07:15:11.392] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:15:10Z", "value" => "UNKNOWN"} [2026-08-21 07:15:11.457] [DEBUG] QUERY OK db=64.2ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:10Z", "UNKNOWN", "sim_imsi", 77014, ~N[2026-08-21 07:15:11], ~N[2026-08-21 07:15:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781458, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:11], updated_at: ~N[2026-08-21 07:15:11]}} [2026-08-21 07:15:11.457] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:15:10Z", "value" => "UNKNOWN"} [2026-08-21 07:15:11.534] [DEBUG] QUERY OK db=76.9ms idle=65.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:10Z", "UNKNOWN", "sim_iccid2", 77014, ~N[2026-08-21 07:15:11], ~N[2026-08-21 07:15:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781460, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:11], updated_at: ~N[2026-08-21 07:15:11]}} [2026-08-21 07:15:11.535] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:15:10Z", "value" => "UNKNOWN"} [2026-08-21 07:15:11.608] [DEBUG] QUERY OK db=73.4ms idle=78.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:10Z", "UNKNOWN", "sim_imsi2", 77014, ~N[2026-08-21 07:15:11], ~N[2026-08-21 07:15:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781462, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:11], updated_at: ~N[2026-08-21 07:15:11]}} [2026-08-21 07:15:11.609] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:15:10Z", "value" => "25"} [2026-08-21 07:15:11.665] [DEBUG] QUERY OK db=55.7ms idle=75.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:10Z", "25", "data_usage_mb", 77014, ~N[2026-08-21 07:15:11], ~N[2026-08-21 07:15:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781464, itemkey: "data_usage_mb", value: "25", timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:11], updated_at: ~N[2026-08-21 07:15:11]}} [2026-08-21 07:15:11.666] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:15:10Z", "value" => "0"} [2026-08-21 07:15:11.759] [DEBUG] QUERY OK db=92.0ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:10Z", "0", "mobile_data_mb", 77014, ~N[2026-08-21 07:15:11], ~N[2026-08-21 07:15:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781466, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:11], updated_at: ~N[2026-08-21 07:15:11]}} [2026-08-21 07:15:11.760] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:15:11.887] [DEBUG] QUERY OK db=126.5ms idle=94.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77014, ~N[2026-08-21 07:15:11], ~N[2026-08-21 07:15:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:11.889] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781468, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:15:10Z", message: nil, status_log_id: 77014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:11], updated_at: ~N[2026-08-21 07:15:11]}} [2026-08-21 07:15:24.419] [INFO ] GET /users/log_in [2026-08-21 07:15:24.419] [DEBUG] Processing with PlatformWeb.UserLoginLive.new/2 Parameters: %{} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-08-21 07:15:24.525] [INFO ] Sent 200 in 106ms [2026-08-21 07:15:26.366] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "aVtgKlkaLXlFQywhFTYIMBdoLjRDQVYfQl8Smmz8r4aYJrzAfQlCq1gk", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 07:15:26.617] [DEBUG] MOUNT PlatformWeb.UserLoginLive Parameters: %{} Session: %{"_csrf_token" => "87Xy4wWA7wMx_Drqq9Bw2p1t"} [2026-08-21 07:15:26.618] [DEBUG] Replied in 1ms [2026-08-21 07:15:34.189] [INFO ] POST /users/log_in [2026-08-21 07:15:34.190] [DEBUG] Processing with PlatformWeb.UserSessionController.create/2 Parameters: %{"_csrf_token" => "aVtgKlkaLXlFQywhFTYIMBdoLjRDQVYfQl8Smmz8r4aYJrzAfQlCq1gk", "user" => %{"email" => "demo@mercury.com", "password" => "[FILTERED]"}} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-08-21 07:15:34.208] [DEBUG] QUERY OK source="users" db=0.5ms queue=0.9ms idle=1922.5ms 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-08-21 07:15:34.574] [DEBUG] QUERY OK db=36.6ms queue=0.6ms idle=1248.5ms INSERT INTO `users_tokens` (`context`,`token`,`user_id`,`inserted_at`) VALUES (?,?,?,?) ["session", <<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, 3, ~U[2026-08-21 07:15:34Z]] ↳ DaProductApp.Users.generate_user_session_token/1, at: lib/da_product_app/users.ex:312 [2026-08-21 07:15:34.574] [INFO ] Sent 302 in 385ms [2026-08-21 07:15:34.592] [ERROR] ** (Plug.Conn.AlreadySentError) the response was already sent (plug 1.19.1) lib/plug/conn.ex:914: Plug.Conn.put_resp_header/3 (phoenix 1.7.21) lib/phoenix/controller.ex:495: Phoenix.Controller.redirect/2 (platform_web 0.1.0) lib/platform_web/controllers/user_session_controller.ex:1: PlatformWeb.UserSessionController.action/2 (platform_web 0.1.0) lib/platform_web/controllers/user_session_controller.ex:1: PlatformWeb.UserSessionController.phoenix_controller_pipeline/2 (phoenix 1.7.21) lib/phoenix/router.ex:484: Phoenix.Router.__call__/5 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.plug_builder_call/2 (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/plug/lib/plug/debugger.ex:155: PlatformWeb.Endpoint."call (overridable 3)"/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.call/2 (phoenix 1.7.21) lib/phoenix/endpoint/sync_code_reload_plug.ex:22: Phoenix.Endpoint.SyncCodeReloadPlug.do_call/4 (bandit 1.10.2) lib/bandit/pipeline.ex:131: Bandit.Pipeline.call_plug!/2 (bandit 1.10.2) lib/bandit/pipeline.ex:42: Bandit.Pipeline.run/5 (bandit 1.10.2) lib/bandit/http1/handler.ex:13: Bandit.HTTP1.Handler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:18: Bandit.DelegatingHandler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:8: Bandit.DelegatingHandler.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 [2026-08-21 07:15:35.202] [INFO ] GET /dashboard [2026-08-21 07:15:35.203] [DEBUG] Processing with PlatformWeb.DashboardLive.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 07:15:35.225] [DEBUG] QUERY OK source="users_tokens" db=1.1ms queue=0.9ms idle=1015.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:15:35.216116Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 07:15:35.255] [DEBUG] QUERY OK source="users_tokens" db=3.8ms queue=6.4ms idle=675.3ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:15:35.245163Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-08-21 07:15:35.263] [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-08-20 18:44:09Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-08-21 07:15:35.268] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=3.7ms idle=1170.1ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-08-21 07:15:35.275] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms queue=1.5ms idle=172.2ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-08-21 07:15:35.304] [DEBUG] QUERY OK source="tms_terminals" db=25.6ms queue=2.8ms idle=6.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-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-08-21 07:15:35.323] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=2.6ms idle=47.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-08-21 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-08-21 07:15:35.325] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=20.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:140 [2026-08-21 07:15:35.327] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=1.1ms 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-08-21 07:15:35.451] [DEBUG] QUERY OK source="tms_terminals" db=120.7ms queue=1.7ms idle=3.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`area`, t0.`model`, t0.`imei`, t0.`remark`, t0.`vendor`, t0.`group`, t0.`inserted_at`, t0.`updated_at`, s1.`last_seen_at`, (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'battery' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'cpu' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'memory' ORDER BY inserted_at DESC LIMIT 1) FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen_at`, max(st0.`id`) AS `last_status_log_id` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` LEFT OUTER JOIN `tms_terminal_status_logs` AS t2 ON t2.`id` = s1.`last_status_log_id` [] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-08-21 07:15:35.465] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms queue=0.9ms idle=136.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.467] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=1.0ms idle=15.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.472] [DEBUG] QUERY OK source="ota_configurations" db=4.0ms idle=2.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.474] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.5ms idle=4.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.475] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms queue=0.1ms idle=2.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.477] [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-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.479] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=0.3ms idle=2.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.480] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.9ms idle=2.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.481] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms queue=0.1ms idle=2.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.482] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.482] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms 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-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.483] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=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-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.484] [DEBUG] QUERY OK source="ota_configurations" db=0.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-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.485] [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-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.486] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.486] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.487] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms 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-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.488] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.489] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms idle=1.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.490] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.490] [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-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.491] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.492] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.492] [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-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.493] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms 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-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.493] [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-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.494] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms 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-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.495] [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-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.496] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=0.1ms 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-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.497] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.499] [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-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.500] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=2.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.501] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.501] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.502] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms 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-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.503] [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-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.503] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.504] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.504] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.505] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.506] [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-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.507] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.508] [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-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.509] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.510] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms queue=0.2ms 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-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.510] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.511] [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-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:35.515] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.7ms idle=2.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:35.609] [DEBUG] QUERY OK source="tms_terminals" db=91.2ms queue=1.4ms idle=5.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-08-21 07:10:35.515972Z], ~U[2026-08-21 06:45:35.515972Z], ~U[2026-08-21 06:15:35.515972Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 07:15:35.629] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.1ms queue=0.6ms idle=93.8ms SELECT DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i'), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) GROUP BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') ORDER BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') [~N[2026-08-21 06:15:35]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-08-21 07:15:35.650] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.6ms queue=0.3ms idle=20.9ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 07:14:35]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-08-21 07:15:35.676] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=23.8ms queue=1.2ms idle=21.9ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 06:15:35]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-08-21 07:15:35.695] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.7ms idle=25.9ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 06:15:35]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-08-21 07:15:35.718] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.0ms queue=0.4ms idle=19.5ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 06:15:35]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-08-21 07:15:35.725] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms queue=0.4ms idle=27.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-08-21 07:15:35.819] [DEBUG] QUERY OK source="tms_terminals" db=88.1ms idle=12.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-08-21 07:10:35.730876Z], ~U[2026-08-21 06:45:35.730876Z], ~U[2026-08-21 06:15:35.730876Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 07:15:35.908] [DEBUG] QUERY OK source="tms_terminals" db=88.6ms idle=94.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-08-21 07:10:35.819589Z], ~U[2026-08-21 06:45:35.819589Z], ~U[2026-08-21 06:15:35.819589Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 07:15:35.996] [DEBUG] QUERY OK source="tms_terminals" db=87.6ms idle=89.9ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 07:10:35.908851Z], ~U[2026-08-21 06:45:35.908851Z], ~U[2026-08-21 06:15:35.908851Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 07:15:36.092] [DEBUG] QUERY OK source="tms_terminals" db=95.2ms idle=89.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-08-21 07:10:35.997267Z], ~U[2026-08-21 06:45:35.997267Z], ~U[2026-08-21 06:15:35.997267Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 07:15:36.168] [INFO ] Sent 200 in 965ms [2026-08-21 07:15:37.941] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "HSN1ewwGLVM8CjomUxctIQEeDB4PdyspszM9xGt9FaLEff_ppJjL7DQM", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 07:15:38.134] [DEBUG] MOUNT PlatformWeb.DashboardLive Parameters: %{} Session: %{"_csrf_token" => "nY8BtAYjzkvc5qrQqTfR83zd", "live_socket_id" => "users_sessions:_gyWJnb72cBNLoly6C0mOch11oXZNsn0EVBfto7MVeo=", "user_token" => <<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>} [2026-08-21 07:15:38.135] [DEBUG] QUERY OK source="users_tokens" db=0.6ms queue=0.1ms idle=1850.7ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:15:38.134817Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 07:15:38.137] [DEBUG] QUERY OK source="users_tokens" db=0.7ms queue=0.1ms idle=1851.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)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:15:38.136023Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-08-21 07:15:38.137] [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-08-20 18:44:09Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-08-21 07:15:38.138] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=658.1ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-08-21 07:15:38.139] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=32.0ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-08-21 07:15:38.161] [DEBUG] QUERY OK source="tms_terminals" db=21.5ms idle=1.0ms 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-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-08-21 07:15:38.162] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=0.1ms idle=22.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-08-21 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-08-21 07:15:38.163] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1.2ms 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-08-21 07:15:38.164] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`status` IN ('connected','online','Online')) [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:143 [2026-08-21 07:15:38.262] [DEBUG] QUERY OK source="tms_terminals" db=96.4ms idle=2.1ms 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-08-21 07:15:38.263] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=98.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.264] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.264] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.265] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.265] [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-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.266] [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-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.267] [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-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.267] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.268] [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-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.269] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms queue=0.1ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.270] [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-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.270] [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-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.271] [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-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.271] [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-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.272] [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-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.275] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms queue=0.1ms idle=2.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.277] [DEBUG] QUERY OK source="ota_configurations" db=1.5ms queue=0.2ms idle=3.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.279] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.0ms idle=2.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.280] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms idle=1.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.281] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.282] [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-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.282] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms queue=0.1ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.283] [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-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.283] [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-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.284] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.285] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.285] [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-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.286] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.287] [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-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.288] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=0.1ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.289] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms 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-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.290] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.290] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms 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-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.291] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.293] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=2.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.294] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=2.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.295] [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-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.295] [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-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.296] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.296] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.298] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms 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-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.298] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.299] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms queue=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-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.300] [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-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.300] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.302] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.4ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.303] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms queue=0.3ms 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-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 07:15:38.304] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 07:15:38.398] [DEBUG] QUERY OK source="tms_terminals" db=93.6ms 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-08-21 07:10:38.304366Z], ~U[2026-08-21 06:45:38.304366Z], ~U[2026-08-21 06:15:38.304366Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 07:15:38.416] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.8ms idle=94.4ms SELECT DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i'), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) GROUP BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') ORDER BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') [~N[2026-08-21 06:15:38]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-08-21 07:15:38.435] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.1ms queue=0.1ms idle=18.7ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 07:14:38]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-08-21 07:15:38.461] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.8ms idle=19.0ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 06:15:38]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-08-21 07:15:38.481] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.9ms idle=26.3ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 06:15:38]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-08-21 07:15:38.501] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.0ms queue=0.9ms idle=21.3ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 06:15:38]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-08-21 07:15:38.503] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=20.6ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-08-21 07:15:38.593] [DEBUG] QUERY OK source="tms_terminals" db=89.9ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 07:10:38.503239Z], ~U[2026-08-21 06:45:38.503239Z], ~U[2026-08-21 06:15:38.503239Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 07:15:38.678] [DEBUG] QUERY OK source="tms_terminals" db=84.3ms queue=0.4ms idle=90.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-08-21 07:10:38.593724Z], ~U[2026-08-21 06:45:38.593724Z], ~U[2026-08-21 06:15:38.593724Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 07:15:38.764] [DEBUG] QUERY OK source="tms_terminals" db=85.1ms idle=85.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-08-21 07:10:38.678988Z], ~U[2026-08-21 06:45:38.678988Z], ~U[2026-08-21 06:15:38.678988Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 07:15:38.848] [DEBUG] QUERY OK source="tms_terminals" db=82.4ms idle=87.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-08-21 07:10:38.765981Z], ~U[2026-08-21 06:45:38.765981Z], ~U[2026-08-21 06:15:38.765981Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 07:15:38.849] [DEBUG] Replied in 714ms [2026-08-21 07:15:40.913] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:15:40.913] [INFO ] Incoming JSON payload: {"oid":"a9a08bb3-7f95-4672-a948-f7573f5a67a9","sn":"98251226730001","uploadTime":"2026-08-21T07:15:40Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:15:40Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:15:40Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:15:40Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:15:40Z"},{"itemkey":"ram_free_mb","value":"885","timestamp":"2026-08-21T07:15:40Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:15:40Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:15:40Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:15:40Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:15:40Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:15:40Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:15:40Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:15:40Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:15:40Z"},{"itemkey":"data_usage_mb","value":"25","timestamp":"2026-08-21T07:15:40Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:15:40.923] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a9a08bb3-7f95-4672-a948-f7573f5a67a9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:15:40Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:15:40Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:15:40Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:15:40Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:15:40Z", "value" => "885"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:15:40Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:15:40Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:15:40Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:15:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:15:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:15:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:15:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:15:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:15:40Z", "value" => "25"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:15:40Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:15:40Z", "vendor" => "morefun"} [2026-08-21 07:15:40.924] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:15:40.924] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:15:40.924] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:15:40.928] [DEBUG] QUERY OK source="parameter_templates" db=4.0ms queue=0.1ms idle=810.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-08-21 07:15:40.931] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=447.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-08-21 07:15:40.931] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:15:40.933] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=5.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:15:40.937] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:15:40.980] [DEBUG] QUERY OK source="tms_terminals" db=41.7ms idle=7.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:15:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:15:40.980] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:15:40.984] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=49.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-08-21 07:15:41.030] [DEBUG] QUERY OK source="tms_terminals" db=45.7ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:15:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:15:41.069] [DEBUG] QUERY OK db=38.0ms queue=0.1ms idle=46.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a9a08bb3-7f95-4672-a948-f7573f5a67a9", "2026-08-21T07:15:40Z", ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:15:41.069] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77016, oid: "a9a08bb3-7f95-4672-a948-f7573f5a67a9", upload_time: "2026-08-21T07:15:40Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]} [2026-08-21 07:15:41.069] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:15:40Z", "value" => "morefun"} [2026-08-21 07:15:41.115] [DEBUG] QUERY OK db=45.7ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:40Z", "morefun", "vendor", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781470, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.116] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:15:40Z", "value" => "kiosk_launcher"} [2026-08-21 07:15:41.184] [DEBUG] QUERY OK db=67.6ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:40Z", "kiosk_launcher", "model", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781472, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.184] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:15:40Z", "value" => "1.0"} [2026-08-21 07:15:41.231] [DEBUG] QUERY OK db=45.7ms idle=60.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:40Z", "1.0", "app_version", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.231] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781474, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.232] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:15:40Z", "value" => "13"} [2026-08-21 07:15:41.288] [DEBUG] QUERY OK db=55.3ms idle=48.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:40Z", "13", "android_version", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781476, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.288] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:15:40Z", "value" => "885"} [2026-08-21 07:15:41.354] [DEBUG] QUERY OK db=64.7ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:40Z", "885", "ram_free_mb", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781478, itemkey: "ram_free_mb", value: "885", timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.355] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:15:40Z", "value" => "WIFI"} [2026-08-21 07:15:41.427] [DEBUG] QUERY OK db=71.7ms idle=67.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:40Z", "WIFI", "network_type", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781480, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.428] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:15:40Z", "value" => "true"} [2026-08-21 07:15:41.470] [DEBUG] QUERY OK db=40.9ms idle=74.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:40Z", "true", "kiosk_active", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781482, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.471] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:15:40Z", "value" => ""} [2026-08-21 07:15:41.537] [DEBUG] QUERY OK db=64.2ms queue=2.2ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:15:40Z", "sim_operator", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781484, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.538] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:15:40Z", "value" => "UNKNOWN"} [2026-08-21 07:15:41.618] [DEBUG] QUERY OK db=80.0ms idle=68.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:40Z", "UNKNOWN", "sim_number", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781486, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.621] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:15:40Z", "value" => "UNKNOWN"} [2026-08-21 07:15:41.673] [DEBUG] QUERY OK db=49.5ms queue=1.7ms idle=84.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:40Z", "UNKNOWN", "sim_iccid", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781488, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.675] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:15:40Z", "value" => "UNKNOWN"} [2026-08-21 07:15:41.720] [DEBUG] QUERY OK db=43.8ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:40Z", "UNKNOWN", "sim_imsi", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.720] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781490, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.721] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:15:40Z", "value" => "UNKNOWN"} [2026-08-21 07:15:41.771] [DEBUG] QUERY OK db=49.6ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:40Z", "UNKNOWN", "sim_iccid2", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781492, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.772] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:15:40Z", "value" => "UNKNOWN"} [2026-08-21 07:15:41.825] [DEBUG] QUERY OK db=52.0ms idle=53.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:40Z", "UNKNOWN", "sim_imsi2", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781494, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.826] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:15:40Z", "value" => "25"} [2026-08-21 07:15:41.890] [DEBUG] QUERY OK db=64.2ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:40Z", "25", "data_usage_mb", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.891] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781496, itemkey: "data_usage_mb", value: "25", timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.891] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:15:40Z", "value" => "0"} [2026-08-21 07:15:41.984] [DEBUG] QUERY OK db=92.5ms idle=65.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15:40Z", "0", "mobile_data_mb", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:41.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781498, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:41.985] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:15:42.039] [DEBUG] QUERY OK db=51.5ms idle=94.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77016, ~N[2026-08-21 07:15:41], ~N[2026-08-21 07:15:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:15:42.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781500, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:15:40Z", message: nil, status_log_id: 77016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:15:41], updated_at: ~N[2026-08-21 07:15:41]}} [2026-08-21 07:15:42.223] [WARN ] navigate event to "http://localhost:5329/admin/settlements/summary" failed because you are redirecting across live_sessions. A full page reload will be performed instead [2026-08-21 07:15:42.617] [INFO ] GET /admin/settlements/summary [2026-08-21 07:15:42.617] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 07:15:42.619] [DEBUG] QUERY OK source="users_tokens" db=0.8ms idle=1333.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)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:15:42.618105Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 07:15:42.662] [DEBUG] QUERY OK source="core_transactions" db=8.1ms queue=0.4ms idle=617.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:15:42.672] [DEBUG] QUERY OK source="merchant_adjustments" db=1.1ms queue=0.4ms idle=544.0ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:15:42.678] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=0.4ms idle=14.4ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:15:42.688] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=0.7ms idle=14.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:15:42.690] [INFO ] Sent 200 in 72ms [2026-08-21 07:15:44.476] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 33µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "LWxaBAwqITpMGSwCQlwTNBVlFAVJVBMrC5bFxkxP6rZaw-aed1rWqgiO", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 07:15:44.663] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "nY8BtAYjzkvc5qrQqTfR83zd", "live_socket_id" => "users_sessions:_gyWJnb72cBNLoly6C0mOch11oXZNsn0EVBfto7MVeo=", "user_token" => <<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>} [2026-08-21 07:15:44.665] [DEBUG] QUERY OK source="users_tokens" db=0.8ms queue=0.1ms idle=1379.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)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:15:44.664426Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 07:15:44.667] [DEBUG] QUERY OK source="core_transactions" db=1.6ms queue=0.1ms idle=528.1ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:15:44.668] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms idle=187.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:15:44.670] [DEBUG] QUERY OK source="core_transactions" db=1.1ms idle=1.4ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:15:44.673] [DEBUG] QUERY OK source="tid_masters" db=1.1ms queue=1.6ms idle=1.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:15:44.673] [DEBUG] Replied in 10ms [2026-08-21 07:16:11.245] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:16:11.245] [INFO ] Incoming JSON payload: {"oid":"295ec5e6-2e2c-461d-86d2-3318590a675f","sn":"98251226730001","uploadTime":"2026-08-21T07:16:10Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:16:10Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:16:10Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:16:10Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:16:10Z"},{"itemkey":"ram_free_mb","value":"898","timestamp":"2026-08-21T07:16:10Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:16:10Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:16:10Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:16:10Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:16:10Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:16:10Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:16:10Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:16:10Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:16:10Z"},{"itemkey":"data_usage_mb","value":"25","timestamp":"2026-08-21T07:16:10Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:16:11.246] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "295ec5e6-2e2c-461d-86d2-3318590a675f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:16:10Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:16:10Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:16:10Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:16:10Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:16:10Z", "value" => "898"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:16:10Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:16:10Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:16:10Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:16:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:16:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:16:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:16:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:16:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:16:10Z", "value" => "25"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:16:10Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:16:10Z", "vendor" => "morefun"} [2026-08-21 07:16:11.246] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:16:11.246] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:16:11.246] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:16:11.248] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=1758.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-08-21 07:16:11.250] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=995.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-08-21 07:16:11.250] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:16:11.252] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms queue=0.3ms idle=1.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:16:11.253] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:16:11.280] [DEBUG] QUERY OK source="tms_terminals" db=26.3ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:16:11], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:16:11.280] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:16:11.285] [DEBUG] QUERY OK source="tms_terminals" db=4.7ms 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.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:16:11.333] [DEBUG] QUERY OK source="tms_terminals" db=47.3ms idle=5.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:16:11], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:16:11.378] [DEBUG] QUERY OK db=43.9ms idle=48.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "295ec5e6-2e2c-461d-86d2-3318590a675f", "2026-08-21T07:16:10Z", ~N[2026-08-21 07:16:11], ~N[2026-08-21 07:16:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:16:11.379] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77018, oid: "295ec5e6-2e2c-461d-86d2-3318590a675f", upload_time: "2026-08-21T07:16:10Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:11], updated_at: ~N[2026-08-21 07:16:11]} [2026-08-21 07:16:11.379] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:16:10Z", "value" => "morefun"} [2026-08-21 07:16:11.503] [DEBUG] QUERY OK db=123.3ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:10Z", "morefun", "vendor", 77018, ~N[2026-08-21 07:16:11], ~N[2026-08-21 07:16:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:11.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781502, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:11], updated_at: ~N[2026-08-21 07:16:11]}} [2026-08-21 07:16:11.503] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:16:10Z", "value" => "kiosk_launcher"} [2026-08-21 07:16:11.542] [DEBUG] QUERY OK db=38.1ms idle=126.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:10Z", "kiosk_launcher", "model", 77018, ~N[2026-08-21 07:16:11], ~N[2026-08-21 07:16:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:11.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781504, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:11], updated_at: ~N[2026-08-21 07:16:11]}} [2026-08-21 07:16:11.542] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:16:10Z", "value" => "1.0"} [2026-08-21 07:16:11.605] [DEBUG] QUERY OK db=62.7ms queue=0.1ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:10Z", "1.0", "app_version", 77018, ~N[2026-08-21 07:16:11], ~N[2026-08-21 07:16:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:11.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781506, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:11], updated_at: ~N[2026-08-21 07:16:11]}} [2026-08-21 07:16:11.606] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:16:10Z", "value" => "13"} [2026-08-21 07:16:11.673] [DEBUG] QUERY OK db=66.1ms idle=65.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:10Z", "13", "android_version", 77018, ~N[2026-08-21 07:16:11], ~N[2026-08-21 07:16:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:11.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781508, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:11], updated_at: ~N[2026-08-21 07:16:11]}} [2026-08-21 07:16:11.673] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:16:10Z", "value" => "898"} [2026-08-21 07:16:11.735] [DEBUG] QUERY OK db=61.3ms idle=68.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:10Z", "898", "ram_free_mb", 77018, ~N[2026-08-21 07:16:11], ~N[2026-08-21 07:16:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:11.736] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781510, itemkey: "ram_free_mb", value: "898", timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:11], updated_at: ~N[2026-08-21 07:16:11]}} [2026-08-21 07:16:11.736] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:16:10Z", "value" => "WIFI"} [2026-08-21 07:16:11.786] [DEBUG] QUERY OK db=49.1ms idle=63.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:10Z", "WIFI", "network_type", 77018, ~N[2026-08-21 07:16:11], ~N[2026-08-21 07:16:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:11.786] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781512, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:11], updated_at: ~N[2026-08-21 07:16:11]}} [2026-08-21 07:16:11.786] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:16:10Z", "value" => "true"} [2026-08-21 07:16:11.875] [DEBUG] QUERY OK db=88.6ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:10Z", "true", "kiosk_active", 77018, ~N[2026-08-21 07:16:11], ~N[2026-08-21 07:16:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:11.876] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781514, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:11], updated_at: ~N[2026-08-21 07:16:11]}} [2026-08-21 07:16:11.876] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:16:10Z", "value" => ""} [2026-08-21 07:16:11.984] [DEBUG] QUERY OK db=106.9ms queue=0.4ms idle=90.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:16:10Z", "sim_operator", 77018, ~N[2026-08-21 07:16:11], ~N[2026-08-21 07:16:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:11.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781516, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:11], updated_at: ~N[2026-08-21 07:16:11]}} [2026-08-21 07:16:11.984] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:16:10Z", "value" => "UNKNOWN"} [2026-08-21 07:16:12.070] [DEBUG] QUERY OK db=84.9ms idle=109.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:10Z", "UNKNOWN", "sim_number", 77018, ~N[2026-08-21 07:16:11], ~N[2026-08-21 07:16:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:12.070] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781518, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:11], updated_at: ~N[2026-08-21 07:16:11]}} [2026-08-21 07:16:12.071] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:16:10Z", "value" => "UNKNOWN"} [2026-08-21 07:16:12.131] [DEBUG] QUERY OK db=59.8ms idle=87.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:10Z", "UNKNOWN", "sim_iccid", 77018, ~N[2026-08-21 07:16:12], ~N[2026-08-21 07:16:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:12.131] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781520, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:12], updated_at: ~N[2026-08-21 07:16:12]}} [2026-08-21 07:16:12.131] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:16:10Z", "value" => "UNKNOWN"} [2026-08-21 07:16:12.206] [DEBUG] QUERY OK db=74.0ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:10Z", "UNKNOWN", "sim_imsi", 77018, ~N[2026-08-21 07:16:12], ~N[2026-08-21 07:16:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:12.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781522, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:12], updated_at: ~N[2026-08-21 07:16:12]}} [2026-08-21 07:16:12.206] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:16:10Z", "value" => "UNKNOWN"} [2026-08-21 07:16:12.434] [DEBUG] QUERY OK db=227.0ms idle=75.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:10Z", "UNKNOWN", "sim_iccid2", 77018, ~N[2026-08-21 07:16:12], ~N[2026-08-21 07:16:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:12.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781524, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:12], updated_at: ~N[2026-08-21 07:16:12]}} [2026-08-21 07:16:12.434] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:16:10Z", "value" => "UNKNOWN"} [2026-08-21 07:16:12.497] [DEBUG] QUERY OK db=62.1ms idle=169.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:10Z", "UNKNOWN", "sim_imsi2", 77018, ~N[2026-08-21 07:16:12], ~N[2026-08-21 07:16:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:12.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781526, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:12], updated_at: ~N[2026-08-21 07:16:12]}} [2026-08-21 07:16:12.497] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:16:10Z", "value" => "25"} [2026-08-21 07:16:12.544] [DEBUG] QUERY OK db=46.8ms queue=0.1ms idle=63.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:10Z", "25", "data_usage_mb", 77018, ~N[2026-08-21 07:16:12], ~N[2026-08-21 07:16:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:12.545] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781528, itemkey: "data_usage_mb", value: "25", timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:12], updated_at: ~N[2026-08-21 07:16:12]}} [2026-08-21 07:16:12.545] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:16:10Z", "value" => "0"} [2026-08-21 07:16:12.629] [DEBUG] QUERY OK db=83.2ms idle=48.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:10Z", "0", "mobile_data_mb", 77018, ~N[2026-08-21 07:16:12], ~N[2026-08-21 07:16:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:12.629] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781530, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:12], updated_at: ~N[2026-08-21 07:16:12]}} [2026-08-21 07:16:12.630] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:16:12.685] [DEBUG] QUERY OK db=54.7ms idle=85.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77018, ~N[2026-08-21 07:16:12], ~N[2026-08-21 07:16:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:12.686] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781532, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:16:10Z", message: nil, status_log_id: 77018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:12], updated_at: ~N[2026-08-21 07:16:12]}} [2026-08-21 07:16:41.365] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:16:41.365] [INFO ] Incoming JSON payload: {"oid":"d7b52b77-771d-4207-be60-86679bff90a1","sn":"98251226730001","uploadTime":"2026-08-21T07:16:40Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:16:40Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:16:40Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:16:40Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:16:40Z"},{"itemkey":"ram_free_mb","value":"895","timestamp":"2026-08-21T07:16:40Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:16:40Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:16:40Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:16:40Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:16:40Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:16:40Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:16:40Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:16:40Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:16:40Z"},{"itemkey":"data_usage_mb","value":"25","timestamp":"2026-08-21T07:16:40Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:16:41.367] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d7b52b77-771d-4207-be60-86679bff90a1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:16:40Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:16:40Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:16:40Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:16:40Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:16:40Z", "value" => "895"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:16:40Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:16:40Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:16:40Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:16:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:16:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:16:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:16:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:16:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:16:40Z", "value" => "25"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:16:40Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:16:40Z", "vendor" => "morefun"} [2026-08-21 07:16:41.367] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:16:41.367] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:16:41.367] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:16:41.370] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms queue=0.1ms idle=1873.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-08-21 07:16:41.371] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=990.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-08-21 07:16:41.371] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:16:41.373] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:16:41.374] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:16:41.386] [DEBUG] QUERY OK source="tms_terminals" db=9.8ms queue=2.3ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:16:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:16:41.386] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:16:41.388] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:16:41.423] [DEBUG] QUERY OK source="tms_terminals" db=34.6ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:16:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:16:41.485] [DEBUG] QUERY OK db=57.8ms queue=0.3ms idle=37.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "d7b52b77-771d-4207-be60-86679bff90a1", "2026-08-21T07:16:40Z", ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:16:41.486] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77020, oid: "d7b52b77-771d-4207-be60-86679bff90a1", upload_time: "2026-08-21T07:16:40Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]} [2026-08-21 07:16:41.486] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:16:40Z", "value" => "morefun"} [2026-08-21 07:16:41.517] [DEBUG] QUERY OK db=31.1ms queue=0.1ms idle=62.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:40Z", "morefun", "vendor", 77020, ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:41.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781534, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]}} [2026-08-21 07:16:41.518] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:16:40Z", "value" => "kiosk_launcher"} [2026-08-21 07:16:41.549] [DEBUG] QUERY OK db=30.9ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:40Z", "kiosk_launcher", "model", 77020, ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:41.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781535, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]}} [2026-08-21 07:16:41.551] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:16:40Z", "value" => "1.0"} [2026-08-21 07:16:41.653] [DEBUG] QUERY OK db=101.9ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:40Z", "1.0", "app_version", 77020, ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:41.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781536, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]}} [2026-08-21 07:16:41.654] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:16:40Z", "value" => "13"} [2026-08-21 07:16:41.695] [DEBUG] QUERY OK db=40.6ms idle=104.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:40Z", "13", "android_version", 77020, ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:41.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781537, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]}} [2026-08-21 07:16:41.695] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:16:40Z", "value" => "895"} [2026-08-21 07:16:41.709] [DEBUG] QUERY OK db=13.2ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:40Z", "895", "ram_free_mb", 77020, ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:41.709] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781539, itemkey: "ram_free_mb", value: "895", timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]}} [2026-08-21 07:16:41.709] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:16:40Z", "value" => "WIFI"} [2026-08-21 07:16:41.749] [DEBUG] QUERY OK db=39.4ms idle=14.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:40Z", "WIFI", "network_type", 77020, ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:41.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781540, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]}} [2026-08-21 07:16:41.750] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:16:40Z", "value" => "true"} [2026-08-21 07:16:41.802] [DEBUG] QUERY OK db=52.5ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:40Z", "true", "kiosk_active", 77020, ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:41.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781542, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]}} [2026-08-21 07:16:41.803] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:16:40Z", "value" => ""} [2026-08-21 07:16:41.836] [DEBUG] QUERY OK db=33.3ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:16:40Z", "sim_operator", 77020, ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:41.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781544, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]}} [2026-08-21 07:16:41.837] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:16:40Z", "value" => "UNKNOWN"} [2026-08-21 07:16:41.870] [DEBUG] QUERY OK db=29.9ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:40Z", "UNKNOWN", "sim_number", 77020, ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:41.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781545, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]}} [2026-08-21 07:16:41.870] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:16:40Z", "value" => "UNKNOWN"} [2026-08-21 07:16:41.911] [DEBUG] QUERY OK db=40.2ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:40Z", "UNKNOWN", "sim_iccid", 77020, ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:41.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781547, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]}} [2026-08-21 07:16:41.912] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:16:40Z", "value" => "UNKNOWN"} [2026-08-21 07:16:41.925] [DEBUG] QUERY OK db=12.7ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:40Z", "UNKNOWN", "sim_imsi", 77020, ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:41.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781548, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]}} [2026-08-21 07:16:41.930] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:16:40Z", "value" => "UNKNOWN"} [2026-08-21 07:16:41.943] [DEBUG] QUERY OK db=10.5ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:40Z", "UNKNOWN", "sim_iccid2", 77020, ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:41.944] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781549, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]}} [2026-08-21 07:16:41.944] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:16:40Z", "value" => "UNKNOWN"} [2026-08-21 07:16:41.970] [DEBUG] QUERY OK db=22.9ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:40Z", "UNKNOWN", "sim_imsi2", 77020, ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:41.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781550, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]}} [2026-08-21 07:16:41.971] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:16:40Z", "value" => "25"} [2026-08-21 07:16:42.001] [DEBUG] QUERY OK db=29.5ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:40Z", "25", "data_usage_mb", 77020, ~N[2026-08-21 07:16:41], ~N[2026-08-21 07:16:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:42.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781552, itemkey: "data_usage_mb", value: "25", timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:41], updated_at: ~N[2026-08-21 07:16:41]}} [2026-08-21 07:16:42.001] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:16:40Z", "value" => "0"} [2026-08-21 07:16:42.056] [DEBUG] QUERY OK db=53.8ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16:40Z", "0", "mobile_data_mb", 77020, ~N[2026-08-21 07:16:42], ~N[2026-08-21 07:16:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:42.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781553, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:42], updated_at: ~N[2026-08-21 07:16:42]}} [2026-08-21 07:16:42.059] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:16:42.123] [DEBUG] QUERY OK db=62.2ms idle=60.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77020, ~N[2026-08-21 07:16:42], ~N[2026-08-21 07:16:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:16:42.131] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781555, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:16:40Z", message: nil, status_log_id: 77020, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:16:42], updated_at: ~N[2026-08-21 07:16:42]}} [2026-08-21 07:17:06.146] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:17:06.147] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T07:17:05Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T07:17:05Z","value":"2"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T07:17:05Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T07:17:05Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T07:17:05Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T07:17:05Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T07:17:05Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T07:17:05Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T07:17:05Z","vendor":"MoreFun"} [2026-08-21 07:17:06.147] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:17:05Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:17:05Z", "value" => "2"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:17:05Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:17:05Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:17:05Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:17:05Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:17:05Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:17:05Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:17:05Z", "vendor" => "MoreFun"} [2026-08-21 07:17:06.147] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 07:17:06.147] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:17:06.147] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 07:17:06.150] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=1629.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-08-21 07:17:06.151] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=623.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-08-21 07:17:06.164] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms queue=2.7ms idle=10.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-08-21 07:17:06.182] [DEBUG] QUERY OK source="parameter_definitions" db=1.4ms queue=6.0ms idle=23.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-08-21 07:17:06.237] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms queue=2.5ms idle=70.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-08-21 07:17:06.255] [DEBUG] QUERY OK source="pos_merchant" db=1.0ms queue=3.0ms idle=68.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 07:17:06.258] [DEBUG] QUERY OK db=0.6ms queue=2.6ms idle=752.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 ["626165170000000"] [2026-08-21 07:17:06.264] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 07:17:06.275] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms queue=0.8ms idle=37.1ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 07:17:06.297] [DEBUG] QUERY OK source="address" db=0.4ms queue=8.6ms idle=33.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 07:17:06.302] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 07:17:06.376] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 07:17:06.598] [DEBUG] QUERY OK db=186.4ms queue=2.1ms idle=131.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "daf1924defca7bc3299a326ecd058803842e71af27c3edfc4abb8c3f797758ad", 3171, 936, ~U[2026-08-21 07:17:06Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 07:17:06], ~N[2026-08-21 07:17:06]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 07:17:06.602] [INFO ] AutoPushService: Created push log 48365 for MF919 params.zip [2026-08-21 07:17:06.610] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 3171, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 07:17:06.610] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:17:06.619] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 07:17:06.640] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms queue=1.8ms idle=106.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 07:17:06.657] [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-08-21 07:17:06.833] [DEBUG] QUERY OK db=173.9ms queue=0.4ms idle=63.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "71438ef5ed2b1857da642725a3dda1b458b784ec83cd48735ecc2c6a9cbde421", 3299, 17947, ~U[2026-08-21 07:17:06Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 07:17:06], ~N[2026-08-21 07:17:06]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 07:17:06.838] [INFO ] AutoPushService: Created push log 48367 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 07:17:06.838] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 3299, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 07:17:06.838] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:17:06.841] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 07:17:06.849] [DEBUG] QUERY OK source="config_file_versions" db=4.4ms queue=2.6ms idle=201.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-08-21 07:17:06.863] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 07:17:06.864] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.5ms 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.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 07:17:06.865] [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-08-21 07:17:07.065] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 07:17:07.066] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:17:07.066] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:17:07.072] [DEBUG] QUERY OK source="config_file_versions" db=4.2ms idle=218.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-08-21 07:17:07.074] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:17:07.074] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 07:17:07.077] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=210.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:17:07.078] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:17:07.087] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=7.3ms idle=7.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-08-21 07:17:07.090] [DEBUG] QUERY OK source="config_file_versions" db=3.0ms idle=9.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-08-21 07:17:07.093] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms 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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:17:07.094] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 07:17:07.211] [DEBUG] QUERY OK source="parameter_push_logs" db=113.9ms queue=3.2ms idle=3.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-08-21 06:47:07]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 07:17:07.211] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 07:17:07.211] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 07:17:07.212] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=118.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:17:07.214] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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-08-21 07:17:07.215] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:17:07.219] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:17:07.306] [DEBUG] QUERY OK source="tms_terminals" db=86.4ms idle=5.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:17:07], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:17:07.334] [DEBUG] QUERY OK db=25.1ms queue=2.2ms idle=87.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T07:17:05Z", ~N[2026-08-21 07:17:07], ~N[2026-08-21 07:17:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:17:07.334] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77022, oid: "organization_id", upload_time: "2026-08-21T07:17:05Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:07], updated_at: ~N[2026-08-21 07:17:07]} [2026-08-21 07:17:07.334] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:17:05Z", "value" => "online"} [2026-08-21 07:17:07.398] [DEBUG] QUERY OK db=58.8ms queue=4.6ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T07:17:05Z", "online", "status", 77022, ~N[2026-08-21 07:17:07], ~N[2026-08-21 07:17:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:07.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781566, itemkey: "status", value: "online", timestamp: "2026-08-21T07:17:05Z", message: "Terminal status update", status_log_id: 77022, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:07], updated_at: ~N[2026-08-21 07:17:07]}} [2026-08-21 07:17:07.398] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 07:17:07.404] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=68.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:17:07], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-08-21 07:17:07.404] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:17:05Z", "value" => "2"} [2026-08-21 07:17:07.460] [DEBUG] QUERY OK db=49.8ms decode=5.7ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T07:17:05Z", "2", "battery", 77022, ~N[2026-08-21 07:17:07], ~N[2026-08-21 07:17:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:07.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781567, itemkey: "battery", value: "2", timestamp: "2026-08-21T07:17:05Z", message: "Battery level", status_log_id: 77022, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:07], updated_at: ~N[2026-08-21 07:17:07]}} [2026-08-21 07:17:07.460] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:17:05Z", "value" => "online"} [2026-08-21 07:17:07.511] [DEBUG] QUERY OK db=45.0ms queue=5.4ms idle=56.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T07:17:05Z", "online", "network", 77022, ~N[2026-08-21 07:17:07], ~N[2026-08-21 07:17:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:07.514] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781569, itemkey: "network", value: "online", timestamp: "2026-08-21T07:17:05Z", message: "Network connectivity", status_log_id: 77022, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:07], updated_at: ~N[2026-08-21 07:17:07]}} [2026-08-21 07:17:07.515] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 07:17:07.519] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=63.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:17:07], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-08-21 07:17:07.519] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:17:05Z", "value" => "0"} [2026-08-21 07:17:07.559] [DEBUG] QUERY OK db=39.3ms idle=8.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T07:17:05Z", "0", "cpu", 77022, ~N[2026-08-21 07:17:07], ~N[2026-08-21 07:17:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:07.562] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781570, itemkey: "cpu", value: "0", timestamp: "2026-08-21T07:17:05Z", message: "CPU usage percentage", status_log_id: 77022, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:07], updated_at: ~N[2026-08-21 07:17:07]}} [2026-08-21 07:17:07.564] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:17:05Z", "value" => "1.0.0"} [2026-08-21 07:17:07.620] [DEBUG] QUERY OK db=54.6ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T07:17:05Z", "1.0.0", "parameter_config", 77022, ~N[2026-08-21 07:17:07], ~N[2026-08-21 07:17:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:07.620] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781571, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T07:17:05Z", message: "Current parameters version", status_log_id: 77022, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:07], updated_at: ~N[2026-08-21 07:17:07]}} [2026-08-21 07:17:07.620] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:17:05Z", "value" => "1.0.1"} [2026-08-21 07:17:07.665] [DEBUG] QUERY OK db=44.1ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T07:17:05Z", "1.0.1", "emv_config", 77022, ~N[2026-08-21 07:17:07], ~N[2026-08-21 07:17:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:07.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781573, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T07:17:05Z", message: "Current EMV config version", status_log_id: 77022, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:07], updated_at: ~N[2026-08-21 07:17:07]}} [2026-08-21 07:17:07.669] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:17:05Z", "value" => ""} [2026-08-21 07:17:07.743] [DEBUG] QUERY OK db=66.5ms queue=2.5ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T07:17:05Z", "keys_config", 77022, ~N[2026-08-21 07:17:07], ~N[2026-08-21 07:17:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:07.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781575, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T07:17:05Z", message: "Current keys config version", status_log_id: 77022, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:07], updated_at: ~N[2026-08-21 07:17:07]}} [2026-08-21 07:17:07.744] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:17:05Z", "value" => "3.8.7.3"} [2026-08-21 07:17:07.816] [DEBUG] QUERY OK db=69.2ms idle=82.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T07:17:05Z", "3.8.7.3", "application", 77022, ~N[2026-08-21 07:17:07], ~N[2026-08-21 07:17:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:07.818] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781577, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T07:17:05Z", message: "Current application version", status_log_id: 77022, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:07], updated_at: ~N[2026-08-21 07:17:07]}} [2026-08-21 07:17:07.821] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=2.5ms idle=76.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:17:07], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-08-21 07:17:07.831] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:17:06Z"} [2026-08-21 07:17:07.844] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:17:06Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 7, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:17:11.451] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:17:11.451] [INFO ] Incoming JSON payload: {"oid":"43e0b596-bc54-416b-93f4-b1a14b964033","sn":"98251226730001","uploadTime":"2026-08-21T07:17:11Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"ram_free_mb","value":"889","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"data_usage_mb","value":"25","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:17:11Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:17:11.456] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "43e0b596-bc54-416b-93f4-b1a14b964033", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:17:11Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:17:11Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:17:11Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:17:11Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:17:11Z", "value" => "889"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:17:11Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:17:11Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:17:11Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:17:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:17:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:17:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:17:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:17:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:17:11Z", "value" => "25"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:17:11Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:17:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:17:11Z", "vendor" => "morefun"} [2026-08-21 07:17:11.460] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:17:11.460] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:17:11.460] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:17:11.471] [DEBUG] QUERY OK source="parameter_templates" db=10.9ms idle=896.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-08-21 07:17:11.477] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms queue=2.1ms idle=520.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-08-21 07:17:11.477] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:17:11.487] [DEBUG] QUERY OK source="tms_terminals" db=4.4ms idle=13.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:17:11.572] [DEBUG] QUERY OK source="tms_terminals" db=43.8ms queue=40.7ms idle=10.9ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 07:17:11], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:17:11.572] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:17:11.576] [INFO ] Event published: terminal_updated [2026-08-21 07:17:11.577] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:17:11.577] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:17:11.577] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:17:11.618] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.3ms queue=3.3ms idle=40.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:17:11], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:17:11.622] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms queue=1.7ms idle=34.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:17:11.665] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms queue=43.8ms 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-08-21 07:17:11], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:17:11.666] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:17:11.672] [DEBUG] QUERY OK source="terminal_group_rules" db=2.4ms queue=3.7ms idle=43.6ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:17:11.672] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:17:11.675] [DEBUG] QUERY OK source="tms_terminals" db=9.1ms idle=0.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:17:11.705] [DEBUG] QUERY OK source="tms_terminals" db=29.4ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:17:11], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:17:11.745] [DEBUG] QUERY OK db=38.4ms idle=30.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "43e0b596-bc54-416b-93f4-b1a14b964033", "2026-08-21T07:17:11Z", ~N[2026-08-21 07:17:11], ~N[2026-08-21 07:17:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:17:11.745] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77024, oid: "43e0b596-bc54-416b-93f4-b1a14b964033", upload_time: "2026-08-21T07:17:11Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:11], updated_at: ~N[2026-08-21 07:17:11]} [2026-08-21 07:17:11.745] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:17:11Z", "value" => "morefun"} [2026-08-21 07:17:12.352] [DEBUG] QUERY OK db=561.0ms queue=44.0ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "morefun", "vendor", 77024, ~N[2026-08-21 07:17:11], ~N[2026-08-21 07:17:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:12.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781583, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:11], updated_at: ~N[2026-08-21 07:17:11]}} [2026-08-21 07:17:12.358] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:17:11Z", "value" => "kiosk_launcher"} [2026-08-21 07:17:13.098] [DEBUG] QUERY OK db=739.4ms idle=613.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "kiosk_launcher", "model", 77024, ~N[2026-08-21 07:17:12], ~N[2026-08-21 07:17:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:13.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781585, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:12], updated_at: ~N[2026-08-21 07:17:12]}} [2026-08-21 07:17:13.103] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:17:11Z", "value" => "1.0"} [2026-08-21 07:17:13.492] [DEBUG] QUERY OK db=388.3ms queue=0.1ms idle=509.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "1.0", "app_version", 77024, ~N[2026-08-21 07:17:13], ~N[2026-08-21 07:17:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:13.492] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781587, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:13], updated_at: ~N[2026-08-21 07:17:13]}} [2026-08-21 07:17:13.492] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:17:11Z", "value" => "13"} [2026-08-21 07:17:13.546] [DEBUG] QUERY OK db=53.3ms idle=394.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "13", "android_version", 77024, ~N[2026-08-21 07:17:13], ~N[2026-08-21 07:17:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:13.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781589, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:13], updated_at: ~N[2026-08-21 07:17:13]}} [2026-08-21 07:17:13.546] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:17:11Z", "value" => "889"} [2026-08-21 07:17:13.613] [DEBUG] QUERY OK db=66.3ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "889", "ram_free_mb", 77024, ~N[2026-08-21 07:17:13], ~N[2026-08-21 07:17:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:13.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781591, itemkey: "ram_free_mb", value: "889", timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:13], updated_at: ~N[2026-08-21 07:17:13]}} [2026-08-21 07:17:13.617] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:17:11Z", "value" => "WIFI"} [2026-08-21 07:17:13.654] [DEBUG] QUERY OK db=35.4ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "WIFI", "network_type", 77024, ~N[2026-08-21 07:17:13], ~N[2026-08-21 07:17:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:13.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781592, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:13], updated_at: ~N[2026-08-21 07:17:13]}} [2026-08-21 07:17:13.661] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:17:11Z", "value" => "true"} [2026-08-21 07:17:13.712] [DEBUG] QUERY OK db=50.9ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "true", "kiosk_active", 77024, ~N[2026-08-21 07:17:13], ~N[2026-08-21 07:17:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:13.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781594, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:13], updated_at: ~N[2026-08-21 07:17:13]}} [2026-08-21 07:17:13.712] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:17:11Z", "value" => ""} [2026-08-21 07:17:13.767] [DEBUG] QUERY OK db=54.7ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:17:11Z", "sim_operator", 77024, ~N[2026-08-21 07:17:13], ~N[2026-08-21 07:17:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:13.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781596, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:13], updated_at: ~N[2026-08-21 07:17:13]}} [2026-08-21 07:17:13.769] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:17:11Z", "value" => "UNKNOWN"} [2026-08-21 07:17:13.838] [DEBUG] QUERY OK db=68.6ms idle=57.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "UNKNOWN", "sim_number", 77024, ~N[2026-08-21 07:17:13], ~N[2026-08-21 07:17:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:13.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781598, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:13], updated_at: ~N[2026-08-21 07:17:13]}} [2026-08-21 07:17:13.839] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:17:11Z", "value" => "UNKNOWN"} [2026-08-21 07:17:13.901] [DEBUG] QUERY OK db=61.6ms idle=73.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "UNKNOWN", "sim_iccid", 77024, ~N[2026-08-21 07:17:13], ~N[2026-08-21 07:17:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:13.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781600, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:13], updated_at: ~N[2026-08-21 07:17:13]}} [2026-08-21 07:17:13.901] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:17:11Z", "value" => "UNKNOWN"} [2026-08-21 07:17:13.949] [DEBUG] QUERY OK db=48.1ms idle=63.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "UNKNOWN", "sim_imsi", 77024, ~N[2026-08-21 07:17:13], ~N[2026-08-21 07:17:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:13.950] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781602, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:13], updated_at: ~N[2026-08-21 07:17:13]}} [2026-08-21 07:17:13.950] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:17:11Z", "value" => "UNKNOWN"} [2026-08-21 07:17:14.016] [DEBUG] QUERY OK db=53.1ms queue=10.9ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "UNKNOWN", "sim_iccid2", 77024, ~N[2026-08-21 07:17:13], ~N[2026-08-21 07:17:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:14.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781604, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:13], updated_at: ~N[2026-08-21 07:17:13]}} [2026-08-21 07:17:14.016] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:17:11Z", "value" => "UNKNOWN"} [2026-08-21 07:17:14.063] [DEBUG] QUERY OK db=46.7ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "UNKNOWN", "sim_imsi2", 77024, ~N[2026-08-21 07:17:14], ~N[2026-08-21 07:17:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:14.066] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781606, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:14], updated_at: ~N[2026-08-21 07:17:14]}} [2026-08-21 07:17:14.066] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:17:11Z", "value" => "25"} [2026-08-21 07:17:14.126] [DEBUG] QUERY OK db=56.2ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "25", "data_usage_mb", 77024, ~N[2026-08-21 07:17:14], ~N[2026-08-21 07:17:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:14.133] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781608, itemkey: "data_usage_mb", value: "25", timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:14], updated_at: ~N[2026-08-21 07:17:14]}} [2026-08-21 07:17:14.133] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:17:11Z", "value" => "0"} [2026-08-21 07:17:14.162] [DEBUG] QUERY OK db=28.1ms idle=70.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "0", "mobile_data_mb", 77024, ~N[2026-08-21 07:17:14], ~N[2026-08-21 07:17:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:14.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781609, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:14], updated_at: ~N[2026-08-21 07:17:14]}} [2026-08-21 07:17:14.175] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:17:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:17:14.235] [DEBUG] QUERY OK db=56.8ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:11Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77024, ~N[2026-08-21 07:17:14], ~N[2026-08-21 07:17:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:14.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781611, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:17:11Z", message: nil, status_log_id: 77024, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:14], updated_at: ~N[2026-08-21 07:17:14]}} [2026-08-21 07:17:27.075] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:17:06Z"} [2026-08-21 07:17:27.075] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:17:06Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 8, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:17:27.119] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:17:06Z"} [2026-08-21 07:17:27.119] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:17:06Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 9, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:17:27.121] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:17:06Z"} [2026-08-21 07:17:27.121] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:17:06Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 10, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:17:34.724] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch980308009433_20260821071734325","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T07:17:34Z"} [2026-08-21 07:17:34.724] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch980308009433_20260821071734325", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:17:34Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 12, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 57, 56, 48, 51, 48, 56, 48, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:17:41.524] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:17:41.524] [INFO ] Incoming JSON payload: {"oid":"79dedfe3-f04e-439b-b07a-48e386e9ef05","sn":"98251226730001","uploadTime":"2026-08-21T07:17:41Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"ram_free_mb","value":"884","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"data_usage_mb","value":"25","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:17:41Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:17:41.527] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "79dedfe3-f04e-439b-b07a-48e386e9ef05", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:17:41Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:17:41Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:17:41Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:17:41Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:17:41Z", "value" => "884"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:17:41Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:17:41Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:17:41Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:17:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:17:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:17:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:17:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:17:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:17:41Z", "value" => "25"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:17:41Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:17:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:17:41Z", "vendor" => "morefun"} [2026-08-21 07:17:41.527] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:17:41.528] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:17:41.528] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:17:41.532] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms idle=1019.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 07:17:41.534] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=834.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-08-21 07:17:41.534] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:17:41.539] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:17:41.545] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:17:41.665] [DEBUG] QUERY OK source="tms_terminals" db=78.0ms queue=41.7ms idle=12.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:17:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:17:41.666] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:17:41.669] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms idle=126.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:17:41.716] [DEBUG] QUERY OK source="tms_terminals" db=40.6ms idle=9.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:17:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:17:41.758] [DEBUG] QUERY OK db=40.5ms queue=1.9ms idle=13.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "79dedfe3-f04e-439b-b07a-48e386e9ef05", "2026-08-21T07:17:41Z", ~N[2026-08-21 07:17:41], ~N[2026-08-21 07:17:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:17:41.759] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77026, oid: "79dedfe3-f04e-439b-b07a-48e386e9ef05", upload_time: "2026-08-21T07:17:41Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:41], updated_at: ~N[2026-08-21 07:17:41]} [2026-08-21 07:17:41.764] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:17:41Z", "value" => "morefun"} [2026-08-21 07:17:41.817] [DEBUG] QUERY OK db=52.7ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "morefun", "vendor", 77026, ~N[2026-08-21 07:17:41], ~N[2026-08-21 07:17:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:41.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781614, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:41], updated_at: ~N[2026-08-21 07:17:41]}} [2026-08-21 07:17:41.821] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:17:41Z", "value" => "kiosk_launcher"} [2026-08-21 07:17:41.882] [DEBUG] QUERY OK db=61.0ms idle=62.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "kiosk_launcher", "model", 77026, ~N[2026-08-21 07:17:41], ~N[2026-08-21 07:17:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:41.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781616, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:41], updated_at: ~N[2026-08-21 07:17:41]}} [2026-08-21 07:17:41.886] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:17:41Z", "value" => "1.0"} [2026-08-21 07:17:41.940] [DEBUG] QUERY OK db=54.0ms idle=68.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "1.0", "app_version", 77026, ~N[2026-08-21 07:17:41], ~N[2026-08-21 07:17:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:41.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781618, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:41], updated_at: ~N[2026-08-21 07:17:41]}} [2026-08-21 07:17:41.941] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:17:41Z", "value" => "13"} [2026-08-21 07:17:41.990] [DEBUG] QUERY OK db=48.5ms idle=58.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "13", "android_version", 77026, ~N[2026-08-21 07:17:41], ~N[2026-08-21 07:17:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:41.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781620, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:41], updated_at: ~N[2026-08-21 07:17:41]}} [2026-08-21 07:17:41.991] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:17:41Z", "value" => "884"} [2026-08-21 07:17:42.067] [DEBUG] QUERY OK db=75.3ms idle=51.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "884", "ram_free_mb", 77026, ~N[2026-08-21 07:17:41], ~N[2026-08-21 07:17:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:42.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781622, itemkey: "ram_free_mb", value: "884", timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:41], updated_at: ~N[2026-08-21 07:17:41]}} [2026-08-21 07:17:42.067] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:17:41Z", "value" => "WIFI"} [2026-08-21 07:17:42.163] [DEBUG] QUERY OK db=93.5ms queue=0.1ms idle=79.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "WIFI", "network_type", 77026, ~N[2026-08-21 07:17:42], ~N[2026-08-21 07:17:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:42.163] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781624, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:42], updated_at: ~N[2026-08-21 07:17:42]}} [2026-08-21 07:17:42.164] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:17:41Z", "value" => "true"} [2026-08-21 07:17:42.416] [DEBUG] QUERY OK db=251.7ms idle=97.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "true", "kiosk_active", 77026, ~N[2026-08-21 07:17:42], ~N[2026-08-21 07:17:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:42.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781626, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:42], updated_at: ~N[2026-08-21 07:17:42]}} [2026-08-21 07:17:42.417] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:17:41Z", "value" => ""} [2026-08-21 07:17:42.460] [DEBUG] QUERY OK db=43.2ms idle=254.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:17:41Z", "sim_operator", 77026, ~N[2026-08-21 07:17:42], ~N[2026-08-21 07:17:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:42.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781628, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:42], updated_at: ~N[2026-08-21 07:17:42]}} [2026-08-21 07:17:42.461] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:17:41Z", "value" => "UNKNOWN"} [2026-08-21 07:17:42.529] [DEBUG] QUERY OK db=68.1ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "UNKNOWN", "sim_number", 77026, ~N[2026-08-21 07:17:42], ~N[2026-08-21 07:17:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:42.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781630, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:42], updated_at: ~N[2026-08-21 07:17:42]}} [2026-08-21 07:17:42.530] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:17:41Z", "value" => "UNKNOWN"} [2026-08-21 07:17:42.623] [DEBUG] QUERY OK db=92.8ms idle=69.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "UNKNOWN", "sim_iccid", 77026, ~N[2026-08-21 07:17:42], ~N[2026-08-21 07:17:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:42.624] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781632, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:42], updated_at: ~N[2026-08-21 07:17:42]}} [2026-08-21 07:17:42.624] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:17:41Z", "value" => "UNKNOWN"} [2026-08-21 07:17:42.682] [DEBUG] QUERY OK db=56.3ms idle=96.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "UNKNOWN", "sim_imsi", 77026, ~N[2026-08-21 07:17:42], ~N[2026-08-21 07:17:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:42.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781634, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:42], updated_at: ~N[2026-08-21 07:17:42]}} [2026-08-21 07:17:42.684] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:17:41Z", "value" => "UNKNOWN"} [2026-08-21 07:17:42.731] [DEBUG] QUERY OK db=44.1ms idle=61.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "UNKNOWN", "sim_iccid2", 77026, ~N[2026-08-21 07:17:42], ~N[2026-08-21 07:17:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:42.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781636, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:42], updated_at: ~N[2026-08-21 07:17:42]}} [2026-08-21 07:17:42.731] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:17:41Z", "value" => "UNKNOWN"} [2026-08-21 07:17:42.797] [DEBUG] QUERY OK db=63.3ms queue=0.3ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "UNKNOWN", "sim_imsi2", 77026, ~N[2026-08-21 07:17:42], ~N[2026-08-21 07:17:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:42.797] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781638, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:42], updated_at: ~N[2026-08-21 07:17:42]}} [2026-08-21 07:17:42.797] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:17:41Z", "value" => "25"} [2026-08-21 07:17:42.836] [DEBUG] QUERY OK db=37.2ms idle=68.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "25", "data_usage_mb", 77026, ~N[2026-08-21 07:17:42], ~N[2026-08-21 07:17:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:42.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781640, itemkey: "data_usage_mb", value: "25", timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:42], updated_at: ~N[2026-08-21 07:17:42]}} [2026-08-21 07:17:42.837] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:17:41Z", "value" => "0"} [2026-08-21 07:17:42.883] [DEBUG] QUERY OK db=45.5ms queue=0.3ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "0", "mobile_data_mb", 77026, ~N[2026-08-21 07:17:42], ~N[2026-08-21 07:17:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:42.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781642, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:42], updated_at: ~N[2026-08-21 07:17:42]}} [2026-08-21 07:17:42.884] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:17:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:17:42.922] [DEBUG] QUERY OK db=36.6ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:17:41Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77026, ~N[2026-08-21 07:17:42], ~N[2026-08-21 07:17:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:17:42.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781643, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:17:41Z", message: nil, status_log_id: 77026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:17:42], updated_at: ~N[2026-08-21 07:17:42]}} [2026-08-21 07:18:03.317] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:18:03.317] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T07:18:03Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T07:18:03Z","value":"1"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T07:18:03Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T07:18:03Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T07:18:03Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T07:18:03Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T07:18:03Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T07:18:03Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T07:18:03Z","vendor":"MoreFun"} [2026-08-21 07:18:03.322] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:18:03Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:18:03Z", "value" => "1"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:18:03Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:18:03Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:18:03Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:18:03Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:18:03Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:18:03Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:18:03Z", "vendor" => "MoreFun"} [2026-08-21 07:18:03.322] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 07:18:03.322] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:18:03.322] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 07:18:03.324] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=1095.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-08-21 07:18:03.326] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=525.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-08-21 07:18:03.338] [DEBUG] QUERY OK source="parameter_template_values" db=8.9ms idle=2.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-08-21 07:18:03.345] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=5.4ms idle=12.2ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 07:18:03.357] [DEBUG] QUERY OK source="pos_terminal" db=10.6ms idle=10.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-08-21 07:18:03.388] [DEBUG] QUERY OK source="pos_merchant" db=31.1ms idle=11.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 07:18:03.397] [DEBUG] QUERY OK db=3.1ms queue=5.9ms idle=1877.9ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["626165170000000"] [2026-08-21 07:18:03.401] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 07:18:03.411] [DEBUG] QUERY OK source="pos_terminal_data" db=9.3ms idle=44.8ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 07:18:03.421] [DEBUG] QUERY OK source="address" db=1.2ms queue=1.7ms idle=30.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 07:18:03.422] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 07:18:03.426] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 07:18:03.483] [DEBUG] QUERY OK db=50.8ms queue=1.6ms idle=19.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "338a2604534e00b193c46743df02a5d2d0472ccb081bb79bd9552093afdf54e7", 676, 938, ~U[2026-08-21 07:18:03Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 07:18:03], ~N[2026-08-21 07:18:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 07:18:03.484] [INFO ] AutoPushService: Created push log 48368 for MF919 params.zip [2026-08-21 07:18:03.484] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 676, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 07:18:03.484] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:18:03.492] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 07:18:03.505] [DEBUG] QUERY OK source="config_file_versions" db=4.2ms idle=77.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-08-21 07:18:03.520] [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-08-21 07:18:03.588] [DEBUG] QUERY OK db=52.9ms queue=7.5ms idle=44.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8a1bbb89ad4933d5734686b6892744a5d8598d4cd7ccfbc7f253af8351eaab0b", 3747, 17947, ~U[2026-08-21 07:18:03Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 07:18:03], ~N[2026-08-21 07:18:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 07:18:03.588] [INFO ] AutoPushService: Created push log 48370 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 07:18:03.589] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 3747, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 07:18:03.592] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:18:03.592] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 07:18:03.604] [DEBUG] QUERY OK source="config_file_versions" db=11.2ms idle=88.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-08-21 07:18:03.604] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 07:18:03.607] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms 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"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 07:18:03.607] [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-08-21 07:18:03.627] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 07:18:03.627] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:18:03.627] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:18:03.635] [DEBUG] QUERY OK source="config_file_versions" db=7.4ms idle=30.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-08-21 07:18:03.638] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:18:03.638] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 07:18:03.640] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=31.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:18:03.732] [DEBUG] QUERY OK source="tms_terminals" db=38.6ms queue=41.7ms idle=16.4ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 07:18:03], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:18:03.732] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:18:03.733] [INFO ] Event published: terminal_updated [2026-08-21 07:18:03.733] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:18:03.733] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:18:03.733] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:18:03.743] [DEBUG] QUERY OK source="terminal_group_memberships" db=6.5ms queue=3.5ms idle=93.2ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:18:03], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:18:03.747] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms idle=11.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:18:03.748] [DEBUG] QUERY OK source="terminal_group_rules" db=1.2ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:18:03.749] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:18:03.832] [DEBUG] QUERY OK source="tms_terminals" db=25.0ms queue=62.8ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 07:18:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:18:03.855] [DEBUG] QUERY OK source="parameter_templates" db=11.8ms queue=5.4ms idle=25.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-08-21 07:18:03.871] [DEBUG] QUERY OK source="config_file_versions" db=13.5ms queue=2.3ms idle=23.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:18:03.879] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms idle=16.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:18:03.879] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 07:18:03.996] [DEBUG] QUERY OK source="parameter_push_logs" db=116.1ms idle=8.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-08-21 06:48:03]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 07:18:04.000] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 07:18:04.000] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 07:18:04.007] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms queue=0.3ms idle=129.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 07:18:04.013] [DEBUG] QUERY OK source="config_file_versions" db=5.7ms idle=11.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 07:18:04.013] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:18:04.024] [DEBUG] QUERY OK source="tms_terminals" db=9.5ms idle=6.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:18:04.151] [DEBUG] QUERY OK source="tms_terminals" db=83.8ms queue=42.9ms idle=11.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:18:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:18:04.242] [DEBUG] QUERY OK db=90.6ms idle=135.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T07:18:03Z", ~N[2026-08-21 07:18:04], ~N[2026-08-21 07:18:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:18:04.242] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77028, oid: "organization_id", upload_time: "2026-08-21T07:18:03Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:04], updated_at: ~N[2026-08-21 07:18:04]} [2026-08-21 07:18:04.242] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:18:03Z", "value" => "online"} [2026-08-21 07:18:04.327] [DEBUG] QUERY OK db=84.8ms idle=93.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T07:18:03Z", "online", "status", 77028, ~N[2026-08-21 07:18:04], ~N[2026-08-21 07:18:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:04.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781646, itemkey: "status", value: "online", timestamp: "2026-08-21T07:18:03Z", message: "Terminal status update", status_log_id: 77028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:04], updated_at: ~N[2026-08-21 07:18:04]}} [2026-08-21 07:18:04.328] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 07:18:04.344] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:18:03Z", "value" => "1"} [2026-08-21 07:18:04.377] [DEBUG] QUERY OK db=32.2ms idle=102.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T07:18:03Z", "1", "battery", 77028, ~N[2026-08-21 07:18:04], ~N[2026-08-21 07:18:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:04.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781648, itemkey: "battery", value: "1", timestamp: "2026-08-21T07:18:03Z", message: "Battery level", status_log_id: 77028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:04], updated_at: ~N[2026-08-21 07:18:04]}} [2026-08-21 07:18:04.379] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:18:03Z", "value" => "online"} [2026-08-21 07:18:04.435] [DEBUG] QUERY OK db=55.9ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T07:18:03Z", "online", "network", 77028, ~N[2026-08-21 07:18:04], ~N[2026-08-21 07:18:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:04.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781649, itemkey: "network", value: "online", timestamp: "2026-08-21T07:18:03Z", message: "Network connectivity", status_log_id: 77028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:04], updated_at: ~N[2026-08-21 07:18:04]}} [2026-08-21 07:18:04.435] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 07:18:04.436] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:18:03Z", "value" => "0"} [2026-08-21 07:18:04.495] [DEBUG] QUERY OK db=47.6ms queue=11.6ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T07:18:03Z", "0", "cpu", 77028, ~N[2026-08-21 07:18:04], ~N[2026-08-21 07:18:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:04.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781651, itemkey: "cpu", value: "0", timestamp: "2026-08-21T07:18:03Z", message: "CPU usage percentage", status_log_id: 77028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:04], updated_at: ~N[2026-08-21 07:18:04]}} [2026-08-21 07:18:04.496] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:18:03Z", "value" => "1.0.0"} [2026-08-21 07:18:04.543] [DEBUG] QUERY OK db=47.3ms idle=60.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T07:18:03Z", "1.0.0", "parameter_config", 77028, ~N[2026-08-21 07:18:04], ~N[2026-08-21 07:18:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:04.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781653, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T07:18:03Z", message: "Current parameters version", status_log_id: 77028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:04], updated_at: ~N[2026-08-21 07:18:04]}} [2026-08-21 07:18:04.546] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:18:03Z", "value" => "1.0.1"} [2026-08-21 07:18:04.609] [DEBUG] QUERY OK db=54.6ms idle=59.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T07:18:03Z", "1.0.1", "emv_config", 77028, ~N[2026-08-21 07:18:04], ~N[2026-08-21 07:18:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:04.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781655, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T07:18:03Z", message: "Current EMV config version", status_log_id: 77028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:04], updated_at: ~N[2026-08-21 07:18:04]}} [2026-08-21 07:18:04.610] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:18:03Z", "value" => ""} [2026-08-21 07:18:04.686] [DEBUG] QUERY OK db=58.8ms queue=5.3ms idle=78.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T07:18:03Z", "keys_config", 77028, ~N[2026-08-21 07:18:04], ~N[2026-08-21 07:18:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:04.686] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781657, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T07:18:03Z", message: "Current keys config version", status_log_id: 77028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:04], updated_at: ~N[2026-08-21 07:18:04]}} [2026-08-21 07:18:04.687] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:18:03Z", "value" => "3.8.7.3"} [2026-08-21 07:18:04.729] [DEBUG] QUERY OK db=40.4ms queue=0.1ms idle=79.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T07:18:03Z", "3.8.7.3", "application", 77028, ~N[2026-08-21 07:18:04], ~N[2026-08-21 07:18:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:04.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781659, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T07:18:03Z", message: "Current application version", status_log_id: 77028, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:04], updated_at: ~N[2026-08-21 07:18:04]}} [2026-08-21 07:18:04.733] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:18:03Z"} [2026-08-21 07:18:04.733] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:18:03Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 15, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:18:11.613] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:18:11.613] [INFO ] Incoming JSON payload: {"oid":"01f5f6b1-2847-44c1-9761-4ee1b277ec9a","sn":"98251226730001","uploadTime":"2026-08-21T07:18:11Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"ram_free_mb","value":"891","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"data_usage_mb","value":"25","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:18:11Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:18:11.620] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "01f5f6b1-2847-44c1-9761-4ee1b277ec9a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:18:11Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:18:11Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:18:11Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:18:11Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:18:11Z", "value" => "891"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:18:11Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:18:11Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:18:11Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:18:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:18:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:18:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:18:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:18:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:18:11Z", "value" => "25"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:18:11Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:18:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:18:11Z", "vendor" => "morefun"} [2026-08-21 07:18:11.623] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:18:11.626] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:18:11.626] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:18:11.633] [DEBUG] QUERY OK source="parameter_templates" db=6.4ms idle=770.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-08-21 07:18:11.635] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=1.3ms idle=100.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-08-21 07:18:11.635] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:18:11.640] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:18:11.718] [DEBUG] QUERY OK source="tms_terminals" db=36.4ms queue=41.1ms idle=4.9ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 07:18:11], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:18:11.718] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:18:11.719] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:18:11.719] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:18:11.719] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:18:11.719] [INFO ] Event published: terminal_updated [2026-08-21 07:18:11.721] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.2ms idle=79.6ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:18:11], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:18:11.722] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.1ms idle=3.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:18:11.724] [DEBUG] QUERY OK source="terminal_group_rules" db=1.4ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:18:11.724] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:18:11.828] [DEBUG] QUERY OK source="tms_terminals" db=65.7ms queue=41.4ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 07:18:11], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:18:11.828] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:18:11.829] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=104.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-08-21 07:18:11.898] [DEBUG] QUERY OK source="tms_terminals" db=64.5ms queue=1.6ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:18:11], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:18:11.961] [DEBUG] QUERY OK db=60.0ms queue=0.1ms idle=41.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "01f5f6b1-2847-44c1-9761-4ee1b277ec9a", "2026-08-21T07:18:11Z", ~N[2026-08-21 07:18:11], ~N[2026-08-21 07:18:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:18:11.961] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77031, oid: "01f5f6b1-2847-44c1-9761-4ee1b277ec9a", upload_time: "2026-08-21T07:18:11Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:11], updated_at: ~N[2026-08-21 07:18:11]} [2026-08-21 07:18:11.961] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:18:11Z", "value" => "morefun"} [2026-08-21 07:18:12.010] [DEBUG] QUERY OK db=49.2ms idle=63.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "morefun", "vendor", 77031, ~N[2026-08-21 07:18:11], ~N[2026-08-21 07:18:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.011] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781662, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:11], updated_at: ~N[2026-08-21 07:18:11]}} [2026-08-21 07:18:12.011] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:18:11Z", "value" => "kiosk_launcher"} [2026-08-21 07:18:12.074] [DEBUG] QUERY OK db=60.5ms queue=0.3ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "kiosk_launcher", "model", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.075] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781664, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:12.077] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:18:11Z", "value" => "1.0"} [2026-08-21 07:18:12.149] [DEBUG] QUERY OK db=71.5ms queue=0.1ms idle=66.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "1.0", "app_version", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781666, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:12.149] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:18:11Z", "value" => "13"} [2026-08-21 07:18:12.223] [DEBUG] QUERY OK db=72.8ms queue=0.1ms idle=75.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "13", "android_version", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781668, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:12.223] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:18:11Z", "value" => "891"} [2026-08-21 07:18:12.278] [DEBUG] QUERY OK db=53.9ms idle=75.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "891", "ram_free_mb", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781670, itemkey: "ram_free_mb", value: "891", timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:12.279] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:18:11Z", "value" => "WIFI"} [2026-08-21 07:18:12.334] [DEBUG] QUERY OK db=54.4ms idle=56.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "WIFI", "network_type", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781672, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:12.334] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:18:11Z", "value" => "true"} [2026-08-21 07:18:12.396] [DEBUG] QUERY OK db=61.7ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "true", "kiosk_active", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781674, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:12.398] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:18:11Z", "value" => ""} [2026-08-21 07:18:12.447] [DEBUG] QUERY OK db=48.6ms idle=64.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:18:11Z", "sim_operator", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781676, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:12.448] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:18:11Z", "value" => "UNKNOWN"} [2026-08-21 07:18:12.496] [DEBUG] QUERY OK db=47.2ms queue=0.9ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "UNKNOWN", "sim_number", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781678, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:12.497] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:18:11Z", "value" => "UNKNOWN"} [2026-08-21 07:18:12.550] [DEBUG] QUERY OK db=51.9ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "UNKNOWN", "sim_iccid", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781679, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:12.550] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:18:11Z", "value" => "UNKNOWN"} [2026-08-21 07:18:12.624] [DEBUG] QUERY OK db=71.5ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "UNKNOWN", "sim_imsi", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781681, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:12.625] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:18:11Z", "value" => "UNKNOWN"} [2026-08-21 07:18:12.691] [DEBUG] QUERY OK db=58.5ms queue=2.6ms idle=80.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "UNKNOWN", "sim_iccid2", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781683, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:12.693] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:18:11Z", "value" => "UNKNOWN"} [2026-08-21 07:18:12.734] [DEBUG] QUERY OK db=40.6ms idle=69.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "UNKNOWN", "sim_imsi2", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781685, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:12.735] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:18:11Z", "value" => "25"} [2026-08-21 07:18:12.815] [DEBUG] QUERY OK db=79.1ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "25", "data_usage_mb", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781687, itemkey: "data_usage_mb", value: "25", timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:12.816] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:18:11Z", "value" => "0"} [2026-08-21 07:18:12.876] [DEBUG] QUERY OK db=60.1ms queue=0.1ms idle=81.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "0", "mobile_data_mb", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781689, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:12.877] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:18:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:18:12.964] [DEBUG] QUERY OK db=84.8ms idle=6.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:11Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77031, ~N[2026-08-21 07:18:12], ~N[2026-08-21 07:18:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:12.968] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781691, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:18:11Z", message: nil, status_log_id: 77031, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:12], updated_at: ~N[2026-08-21 07:18:12]}} [2026-08-21 07:18:33.379] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 41m, MIS in 0h 41m [2026-08-21 07:18:33.459] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 07:18:33.490] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 07:18:35.814] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 07:18:35.815] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 07:18:35.818] [INFO ] Building initial filter cache... [2026-08-21 07:18:35.858] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms queue=1.0ms idle=890.5ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 07:18:35.885] [DEBUG] QUERY OK source="filter_usage" db=0.5ms queue=5.8ms idle=567.6ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 07:18:35.885] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 07:18:36.103] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:18:36.154] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-08-21 07:18:36.176] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-08-21 07:18:41.743] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:18:41.743] [INFO ] Incoming JSON payload: {"oid":"42229340-b305-4034-a718-345dd48b8552","sn":"98251226730001","uploadTime":"2026-08-21T07:18:41Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"ram_free_mb","value":"888","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:18:41Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:18:41.762] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "42229340-b305-4034-a718-345dd48b8552", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:18:41Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:18:41Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:18:41Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:18:41Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:18:41Z", "value" => "888"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:18:41Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:18:41Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:18:41Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:18:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:18:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:18:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:18:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:18:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:18:41Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:18:41Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:18:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:18:41Z", "vendor" => "morefun"} [2026-08-21 07:18:41.762] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:18:41.796] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:18:41.796] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:18:41.819] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms queue=0.8ms idle=871.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-08-21 07:18:41.831] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms queue=9.2ms idle=450.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-08-21 07:18:41.831] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:18:41.857] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.5ms idle=37.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:18:41.926] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:18:41.936] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:18:41.941] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms queue=0.1ms idle=106.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-08-21 07:18:42.019] [DEBUG] QUERY OK db=35.7ms queue=0.5ms idle=105.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "42229340-b305-4034-a718-345dd48b8552", "2026-08-21T07:18:41Z", ~N[2026-08-21 07:18:41], ~N[2026-08-21 07:18:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:18:42.068] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77033, oid: "42229340-b305-4034-a718-345dd48b8552", upload_time: "2026-08-21T07:18:41Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:41], updated_at: ~N[2026-08-21 07:18:41]} [2026-08-21 07:18:42.068] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:18:41Z", "value" => "morefun"} [2026-08-21 07:18:42.124] [DEBUG] QUERY OK db=48.0ms queue=6.6ms idle=128.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "morefun", "vendor", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:42.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781698, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:42.128] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:18:41Z", "value" => "kiosk_launcher"} [2026-08-21 07:18:42.185] [DEBUG] QUERY OK db=50.8ms queue=5.0ms idle=130.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "kiosk_launcher", "model", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:42.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781700, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:42.191] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:18:41Z", "value" => "1.0"} [2026-08-21 07:18:42.234] [DEBUG] QUERY OK db=37.1ms queue=2.6ms idle=69.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "1.0", "app_version", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:42.234] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781702, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:42.234] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:18:41Z", "value" => "13"} [2026-08-21 07:18:42.341] [DEBUG] QUERY OK db=106.1ms queue=0.1ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "13", "android_version", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:42.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781704, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:42.341] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:18:41Z", "value" => "888"} [2026-08-21 07:18:42.389] [DEBUG] QUERY OK db=47.0ms idle=108.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "888", "ram_free_mb", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:42.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781706, itemkey: "ram_free_mb", value: "888", timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:42.389] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:18:41Z", "value" => "WIFI"} [2026-08-21 07:18:42.434] [DEBUG] QUERY OK db=43.2ms idle=8.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "WIFI", "network_type", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:42.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781708, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:42.436] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:18:41Z", "value" => "true"} [2026-08-21 07:18:42.511] [DEBUG] QUERY OK db=75.3ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "true", "kiosk_active", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:42.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781710, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:42.512] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:18:41Z", "value" => ""} [2026-08-21 07:18:42.593] [DEBUG] QUERY OK db=72.8ms queue=7.8ms idle=79.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:18:41Z", "sim_operator", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:42.593] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781713, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:42.593] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:18:41Z", "value" => "UNKNOWN"} [2026-08-21 07:18:42.638] [DEBUG] QUERY OK db=44.8ms idle=81.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "UNKNOWN", "sim_number", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:42.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781714, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:42.638] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:18:41Z", "value" => "UNKNOWN"} [2026-08-21 07:18:42.701] [DEBUG] QUERY OK db=59.6ms queue=2.4ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "UNKNOWN", "sim_iccid", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:42.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781716, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:42.701] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:18:41Z", "value" => "UNKNOWN"} [2026-08-21 07:18:42.751] [DEBUG] QUERY OK db=47.0ms queue=1.4ms idle=63.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "UNKNOWN", "sim_imsi", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:42.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781718, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:42.752] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:18:41Z", "value" => "UNKNOWN"} [2026-08-21 07:18:42.801] [DEBUG] QUERY OK db=48.1ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "UNKNOWN", "sim_iccid2", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:42.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781720, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:42.803] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:18:41Z", "value" => "UNKNOWN"} [2026-08-21 07:18:42.871] [DEBUG] QUERY OK db=68.1ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "UNKNOWN", "sim_imsi2", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:42.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781722, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:42.871] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:18:41Z", "value" => "26"} [2026-08-21 07:18:42.904] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 43µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "LWxaBAwqITpMGSwCQlwTNBVlFAVJVBMrC5bFxkxP6rZaw-aed1rWqgiO", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 07:18:42.931] [DEBUG] QUERY OK db=59.0ms idle=71.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "26", "data_usage_mb", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:42.933] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781723, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:42.933] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:18:41Z", "value" => "0"} [2026-08-21 07:18:43.096] [DEBUG] QUERY OK db=161.9ms idle=62.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "0", "mobile_data_mb", 77033, ~N[2026-08-21 07:18:42], ~N[2026-08-21 07:18:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:43.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781724, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:42], updated_at: ~N[2026-08-21 07:18:42]}} [2026-08-21 07:18:43.100] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:18:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:18:43.156] [DEBUG] QUERY OK db=53.1ms queue=0.2ms idle=169.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:18:41Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77033, ~N[2026-08-21 07:18:43], ~N[2026-08-21 07:18:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:18:43.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781725, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:18:41Z", message: nil, status_log_id: 77033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:18:43], updated_at: ~N[2026-08-21 07:18:43]}} [2026-08-21 07:18:43.492] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 33µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "LWxaBAwqITpMGSwCQlwTNBVlFAVJVBMrC5bFxkxP6rZaw-aed1rWqgiO", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 07:18:45.205] [INFO ] GET /admin/settlements/summary [2026-08-21 07:18:45.553] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 07:18:45.752] [DEBUG] QUERY OK source="users_tokens" db=0.6ms queue=2.5ms idle=21.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)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:18:45.675890Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 07:18:45.922] [DEBUG] QUERY OK source="core_transactions" db=13.1ms queue=0.5ms idle=948.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:18:45.933] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms queue=2.9ms idle=438.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:18:45.949] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=0.4ms idle=33.2ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:18:45.964] [DEBUG] QUERY OK source="tid_masters" db=1.1ms queue=0.7ms idle=29.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:18:46.425] [INFO ] Sent 200 in 1219ms [2026-08-21 07:18:46.530] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "nY8BtAYjzkvc5qrQqTfR83zd", "live_socket_id" => "users_sessions:_gyWJnb72cBNLoly6C0mOch11oXZNsn0EVBfto7MVeo=", "user_token" => <<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>} [2026-08-21 07:18:46.546] [DEBUG] QUERY OK source="users_tokens" db=12.9ms queue=2.7ms idle=810.7ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:18:46.530932Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 07:18:46.554] [DEBUG] QUERY OK source="core_transactions" db=7.5ms idle=582.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:18:46.572] [DEBUG] QUERY OK source="merchant_adjustments" db=16.8ms idle=59.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:18:46.585] [DEBUG] QUERY OK source="core_transactions" db=10.3ms idle=19.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:18:46.589] [DEBUG] QUERY OK source="tid_masters" db=2.0ms queue=0.5ms idle=14.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:18:46.589] [DEBUG] Replied in 58ms [2026-08-21 07:18:52.847] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "BwlhGhctPyJIXAQTYz8iaBo4Xg1wcAwViPYXclfH27rpVNP9kl8_HCvq", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 07:18:53.063] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "nY8BtAYjzkvc5qrQqTfR83zd", "live_socket_id" => "users_sessions:_gyWJnb72cBNLoly6C0mOch11oXZNsn0EVBfto7MVeo=", "user_token" => <<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>} [2026-08-21 07:18:53.064] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=1345.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)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:18:53.063269Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 07:18:53.065] [DEBUG] QUERY OK source="core_transactions" db=1.0ms idle=1111.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:18:53.066] [DEBUG] QUERY OK source="merchant_adjustments" db=0.7ms idle=532.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:18:53.068] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=2.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:18:53.070] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.5ms idle=2.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:18:53.070] [DEBUG] Replied in 7ms [2026-08-21 07:18:54.888] [INFO ] GET /admin/settlements/summary [2026-08-21 07:18:54.889] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 07:18:54.894] [DEBUG] QUERY OK source="users_tokens" db=1.8ms idle=1172.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)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:18:54.891121Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 07:18:54.899] [DEBUG] QUERY OK source="core_transactions" db=5.1ms idle=1354.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:18:54.902] [DEBUG] QUERY OK source="merchant_adjustments" db=1.1ms idle=358.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:18:54.908] [DEBUG] QUERY OK source="core_transactions" db=5.4ms idle=4.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:18:54.911] [DEBUG] QUERY OK source="tid_masters" db=1.4ms queue=0.6ms idle=6.7ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:18:54.915] [INFO ] Sent 200 in 26ms [2026-08-21 07:18:56.890] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 27µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Nx5NEiZsbyMZHTsvAhYlEjgOMTltQjc1YGuPR-6IcvML7gWCIZWkUqMQ", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 07:18:57.082] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "nY8BtAYjzkvc5qrQqTfR83zd", "live_socket_id" => "users_sessions:_gyWJnb72cBNLoly6C0mOch11oXZNsn0EVBfto7MVeo=", "user_token" => <<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>} [2026-08-21 07:18:57.083] [DEBUG] QUERY OK source="users_tokens" db=0.5ms idle=363.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:18:57.083119Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 07:18:57.085] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=1131.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:18:57.088] [DEBUG] QUERY OK source="merchant_adjustments" db=3.4ms idle=534.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:18:57.090] [DEBUG] QUERY OK source="core_transactions" db=1.1ms queue=0.1ms idle=4.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:18:57.091] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.5ms idle=2.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:18:57.092] [DEBUG] Replied in 9ms [2026-08-21 07:19:11.824] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:19:11.825] [INFO ] Incoming JSON payload: {"oid":"50e4de0e-0c1b-49c1-91e7-ba7286634270","sn":"98251226730001","uploadTime":"2026-08-21T07:19:11Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"ram_free_mb","value":"887","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:19:11Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:19:11.828] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "50e4de0e-0c1b-49c1-91e7-ba7286634270", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:19:11Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:19:11Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:19:11Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:19:11Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:19:11Z", "value" => "887"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:19:11Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:19:11Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:19:11Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:19:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:19:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:19:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:19:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:19:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:19:11Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:19:11Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:19:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:19:11Z", "vendor" => "morefun"} [2026-08-21 07:19:11.828] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:19:11.828] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:19:11.828] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:19:11.831] [DEBUG] QUERY OK source="parameter_templates" db=2.6ms queue=0.1ms idle=1178.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-08-21 07:19:11.840] [DEBUG] QUERY OK source="parameter_templates" db=8.1ms idle=177.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-08-21 07:19:11.841] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:19:11.844] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=9.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:19:11.844] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:19:11.878] [DEBUG] QUERY OK source="tms_terminals" db=33.0ms queue=0.3ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:19:11], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:19:11.878] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:19:11.881] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=34.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:19:11.914] [DEBUG] QUERY OK source="tms_terminals" db=31.9ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:19:11], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:19:11.947] [DEBUG] QUERY OK db=31.7ms queue=1.2ms idle=32.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "50e4de0e-0c1b-49c1-91e7-ba7286634270", "2026-08-21T07:19:11Z", ~N[2026-08-21 07:19:11], ~N[2026-08-21 07:19:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:19:11.948] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77034, oid: "50e4de0e-0c1b-49c1-91e7-ba7286634270", upload_time: "2026-08-21T07:19:11Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:11], updated_at: ~N[2026-08-21 07:19:11]} [2026-08-21 07:19:11.948] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:19:11Z", "value" => "morefun"} [2026-08-21 07:19:11.996] [DEBUG] QUERY OK db=47.8ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "morefun", "vendor", 77034, ~N[2026-08-21 07:19:11], ~N[2026-08-21 07:19:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:11.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781726, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:11], updated_at: ~N[2026-08-21 07:19:11]}} [2026-08-21 07:19:11.997] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:19:11Z", "value" => "kiosk_launcher"} [2026-08-21 07:19:12.055] [DEBUG] QUERY OK db=58.1ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "kiosk_launcher", "model", 77034, ~N[2026-08-21 07:19:11], ~N[2026-08-21 07:19:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781728, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:11], updated_at: ~N[2026-08-21 07:19:11]}} [2026-08-21 07:19:12.056] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:19:11Z", "value" => "1.0"} [2026-08-21 07:19:12.100] [DEBUG] QUERY OK db=43.4ms queue=0.1ms idle=60.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "1.0", "app_version", 77034, ~N[2026-08-21 07:19:12], ~N[2026-08-21 07:19:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781730, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:12], updated_at: ~N[2026-08-21 07:19:12]}} [2026-08-21 07:19:12.100] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:19:11Z", "value" => "13"} [2026-08-21 07:19:12.156] [DEBUG] QUERY OK db=55.5ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "13", "android_version", 77034, ~N[2026-08-21 07:19:12], ~N[2026-08-21 07:19:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781732, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:12], updated_at: ~N[2026-08-21 07:19:12]}} [2026-08-21 07:19:12.157] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:19:11Z", "value" => "887"} [2026-08-21 07:19:12.211] [DEBUG] QUERY OK db=54.4ms queue=0.1ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "887", "ram_free_mb", 77034, ~N[2026-08-21 07:19:12], ~N[2026-08-21 07:19:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.212] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781734, itemkey: "ram_free_mb", value: "887", timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:12], updated_at: ~N[2026-08-21 07:19:12]}} [2026-08-21 07:19:12.212] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:19:11Z", "value" => "WIFI"} [2026-08-21 07:19:12.260] [DEBUG] QUERY OK db=48.1ms idle=56.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "WIFI", "network_type", 77034, ~N[2026-08-21 07:19:12], ~N[2026-08-21 07:19:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.261] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781736, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:12], updated_at: ~N[2026-08-21 07:19:12]}} [2026-08-21 07:19:12.261] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:19:11Z", "value" => "true"} [2026-08-21 07:19:12.327] [DEBUG] QUERY OK db=66.1ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "true", "kiosk_active", 77034, ~N[2026-08-21 07:19:12], ~N[2026-08-21 07:19:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781738, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:12], updated_at: ~N[2026-08-21 07:19:12]}} [2026-08-21 07:19:12.328] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:19:11Z", "value" => ""} [2026-08-21 07:19:12.379] [DEBUG] QUERY OK db=49.5ms queue=1.1ms idle=68.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:19:11Z", "sim_operator", 77034, ~N[2026-08-21 07:19:12], ~N[2026-08-21 07:19:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781740, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:12], updated_at: ~N[2026-08-21 07:19:12]}} [2026-08-21 07:19:12.379] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:19:11Z", "value" => "UNKNOWN"} [2026-08-21 07:19:12.434] [DEBUG] QUERY OK db=53.9ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "UNKNOWN", "sim_number", 77034, ~N[2026-08-21 07:19:12], ~N[2026-08-21 07:19:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781742, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:12], updated_at: ~N[2026-08-21 07:19:12]}} [2026-08-21 07:19:12.434] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:19:11Z", "value" => "UNKNOWN"} [2026-08-21 07:19:12.509] [DEBUG] QUERY OK db=73.3ms idle=56.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "UNKNOWN", "sim_iccid", 77034, ~N[2026-08-21 07:19:12], ~N[2026-08-21 07:19:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.509] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781744, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:12], updated_at: ~N[2026-08-21 07:19:12]}} [2026-08-21 07:19:12.509] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:19:11Z", "value" => "UNKNOWN"} [2026-08-21 07:19:12.574] [DEBUG] QUERY OK db=64.4ms idle=75.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "UNKNOWN", "sim_imsi", 77034, ~N[2026-08-21 07:19:12], ~N[2026-08-21 07:19:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781745, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:12], updated_at: ~N[2026-08-21 07:19:12]}} [2026-08-21 07:19:12.575] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:19:11Z", "value" => "UNKNOWN"} [2026-08-21 07:19:12.635] [DEBUG] QUERY OK db=60.2ms idle=66.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "UNKNOWN", "sim_iccid2", 77034, ~N[2026-08-21 07:19:12], ~N[2026-08-21 07:19:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781747, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:12], updated_at: ~N[2026-08-21 07:19:12]}} [2026-08-21 07:19:12.636] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:19:11Z", "value" => "UNKNOWN"} [2026-08-21 07:19:12.732] [DEBUG] QUERY OK db=95.2ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "UNKNOWN", "sim_imsi2", 77034, ~N[2026-08-21 07:19:12], ~N[2026-08-21 07:19:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781749, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:12], updated_at: ~N[2026-08-21 07:19:12]}} [2026-08-21 07:19:12.732] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:19:11Z", "value" => "26"} [2026-08-21 07:19:12.802] [DEBUG] QUERY OK db=69.0ms idle=72.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "26", "data_usage_mb", 77034, ~N[2026-08-21 07:19:12], ~N[2026-08-21 07:19:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781751, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:12], updated_at: ~N[2026-08-21 07:19:12]}} [2026-08-21 07:19:12.802] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:19:11Z", "value" => "0"} [2026-08-21 07:19:12.860] [DEBUG] QUERY OK db=57.3ms queue=0.2ms idle=71.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "0", "mobile_data_mb", 77034, ~N[2026-08-21 07:19:12], ~N[2026-08-21 07:19:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.862] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781753, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:12], updated_at: ~N[2026-08-21 07:19:12]}} [2026-08-21 07:19:12.863] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:19:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:19:12.934] [DEBUG] QUERY OK db=63.2ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:11Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77034, ~N[2026-08-21 07:19:12], ~N[2026-08-21 07:19:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:12.937] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781755, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:19:11Z", message: nil, status_log_id: 77034, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:12], updated_at: ~N[2026-08-21 07:19:12]}} [2026-08-21 07:19:30.313] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD"]} [2026-08-21 07:19:30.315] [DEBUG] QUERY OK source="core_transactions" db=1.5ms queue=0.6ms idle=591.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:19:30.316] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=48.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:19:30.358] [DEBUG] QUERY OK source="core_transactions" db=40.5ms idle=1.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:19:30.359] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.5ms idle=42.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:19:30.360] [DEBUG] Replied in 47ms [2026-08-21 07:19:31.322] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["VISA"]} [2026-08-21 07:19:31.324] [DEBUG] QUERY OK source="core_transactions" db=0.6ms queue=0.9ms idle=962.7ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "VISA"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:19:31.325] [DEBUG] QUERY OK source="merchant_adjustments" db=1.1ms idle=600.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:19:31.365] [DEBUG] QUERY OK source="core_transactions" db=39.1ms idle=1.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:19:31.367] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=0.5ms idle=39.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:19:31.367] [DEBUG] Replied in 45ms [2026-08-21 07:19:32.389] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["AMEX"]} [2026-08-21 07:19:32.391] [DEBUG] QUERY OK source="core_transactions" db=1.3ms queue=0.4ms idle=1022.4ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "AMEX"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:19:32.392] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=663.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:19:32.432] [DEBUG] QUERY OK source="core_transactions" db=39.5ms idle=1.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:19:32.433] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.5ms idle=0.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:19:32.433] [DEBUG] Replied in 44ms [2026-08-21 07:19:33.856] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["UNIONPAY"]} [2026-08-21 07:19:33.862] [DEBUG] QUERY OK source="core_transactions" db=2.8ms queue=2.5ms idle=1126.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "UNIONPAY"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:19:33.863] [DEBUG] QUERY OK source="merchant_adjustments" db=0.7ms queue=0.1ms idle=128.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:19:33.903] [DEBUG] QUERY OK source="core_transactions" db=38.4ms queue=0.3ms idle=2.4ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:19:33.905] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.8ms idle=40.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:19:33.905] [DEBUG] Replied in 49ms [2026-08-21 07:19:41.231] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["DINERS"]} [2026-08-21 07:19:41.234] [DEBUG] QUERY OK source="core_transactions" db=1.3ms queue=0.5ms idle=479.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "DINERS"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:19:41.235] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms idle=282.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:19:41.275] [DEBUG] QUERY OK source="core_transactions" db=39.4ms idle=1.5ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:19:41.277] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.9ms idle=40.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:19:41.277] [DEBUG] Replied in 45ms [2026-08-21 07:19:41.930] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:19:41.930] [INFO ] Incoming JSON payload: {"oid":"3d5c2c48-05dd-4ed3-abb2-5a2ef7755903","sn":"98251226730001","uploadTime":"2026-08-21T07:19:41Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"ram_free_mb","value":"885","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:19:41Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:19:41.931] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3d5c2c48-05dd-4ed3-abb2-5a2ef7755903", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:19:41Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:19:41Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:19:41Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:19:41Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:19:41Z", "value" => "885"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:19:41Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:19:41Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:19:41Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:19:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:19:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:19:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:19:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:19:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:19:41Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:19:41Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:19:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:19:41Z", "vendor" => "morefun"} [2026-08-21 07:19:41.931] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:19:41.931] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:19:41.932] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:19:41.938] [DEBUG] QUERY OK source="parameter_templates" db=5.9ms idle=655.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-08-21 07:19:41.941] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=183.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-08-21 07:19:41.941] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:19:41.949] [DEBUG] QUERY OK source="tms_terminals" db=7.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:19:41.949] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:19:41.982] [DEBUG] QUERY OK source="tms_terminals" db=32.7ms idle=8.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:19:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:19:41.982] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:19:41.986] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms idle=33.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:19:42.020] [DEBUG] QUERY OK source="tms_terminals" db=31.6ms idle=6.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:19:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:19:42.050] [DEBUG] QUERY OK db=29.7ms queue=0.1ms idle=34.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "3d5c2c48-05dd-4ed3-abb2-5a2ef7755903", "2026-08-21T07:19:41Z", ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:19:42.051] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77036, oid: "3d5c2c48-05dd-4ed3-abb2-5a2ef7755903", upload_time: "2026-08-21T07:19:41Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]} [2026-08-21 07:19:42.051] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:19:41Z", "value" => "morefun"} [2026-08-21 07:19:42.082] [DEBUG] QUERY OK db=30.6ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "morefun", "vendor", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781758, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.082] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:19:41Z", "value" => "kiosk_launcher"} [2026-08-21 07:19:42.149] [DEBUG] QUERY OK db=66.4ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "kiosk_launcher", "model", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.150] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781760, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.150] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:19:41Z", "value" => "1.0"} [2026-08-21 07:19:42.209] [DEBUG] QUERY OK db=57.8ms idle=69.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "1.0", "app_version", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.209] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781762, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.210] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:19:41Z", "value" => "13"} [2026-08-21 07:19:42.244] [DEBUG] QUERY OK db=34.3ms idle=60.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "13", "android_version", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781763, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.251] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:19:41Z", "value" => "885"} [2026-08-21 07:19:42.308] [DEBUG] QUERY OK db=57.0ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "885", "ram_free_mb", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.308] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781765, itemkey: "ram_free_mb", value: "885", timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.308] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:19:41Z", "value" => "WIFI"} [2026-08-21 07:19:42.351] [DEBUG] QUERY OK db=41.9ms idle=64.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "WIFI", "network_type", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.351] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781767, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.351] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:19:41Z", "value" => "true"} [2026-08-21 07:19:42.414] [DEBUG] QUERY OK db=62.6ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "true", "kiosk_active", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781769, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.415] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:19:41Z", "value" => ""} [2026-08-21 07:19:42.496] [DEBUG] QUERY OK db=81.1ms queue=0.1ms idle=64.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:19:41Z", "sim_operator", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781771, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.500] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:19:41Z", "value" => "UNKNOWN"} [2026-08-21 07:19:42.560] [DEBUG] QUERY OK db=57.6ms idle=88.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "UNKNOWN", "sim_number", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781773, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.561] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:19:41Z", "value" => "UNKNOWN"} [2026-08-21 07:19:42.602] [DEBUG] QUERY OK db=40.4ms idle=65.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "UNKNOWN", "sim_iccid", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.603] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781775, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.603] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:19:41Z", "value" => "UNKNOWN"} [2026-08-21 07:19:42.650] [DEBUG] QUERY OK db=46.1ms queue=0.9ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "UNKNOWN", "sim_imsi", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781777, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.650] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:19:41Z", "value" => "UNKNOWN"} [2026-08-21 07:19:42.692] [DEBUG] QUERY OK db=40.8ms idle=48.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "UNKNOWN", "sim_iccid2", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781779, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.692] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:19:41Z", "value" => "UNKNOWN"} [2026-08-21 07:19:42.760] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD"]} [2026-08-21 07:19:42.769] [DEBUG] QUERY OK source="core_transactions" db=3.1ms queue=5.1ms idle=0.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:19:42.770] [DEBUG] QUERY OK db=77.4ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "UNKNOWN", "sim_imsi2", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781781, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.773] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:19:41Z", "value" => "26"} [2026-08-21 07:19:42.810] [DEBUG] QUERY OK source="merchant_adjustments" db=38.3ms queue=0.9ms idle=1.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:19:42.810] [DEBUG] QUERY OK db=35.8ms queue=0.1ms idle=4.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "26", "data_usage_mb", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.810] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781783, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.810] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:19:41Z", "value" => "0"} [2026-08-21 07:19:42.811] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.7ms idle=0.4ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:19:42.821] [DEBUG] QUERY OK source="tid_masters" db=3.8ms queue=5.2ms idle=0.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:19:42.821] [DEBUG] Replied in 61ms [2026-08-21 07:19:42.888] [DEBUG] QUERY OK db=77.3ms idle=0.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "0", "mobile_data_mb", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781785, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:42.889] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:19:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:19:42.937] [DEBUG] QUERY OK db=47.4ms idle=68.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:19:41Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77036, ~N[2026-08-21 07:19:42], ~N[2026-08-21 07:19:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:19:42.942] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781787, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:19:41Z", message: nil, status_log_id: 77036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:19:42], updated_at: ~N[2026-08-21 07:19:42]}} [2026-08-21 07:19:43.671] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["VISA"]} [2026-08-21 07:19:43.672] [DEBUG] QUERY OK source="core_transactions" db=0.6ms queue=0.5ms idle=783.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "VISA"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:19:43.676] [DEBUG] QUERY OK source="merchant_adjustments" db=1.6ms idle=737.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:19:43.715] [DEBUG] QUERY OK source="core_transactions" db=38.6ms idle=3.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:19:43.718] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=1.6ms idle=39.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:19:43.718] [DEBUG] Replied in 47ms [2026-08-21 07:19:46.791] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD"]} [2026-08-21 07:19:46.800] [DEBUG] QUERY OK source="core_transactions" db=3.4ms decode=0.2ms queue=0.6ms idle=1014.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:19:46.802] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=0.5ms idle=15.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:19:46.841] [DEBUG] QUERY OK source="core_transactions" db=38.3ms queue=0.1ms idle=2.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:19:46.848] [DEBUG] QUERY OK source="tid_masters" db=1.8ms queue=4.1ms idle=39.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:19:46.849] [DEBUG] Replied in 58ms [2026-08-21 07:19:49.053] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["VISA"]} [2026-08-21 07:19:49.059] [DEBUG] QUERY OK source="core_transactions" db=2.1ms queue=3.5ms idle=1096.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "VISA"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:19:49.063] [DEBUG] QUERY OK source="merchant_adjustments" db=3.7ms idle=263.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:19:49.101] [DEBUG] QUERY OK source="core_transactions" db=36.9ms idle=5.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:19:49.104] [DEBUG] QUERY OK source="tid_masters" db=1.0ms queue=1.3ms idle=38.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:19:49.104] [DEBUG] Replied in 51ms [2026-08-21 07:19:51.583] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD"]} [2026-08-21 07:19:51.586] [DEBUG] QUERY OK source="core_transactions" db=2.4ms queue=0.6ms idle=779.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:19:51.587] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms idle=628.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:19:51.628] [DEBUG] QUERY OK source="core_transactions" db=40.7ms idle=1.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:19:51.633] [DEBUG] QUERY OK source="tid_masters" db=1.9ms queue=1.8ms idle=41.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:19:51.633] [DEBUG] Replied in 50ms [2026-08-21 07:20:12.039] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:20:12.039] [INFO ] Incoming JSON payload: {"oid":"065ea101-7e8a-44c0-936b-8c58affff9f2","sn":"98251226730001","uploadTime":"2026-08-21T07:20:11Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"ram_free_mb","value":"891","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:20:11Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:20:12.045] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "065ea101-7e8a-44c0-936b-8c58affff9f2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:20:11Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:20:11Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:20:11Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:20:11Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:20:11Z", "value" => "891"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:20:11Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:20:11Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:20:11Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:20:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:20:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:20:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:20:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:20:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:20:11Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:20:11Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:20:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:20:11Z", "vendor" => "morefun"} [2026-08-21 07:20:12.045] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:20:12.045] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:20:12.047] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:20:12.048] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=124.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-08-21 07:20:12.049] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=87.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-08-21 07:20:12.049] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:20:12.051] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:20:12.051] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:20:12.322] [DEBUG] QUERY OK source="tms_terminals" db=269.1ms queue=0.7ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:20:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:20:12.323] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:20:12.324] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.2ms idle=272.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:20:12.372] [DEBUG] QUERY OK source="tms_terminals" db=47.6ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:20:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:20:12.410] [DEBUG] QUERY OK db=36.7ms idle=48.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "065ea101-7e8a-44c0-936b-8c58affff9f2", "2026-08-21T07:20:11Z", ~N[2026-08-21 07:20:12], ~N[2026-08-21 07:20:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:20:12.410] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77038, oid: "065ea101-7e8a-44c0-936b-8c58affff9f2", upload_time: "2026-08-21T07:20:11Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:12], updated_at: ~N[2026-08-21 07:20:12]} [2026-08-21 07:20:12.410] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:20:11Z", "value" => "morefun"} [2026-08-21 07:20:12.488] [DEBUG] QUERY OK db=77.6ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "morefun", "vendor", 77038, ~N[2026-08-21 07:20:12], ~N[2026-08-21 07:20:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:12.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781790, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:12], updated_at: ~N[2026-08-21 07:20:12]}} [2026-08-21 07:20:12.489] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:20:11Z", "value" => "kiosk_launcher"} [2026-08-21 07:20:12.543] [DEBUG] QUERY OK db=53.6ms idle=79.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "kiosk_launcher", "model", 77038, ~N[2026-08-21 07:20:12], ~N[2026-08-21 07:20:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:12.543] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781792, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:12], updated_at: ~N[2026-08-21 07:20:12]}} [2026-08-21 07:20:12.543] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:20:11Z", "value" => "1.0"} [2026-08-21 07:20:12.615] [DEBUG] QUERY OK db=70.9ms idle=55.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "1.0", "app_version", 77038, ~N[2026-08-21 07:20:12], ~N[2026-08-21 07:20:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:12.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781794, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:12], updated_at: ~N[2026-08-21 07:20:12]}} [2026-08-21 07:20:12.615] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:20:11Z", "value" => "13"} [2026-08-21 07:20:12.661] [DEBUG] QUERY OK db=45.6ms idle=73.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "13", "android_version", 77038, ~N[2026-08-21 07:20:12], ~N[2026-08-21 07:20:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:12.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781796, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:12], updated_at: ~N[2026-08-21 07:20:12]}} [2026-08-21 07:20:12.662] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:20:11Z", "value" => "891"} [2026-08-21 07:20:12.750] [DEBUG] QUERY OK db=87.8ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "891", "ram_free_mb", 77038, ~N[2026-08-21 07:20:12], ~N[2026-08-21 07:20:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:12.750] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781798, itemkey: "ram_free_mb", value: "891", timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:12], updated_at: ~N[2026-08-21 07:20:12]}} [2026-08-21 07:20:12.750] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:20:11Z", "value" => "WIFI"} [2026-08-21 07:20:12.828] [DEBUG] QUERY OK db=76.9ms queue=0.1ms idle=89.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "WIFI", "network_type", 77038, ~N[2026-08-21 07:20:12], ~N[2026-08-21 07:20:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:12.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781800, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:12], updated_at: ~N[2026-08-21 07:20:12]}} [2026-08-21 07:20:12.828] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:20:11Z", "value" => "true"} [2026-08-21 07:20:12.861] [DEBUG] QUERY OK db=32.5ms idle=78.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "true", "kiosk_active", 77038, ~N[2026-08-21 07:20:12], ~N[2026-08-21 07:20:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:12.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781802, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:12], updated_at: ~N[2026-08-21 07:20:12]}} [2026-08-21 07:20:12.862] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:20:11Z", "value" => ""} [2026-08-21 07:20:12.922] [DEBUG] QUERY OK db=60.3ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:20:11Z", "sim_operator", 77038, ~N[2026-08-21 07:20:12], ~N[2026-08-21 07:20:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:12.923] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781804, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:12], updated_at: ~N[2026-08-21 07:20:12]}} [2026-08-21 07:20:12.923] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:20:11Z", "value" => "UNKNOWN"} [2026-08-21 07:20:13.036] [DEBUG] QUERY OK db=112.3ms queue=0.1ms idle=62.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "UNKNOWN", "sim_number", 77038, ~N[2026-08-21 07:20:12], ~N[2026-08-21 07:20:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:13.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781806, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:12], updated_at: ~N[2026-08-21 07:20:12]}} [2026-08-21 07:20:13.036] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:20:11Z", "value" => "UNKNOWN"} [2026-08-21 07:20:13.108] [DEBUG] QUERY OK db=71.2ms queue=0.1ms idle=111.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "UNKNOWN", "sim_iccid", 77038, ~N[2026-08-21 07:20:13], ~N[2026-08-21 07:20:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:13.108] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781808, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:13], updated_at: ~N[2026-08-21 07:20:13]}} [2026-08-21 07:20:13.108] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:20:11Z", "value" => "UNKNOWN"} [2026-08-21 07:20:13.171] [DEBUG] QUERY OK db=61.1ms queue=0.8ms idle=73.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "UNKNOWN", "sim_imsi", 77038, ~N[2026-08-21 07:20:13], ~N[2026-08-21 07:20:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:13.171] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781810, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:13], updated_at: ~N[2026-08-21 07:20:13]}} [2026-08-21 07:20:13.172] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:20:11Z", "value" => "UNKNOWN"} [2026-08-21 07:20:13.212] [DEBUG] QUERY OK db=40.4ms idle=64.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "UNKNOWN", "sim_iccid2", 77038, ~N[2026-08-21 07:20:13], ~N[2026-08-21 07:20:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:13.213] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781812, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:13], updated_at: ~N[2026-08-21 07:20:13]}} [2026-08-21 07:20:13.213] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:20:11Z", "value" => "UNKNOWN"} [2026-08-21 07:20:13.255] [DEBUG] QUERY OK db=42.1ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "UNKNOWN", "sim_imsi2", 77038, ~N[2026-08-21 07:20:13], ~N[2026-08-21 07:20:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:13.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781814, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:13], updated_at: ~N[2026-08-21 07:20:13]}} [2026-08-21 07:20:13.256] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:20:11Z", "value" => "26"} [2026-08-21 07:20:13.311] [DEBUG] QUERY OK db=54.7ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "26", "data_usage_mb", 77038, ~N[2026-08-21 07:20:13], ~N[2026-08-21 07:20:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:13.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781816, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:13], updated_at: ~N[2026-08-21 07:20:13]}} [2026-08-21 07:20:13.311] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:20:11Z", "value" => "0"} [2026-08-21 07:20:13.370] [DEBUG] QUERY OK db=58.0ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "0", "mobile_data_mb", 77038, ~N[2026-08-21 07:20:13], ~N[2026-08-21 07:20:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:13.370] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781818, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:13], updated_at: ~N[2026-08-21 07:20:13]}} [2026-08-21 07:20:13.371] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:20:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:20:13.418] [DEBUG] QUERY OK db=47.0ms idle=59.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:11Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77038, ~N[2026-08-21 07:20:13], ~N[2026-08-21 07:20:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:13.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781820, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:20:11Z", message: nil, status_log_id: 77038, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:13], updated_at: ~N[2026-08-21 07:20:13]}} [2026-08-21 07:20:42.147] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:20:42.150] [INFO ] Incoming JSON payload: {"oid":"7a6f1563-9174-4aeb-864f-4170a237f8f3","sn":"98251226730001","uploadTime":"2026-08-21T07:20:41Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"ram_free_mb","value":"890","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:20:41Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:20:42.152] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7a6f1563-9174-4aeb-864f-4170a237f8f3", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:20:41Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:20:41Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:20:41Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:20:41Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:20:41Z", "value" => "890"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:20:41Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:20:41Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:20:41Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:20:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:20:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:20:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:20:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:20:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:20:41Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:20:41Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:20:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:20:41Z", "vendor" => "morefun"} [2026-08-21 07:20:42.152] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:20:42.153] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:20:42.153] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:20:42.157] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=182.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-08-21 07:20:42.162] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms queue=0.7ms idle=78.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-08-21 07:20:42.162] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:20:42.172] [DEBUG] QUERY OK source="tms_terminals" db=4.2ms idle=11.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 07:20:42.174] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:20:42.222] [DEBUG] QUERY OK source="tms_terminals" db=47.4ms idle=12.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:20:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:20:42.222] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:20:42.224] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=50.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:20:42.280] [DEBUG] QUERY OK source="tms_terminals" db=55.5ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:20:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:20:42.329] [DEBUG] QUERY OK db=48.0ms idle=56.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "7a6f1563-9174-4aeb-864f-4170a237f8f3", "2026-08-21T07:20:41Z", ~N[2026-08-21 07:20:42], ~N[2026-08-21 07:20:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:20:42.329] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77040, oid: "7a6f1563-9174-4aeb-864f-4170a237f8f3", upload_time: "2026-08-21T07:20:41Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:42], updated_at: ~N[2026-08-21 07:20:42]} [2026-08-21 07:20:42.329] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:20:41Z", "value" => "morefun"} [2026-08-21 07:20:42.361] [DEBUG] QUERY OK db=27.7ms queue=3.8ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "morefun", "vendor", 77040, ~N[2026-08-21 07:20:42], ~N[2026-08-21 07:20:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:42.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781822, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:42], updated_at: ~N[2026-08-21 07:20:42]}} [2026-08-21 07:20:42.362] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:20:41Z", "value" => "kiosk_launcher"} [2026-08-21 07:20:42.415] [DEBUG] QUERY OK db=52.6ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "kiosk_launcher", "model", 77040, ~N[2026-08-21 07:20:42], ~N[2026-08-21 07:20:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:42.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781824, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:42], updated_at: ~N[2026-08-21 07:20:42]}} [2026-08-21 07:20:42.415] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:20:41Z", "value" => "1.0"} [2026-08-21 07:20:42.474] [DEBUG] QUERY OK db=58.5ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "1.0", "app_version", 77040, ~N[2026-08-21 07:20:42], ~N[2026-08-21 07:20:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:42.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781826, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:42], updated_at: ~N[2026-08-21 07:20:42]}} [2026-08-21 07:20:42.475] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:20:41Z", "value" => "13"} [2026-08-21 07:20:42.539] [DEBUG] QUERY OK db=63.2ms queue=0.1ms idle=60.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "13", "android_version", 77040, ~N[2026-08-21 07:20:42], ~N[2026-08-21 07:20:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:42.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781828, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:42], updated_at: ~N[2026-08-21 07:20:42]}} [2026-08-21 07:20:42.540] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:20:41Z", "value" => "890"} [2026-08-21 07:20:42.584] [DEBUG] QUERY OK db=44.1ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "890", "ram_free_mb", 77040, ~N[2026-08-21 07:20:42], ~N[2026-08-21 07:20:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:42.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781830, itemkey: "ram_free_mb", value: "890", timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:42], updated_at: ~N[2026-08-21 07:20:42]}} [2026-08-21 07:20:42.584] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:20:41Z", "value" => "WIFI"} [2026-08-21 07:20:42.634] [DEBUG] QUERY OK db=47.1ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "WIFI", "network_type", 77040, ~N[2026-08-21 07:20:42], ~N[2026-08-21 07:20:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:42.634] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781832, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:42], updated_at: ~N[2026-08-21 07:20:42]}} [2026-08-21 07:20:42.635] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:20:41Z", "value" => "true"} [2026-08-21 07:20:42.715] [DEBUG] QUERY OK db=79.5ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "true", "kiosk_active", 77040, ~N[2026-08-21 07:20:42], ~N[2026-08-21 07:20:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:42.715] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781834, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:42], updated_at: ~N[2026-08-21 07:20:42]}} [2026-08-21 07:20:42.716] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:20:41Z", "value" => ""} [2026-08-21 07:20:42.851] [DEBUG] QUERY OK db=134.5ms idle=82.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:20:41Z", "sim_operator", 77040, ~N[2026-08-21 07:20:42], ~N[2026-08-21 07:20:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:42.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781836, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:42], updated_at: ~N[2026-08-21 07:20:42]}} [2026-08-21 07:20:42.853] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:20:41Z", "value" => "UNKNOWN"} [2026-08-21 07:20:42.907] [DEBUG] QUERY OK db=53.6ms idle=1.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "UNKNOWN", "sim_number", 77040, ~N[2026-08-21 07:20:42], ~N[2026-08-21 07:20:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:42.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781838, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:42], updated_at: ~N[2026-08-21 07:20:42]}} [2026-08-21 07:20:42.908] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:20:41Z", "value" => "UNKNOWN"} [2026-08-21 07:20:42.964] [DEBUG] QUERY OK db=56.3ms idle=1.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "UNKNOWN", "sim_iccid", 77040, ~N[2026-08-21 07:20:42], ~N[2026-08-21 07:20:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:42.965] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781840, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:42], updated_at: ~N[2026-08-21 07:20:42]}} [2026-08-21 07:20:42.965] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:20:41Z", "value" => "UNKNOWN"} [2026-08-21 07:20:43.037] [DEBUG] QUERY OK db=71.3ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "UNKNOWN", "sim_imsi", 77040, ~N[2026-08-21 07:20:42], ~N[2026-08-21 07:20:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:43.037] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781842, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:42], updated_at: ~N[2026-08-21 07:20:42]}} [2026-08-21 07:20:43.037] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:20:41Z", "value" => "UNKNOWN"} [2026-08-21 07:20:43.084] [DEBUG] QUERY OK db=46.2ms idle=72.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "UNKNOWN", "sim_iccid2", 77040, ~N[2026-08-21 07:20:43], ~N[2026-08-21 07:20:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:43.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781844, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:43], updated_at: ~N[2026-08-21 07:20:43]}} [2026-08-21 07:20:43.084] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:20:41Z", "value" => "UNKNOWN"} [2026-08-21 07:20:43.142] [DEBUG] QUERY OK db=56.8ms idle=1.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "UNKNOWN", "sim_imsi2", 77040, ~N[2026-08-21 07:20:43], ~N[2026-08-21 07:20:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:43.143] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781846, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:43], updated_at: ~N[2026-08-21 07:20:43]}} [2026-08-21 07:20:43.143] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:20:41Z", "value" => "26"} [2026-08-21 07:20:43.194] [DEBUG] QUERY OK db=49.8ms idle=59.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "26", "data_usage_mb", 77040, ~N[2026-08-21 07:20:43], ~N[2026-08-21 07:20:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:43.194] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781848, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:43], updated_at: ~N[2026-08-21 07:20:43]}} [2026-08-21 07:20:43.194] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:20:41Z", "value" => "0"} [2026-08-21 07:20:43.248] [DEBUG] QUERY OK db=53.5ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "0", "mobile_data_mb", 77040, ~N[2026-08-21 07:20:43], ~N[2026-08-21 07:20:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:43.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781850, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:43], updated_at: ~N[2026-08-21 07:20:43]}} [2026-08-21 07:20:43.250] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:20:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:20:43.397] [DEBUG] QUERY OK db=146.8ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:20:41Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77040, ~N[2026-08-21 07:20:43], ~N[2026-08-21 07:20:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:43.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781852, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:20:41Z", message: nil, status_log_id: 77040, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:43], updated_at: ~N[2026-08-21 07:20:43]}} [2026-08-21 07:20:47.106] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 07:20:52.863] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:20:52.863] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T07:20:52Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T07:20:52Z","value":"3"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T07:20:52Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T07:20:52Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T07:20:52Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T07:20:52Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T07:20:52Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T07:20:52Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T07:20:52Z","vendor":"MoreFun"} [2026-08-21 07:20:52.863] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:20:52Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:20:52Z", "value" => "3"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:20:52Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:20:52Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:20:52Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:20:52Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:20:52Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:20:52Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:20:52Z", "vendor" => "MoreFun"} [2026-08-21 07:20:52.863] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 07:20:52.864] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:20:52.864] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 07:20:52.867] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms idle=1744.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-08-21 07:20:52.868] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=742.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:20:52.883] [DEBUG] QUERY OK source="parameter_template_values" db=1.8ms queue=0.6ms idle=13.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-08-21 07:20:52.896] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.7ms idle=26.3ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 07:20:52.908] [DEBUG] QUERY OK source="pos_terminal" db=1.1ms queue=2.0ms idle=22.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-08-21 07:20:52.939] [DEBUG] QUERY OK source="pos_merchant" db=1.2ms queue=23.9ms idle=17.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 07:20:52.946] [DEBUG] QUERY OK db=1.3ms queue=0.5ms idle=971.1ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["626165170000000"] [2026-08-21 07:20:52.947] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 07:20:52.955] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms queue=0.8ms idle=45.3ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 07:20:52.965] [DEBUG] QUERY OK source="address" db=0.7ms queue=2.1ms idle=23.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 07:20:52.967] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 07:20:53.027] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 07:20:53.127] [DEBUG] QUERY OK db=86.9ms queue=1.7ms idle=83.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "babbc90bd2e03f5ac6c3559917a3a9fd868735b40e79f3bb44d2484887d97c4b", 5698, 938, ~U[2026-08-21 07:20:53Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 07:20:53], ~N[2026-08-21 07:20:53]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 07:20:53.127] [INFO ] AutoPushService: Created push log 48374 for MF919 params.zip [2026-08-21 07:20:53.131] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 5698, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 07:20:53.131] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:20:53.135] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 07:20:53.142] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=1.3ms idle=13.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 07:20:53.150] [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-08-21 07:20:53.196] [DEBUG] QUERY OK db=44.4ms queue=0.8ms idle=19.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "6370ffefb06e97dcd56aed509202d6ce3d970e8081517c7263161bd8d2cf7b56", 5826, 17947, ~U[2026-08-21 07:20:53Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 07:20:53], ~N[2026-08-21 07:20:53]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 07:20:53.196] [INFO ] AutoPushService: Created push log 48375 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 07:20:53.196] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 5826, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 07:20:53.196] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:20:53.196] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 07:20:53.197] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.1ms idle=54.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-08-21 07:20:53.201] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 07:20:53.202] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 07:20:53.202] [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-08-21 07:20:53.258] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 07:20:53.258] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:20:53.258] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:20:53.259] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=61.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-08-21 07:20:53.259] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:20:53.259] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 07:20:53.260] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=57.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:20:53.261] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:20:53.303] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=41.3ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 07:20:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:20:53.305] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=1.7ms idle=42.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-08-21 07:20:53.306] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.1ms idle=3.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:20:53.307] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms 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-08-21 07:20:53.308] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 07:20:53.340] [DEBUG] QUERY OK source="parameter_push_logs" db=26.3ms queue=0.4ms idle=7.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-08-21 06: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-08-21 07:20:53.341] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 07:20:53.341] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 07:20:53.343] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=34.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 07:20:53.344] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=2.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 07:20:53.344] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:20:53.345] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:20:53.405] [DEBUG] QUERY OK source="tms_terminals" db=18.0ms queue=40.8ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:20:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:20:53.429] [DEBUG] QUERY OK db=23.9ms queue=0.1ms idle=59.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T07:20:52Z", ~N[2026-08-21 07:20:53], ~N[2026-08-21 07:20:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:20:53.429] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77042, oid: "organization_id", upload_time: "2026-08-21T07:20:52Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:53], updated_at: ~N[2026-08-21 07:20:53]} [2026-08-21 07:20:53.429] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:20:52Z", "value" => "online"} [2026-08-21 07:20:53.472] [DEBUG] QUERY OK db=41.3ms queue=0.4ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T07:20:52Z", "online", "status", 77042, ~N[2026-08-21 07:20:53], ~N[2026-08-21 07:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:53.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781854, itemkey: "status", value: "online", timestamp: "2026-08-21T07:20:52Z", message: "Terminal status update", status_log_id: 77042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:53], updated_at: ~N[2026-08-21 07:20:53]}} [2026-08-21 07:20:53.472] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 07:20:53.472] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:20:52Z", "value" => "3"} [2026-08-21 07:20:53.549] [DEBUG] QUERY OK db=73.4ms queue=2.8ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T07:20:52Z", "3", "battery", 77042, ~N[2026-08-21 07:20:53], ~N[2026-08-21 07:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:53.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781856, itemkey: "battery", value: "3", timestamp: "2026-08-21T07:20:52Z", message: "Battery level", status_log_id: 77042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:53], updated_at: ~N[2026-08-21 07:20:53]}} [2026-08-21 07:20:53.549] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:20:52Z", "value" => "online"} [2026-08-21 07:20:53.599] [DEBUG] QUERY OK db=48.8ms idle=78.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T07:20:52Z", "online", "network", 77042, ~N[2026-08-21 07:20:53], ~N[2026-08-21 07:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:53.599] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781858, itemkey: "network", value: "online", timestamp: "2026-08-21T07:20:52Z", message: "Network connectivity", status_log_id: 77042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:53], updated_at: ~N[2026-08-21 07:20:53]}} [2026-08-21 07:20:53.599] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 07:20:53.600] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:20:52Z", "value" => "0"} [2026-08-21 07:20:53.679] [DEBUG] QUERY OK db=79.4ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T07:20:52Z", "0", "cpu", 77042, ~N[2026-08-21 07:20:53], ~N[2026-08-21 07:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:53.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781860, itemkey: "cpu", value: "0", timestamp: "2026-08-21T07:20:52Z", message: "CPU usage percentage", status_log_id: 77042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:53], updated_at: ~N[2026-08-21 07:20:53]}} [2026-08-21 07:20:53.680] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:20:52Z", "value" => "1.0.0"} [2026-08-21 07:20:53.725] [DEBUG] QUERY OK db=44.4ms idle=81.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T07:20:52Z", "1.0.0", "parameter_config", 77042, ~N[2026-08-21 07:20:53], ~N[2026-08-21 07:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:53.728] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781862, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T07:20:52Z", message: "Current parameters version", status_log_id: 77042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:53], updated_at: ~N[2026-08-21 07:20:53]}} [2026-08-21 07:20:53.728] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:20:52Z", "value" => "1.0.1"} [2026-08-21 07:20:53.769] [DEBUG] QUERY OK db=40.5ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T07:20:52Z", "1.0.1", "emv_config", 77042, ~N[2026-08-21 07:20:53], ~N[2026-08-21 07:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:53.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781864, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T07:20:52Z", message: "Current EMV config version", status_log_id: 77042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:53], updated_at: ~N[2026-08-21 07:20:53]}} [2026-08-21 07:20:53.769] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:20:52Z", "value" => ""} [2026-08-21 07:20:53.818] [DEBUG] QUERY OK db=46.4ms queue=1.6ms 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-08-21T07:20:52Z", "keys_config", 77042, ~N[2026-08-21 07:20:53], ~N[2026-08-21 07:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:53.818] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781866, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T07:20:52Z", message: "Current keys config version", status_log_id: 77042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:53], updated_at: ~N[2026-08-21 07:20:53]}} [2026-08-21 07:20:53.818] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:20:52Z", "value" => "3.8.7.3"} [2026-08-21 07:20:53.880] [DEBUG] QUERY OK db=61.1ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T07:20:52Z", "3.8.7.3", "application", 77042, ~N[2026-08-21 07:20:53], ~N[2026-08-21 07:20:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:53.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781868, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T07:20:52Z", message: "Current application version", status_log_id: 77042, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:53], updated_at: ~N[2026-08-21 07:20:53]}} [2026-08-21 07:20:53.894] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:20:53Z"} [2026-08-21 07:20:53.901] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:20:53Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 7, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:20:56.771] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 07:20:56.771] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T11:20:54Z","org.device":[{"itemkey":"battery","value":81,"timestamp":"2026-08-21T11:20:54Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T11:20:54Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T11:20:54Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T11:20:54Z","message":""}]} [2026-08-21 07:20:56.771] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T11:20:54Z", "value" => 81}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T11:20:54Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T11:20:54Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T11:20:54Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T11:20:54Z"} [2026-08-21 07:20:56.771] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:20:56.773] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=1635.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:20:56.775] [INFO ] Terminal updated: 61250415798001 [2026-08-21 07:20:56.876] [DEBUG] QUERY OK source="tms_terminals" db=101.2ms idle=636.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:20:56], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:20:56.879] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=103.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:20:56.929] [DEBUG] QUERY OK source="tms_terminals" db=49.2ms queue=1.1ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:20:56], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:20:56.984] [DEBUG] QUERY OK db=53.6ms queue=0.1ms idle=0.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T11:20:54Z", ~N[2026-08-21 07:20:56], ~N[2026-08-21 07:20:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:20:56.985] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77044, oid: "org-id-placeholder", upload_time: "2026-08-21T11:20:54Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:56], updated_at: ~N[2026-08-21 07:20:56]} [2026-08-21 07:20:56.985] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T11:20:54Z", "value" => 81} [2026-08-21 07:20:57.048] [DEBUG] QUERY OK db=61.7ms queue=0.3ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:20:54Z", "81", "battery", 77044, ~N[2026-08-21 07:20:56], ~N[2026-08-21 07:20:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:57.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781870, itemkey: "battery", value: "81", timestamp: "2026-08-21T11:20:54Z", message: nil, status_log_id: 77044, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:56], updated_at: ~N[2026-08-21 07:20:56]}} [2026-08-21 07:20:57.048] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T11:20:54Z", "value" => 50} [2026-08-21 07:20:57.119] [DEBUG] QUERY OK db=70.1ms idle=64.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T11:20:54Z", "50", "memory", 77044, ~N[2026-08-21 07:20:57], ~N[2026-08-21 07:20:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:57.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781871, itemkey: "memory", value: "50", timestamp: "2026-08-21T11:20:54Z", message: "Normal", status_log_id: 77044, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:57], updated_at: ~N[2026-08-21 07:20:57]}} [2026-08-21 07:20:57.119] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T11:20:54Z", "value" => 50} [2026-08-21 07:20:57.210] [DEBUG] QUERY OK db=90.4ms idle=71.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:20:54Z", "50", "cpu", 77044, ~N[2026-08-21 07:20:57], ~N[2026-08-21 07:20:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:57.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781874, itemkey: "cpu", value: "50", timestamp: "2026-08-21T11:20:54Z", message: nil, status_log_id: 77044, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:57], updated_at: ~N[2026-08-21 07:20:57]}} [2026-08-21 07:20:57.210] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T11:20:54Z", "value" => "online"} [2026-08-21 07:20:57.250] [DEBUG] QUERY OK db=39.2ms idle=69.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:20:54Z", "online", "network", 77044, ~N[2026-08-21 07:20:57], ~N[2026-08-21 07:20:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:20:57.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781876, itemkey: "network", value: "online", timestamp: "2026-08-21T11:20:54Z", message: nil, status_log_id: 77044, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:20:57], updated_at: ~N[2026-08-21 07:20:57]}} [2026-08-21 07:20:57.250] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 07:21:12.500] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:21:12.500] [INFO ] Incoming JSON payload: {"oid":"c6a06eda-7dcd-4c8b-935d-19a12f809634","sn":"98251226730001","uploadTime":"2026-08-21T07:21:11Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"ram_free_mb","value":"892","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:21:11Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:21:12.503] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c6a06eda-7dcd-4c8b-935d-19a12f809634", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:21:11Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:21:11Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:21:11Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:21:11Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:21:11Z", "value" => "892"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:21:11Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:21:11Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:21:11Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:21:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:21:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:21:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:21:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:21:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:21:11Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:21:11Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:21:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:21:11Z", "vendor" => "morefun"} [2026-08-21 07:21:12.503] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:21:12.503] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:21:12.503] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:21:12.505] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=526.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-08-21 07:21:12.507] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=299.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-08-21 07:21:12.507] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:21:12.508] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:21:12.604] [DEBUG] QUERY OK source="tms_terminals" db=52.0ms queue=41.9ms idle=3.6ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 07:21:12], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:21:12.604] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:21:12.604] [INFO ] Event published: terminal_updated [2026-08-21 07:21:12.604] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:21:12.604] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:21:12.604] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:21:12.621] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.7ms queue=0.5ms idle=110.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:21:12], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:21:12.622] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.4ms idle=17.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:21:12.630] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms queue=0.5ms idle=7.4ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:21:12.631] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:21:12.675] [DEBUG] QUERY OK source="tms_terminals" db=12.0ms queue=41.2ms 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-08-21 07:21:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:21:12.675] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:21:12.677] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=44.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:21:12.763] [DEBUG] QUERY OK source="tms_terminals" db=44.2ms queue=40.7ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:21:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:21:12.806] [DEBUG] QUERY OK db=42.7ms idle=85.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c6a06eda-7dcd-4c8b-935d-19a12f809634", "2026-08-21T07:21:11Z", ~N[2026-08-21 07:21:12], ~N[2026-08-21 07:21:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:21:12.806] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77046, oid: "c6a06eda-7dcd-4c8b-935d-19a12f809634", upload_time: "2026-08-21T07:21:11Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:12], updated_at: ~N[2026-08-21 07:21:12]} [2026-08-21 07:21:12.806] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:21:11Z", "value" => "morefun"} [2026-08-21 07:21:12.888] [DEBUG] QUERY OK db=78.1ms queue=3.1ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "morefun", "vendor", 77046, ~N[2026-08-21 07:21:12], ~N[2026-08-21 07:21:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:12.891] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781878, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:12], updated_at: ~N[2026-08-21 07:21:12]}} [2026-08-21 07:21:12.891] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:21:11Z", "value" => "kiosk_launcher"} [2026-08-21 07:21:13.115] [DEBUG] QUERY OK db=223.2ms idle=85.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "kiosk_launcher", "model", 77046, ~N[2026-08-21 07:21:12], ~N[2026-08-21 07:21:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781880, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:12], updated_at: ~N[2026-08-21 07:21:12]}} [2026-08-21 07:21:13.115] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:21:11Z", "value" => "1.0"} [2026-08-21 07:21:13.162] [DEBUG] QUERY OK db=46.1ms idle=227.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "1.0", "app_version", 77046, ~N[2026-08-21 07:21:13], ~N[2026-08-21 07:21:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781882, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:13], updated_at: ~N[2026-08-21 07:21:13]}} [2026-08-21 07:21:13.162] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:21:11Z", "value" => "13"} [2026-08-21 07:21:13.222] [DEBUG] QUERY OK db=59.8ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "13", "android_version", 77046, ~N[2026-08-21 07:21:13], ~N[2026-08-21 07:21:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781884, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:13], updated_at: ~N[2026-08-21 07:21:13]}} [2026-08-21 07:21:13.223] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:21:11Z", "value" => "892"} [2026-08-21 07:21:13.271] [DEBUG] QUERY OK db=47.2ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "892", "ram_free_mb", 77046, ~N[2026-08-21 07:21:13], ~N[2026-08-21 07:21:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781886, itemkey: "ram_free_mb", value: "892", timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:13], updated_at: ~N[2026-08-21 07:21:13]}} [2026-08-21 07:21:13.271] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:21:11Z", "value" => "WIFI"} [2026-08-21 07:21:13.327] [DEBUG] QUERY OK db=55.9ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "WIFI", "network_type", 77046, ~N[2026-08-21 07:21:13], ~N[2026-08-21 07:21:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781888, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:13], updated_at: ~N[2026-08-21 07:21:13]}} [2026-08-21 07:21:13.329] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:21:11Z", "value" => "true"} [2026-08-21 07:21:13.377] [DEBUG] QUERY OK db=47.6ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "true", "kiosk_active", 77046, ~N[2026-08-21 07:21:13], ~N[2026-08-21 07:21:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781890, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:13], updated_at: ~N[2026-08-21 07:21:13]}} [2026-08-21 07:21:13.377] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:21:11Z", "value" => ""} [2026-08-21 07:21:13.422] [DEBUG] QUERY OK db=44.7ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:21:11Z", "sim_operator", 77046, ~N[2026-08-21 07:21:13], ~N[2026-08-21 07:21:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781892, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:13], updated_at: ~N[2026-08-21 07:21:13]}} [2026-08-21 07:21:13.423] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:21:11Z", "value" => "UNKNOWN"} [2026-08-21 07:21:13.509] [DEBUG] QUERY OK db=85.9ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "UNKNOWN", "sim_number", 77046, ~N[2026-08-21 07:21:13], ~N[2026-08-21 07:21:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.509] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781894, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:13], updated_at: ~N[2026-08-21 07:21:13]}} [2026-08-21 07:21:13.510] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:21:11Z", "value" => "UNKNOWN"} [2026-08-21 07:21:13.574] [DEBUG] QUERY OK db=63.9ms idle=87.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "UNKNOWN", "sim_iccid", 77046, ~N[2026-08-21 07:21:13], ~N[2026-08-21 07:21:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781896, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:13], updated_at: ~N[2026-08-21 07:21:13]}} [2026-08-21 07:21:13.574] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:21:11Z", "value" => "UNKNOWN"} [2026-08-21 07:21:13.623] [DEBUG] QUERY OK db=47.7ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "UNKNOWN", "sim_imsi", 77046, ~N[2026-08-21 07:21:13], ~N[2026-08-21 07:21:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781898, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:13], updated_at: ~N[2026-08-21 07:21:13]}} [2026-08-21 07:21:13.623] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:21:11Z", "value" => "UNKNOWN"} [2026-08-21 07:21:13.664] [DEBUG] QUERY OK db=40.8ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "UNKNOWN", "sim_iccid2", 77046, ~N[2026-08-21 07:21:13], ~N[2026-08-21 07:21:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781900, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:13], updated_at: ~N[2026-08-21 07:21:13]}} [2026-08-21 07:21:13.665] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:21:11Z", "value" => "UNKNOWN"} [2026-08-21 07:21:13.710] [DEBUG] QUERY OK db=44.9ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "UNKNOWN", "sim_imsi2", 77046, ~N[2026-08-21 07:21:13], ~N[2026-08-21 07:21:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.710] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781902, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:13], updated_at: ~N[2026-08-21 07:21:13]}} [2026-08-21 07:21:13.710] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:21:11Z", "value" => "26"} [2026-08-21 07:21:13.770] [DEBUG] QUERY OK db=57.7ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "26", "data_usage_mb", 77046, ~N[2026-08-21 07:21:13], ~N[2026-08-21 07:21:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781904, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:13], updated_at: ~N[2026-08-21 07:21:13]}} [2026-08-21 07:21:13.770] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:21:11Z", "value" => "0"} [2026-08-21 07:21:13.818] [DEBUG] QUERY OK db=46.5ms queue=0.3ms idle=60.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "0", "mobile_data_mb", 77046, ~N[2026-08-21 07:21:13], ~N[2026-08-21 07:21:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781906, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:13], updated_at: ~N[2026-08-21 07:21:13]}} [2026-08-21 07:21:13.820] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:21:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:21:13.889] [DEBUG] QUERY OK db=68.3ms idle=51.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:11Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77046, ~N[2026-08-21 07:21:13], ~N[2026-08-21 07:21:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:13.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781908, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:21:11Z", message: nil, status_log_id: 77046, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:13], updated_at: ~N[2026-08-21 07:21:13]}} [2026-08-21 07:21:13.892] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:20:53Z"} [2026-08-21 07:21:13.893] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:20:53Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 8, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:21:33.364] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:20:53Z"} [2026-08-21 07:21:33.364] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:20:53Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 9, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:21:33.551] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:20:53Z"} [2026-08-21 07:21:33.551] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:20:53Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 10, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:21:42.610] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:21:42.610] [INFO ] Incoming JSON payload: {"oid":"2d6ce2b4-cfa3-4975-aad1-9b3f8bf75059","sn":"98251226730001","uploadTime":"2026-08-21T07:21:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:21:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:21:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:21:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:21:42Z"},{"itemkey":"ram_free_mb","value":"888","timestamp":"2026-08-21T07:21:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:21:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:21:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:21:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:21:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:21:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:21:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:21:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:21:42Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:21:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:21:42.611] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2d6ce2b4-cfa3-4975-aad1-9b3f8bf75059", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:21:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:21:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:21:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:21:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:21:42Z", "value" => "888"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:21:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:21:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:21:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:21:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:21:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:21:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:21:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:21:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:21:42Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:21:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:21:42Z", "vendor" => "morefun"} [2026-08-21 07:21:42.612] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:21:42.612] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:21:42.612] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:21:42.613] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=635.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-08-21 07:21:42.614] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.2ms idle=311.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-08-21 07:21:42.614] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:21:42.617] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:21:42.617] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:21:42.683] [DEBUG] QUERY OK source="tms_terminals" db=24.1ms queue=41.3ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:21:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:21:42.683] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:21:42.684] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=66.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:21:42.725] [DEBUG] QUERY OK source="tms_terminals" db=41.5ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:21:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:21:42.759] [DEBUG] QUERY OK db=33.3ms idle=42.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2d6ce2b4-cfa3-4975-aad1-9b3f8bf75059", "2026-08-21T07:21:42Z", ~N[2026-08-21 07:21:42], ~N[2026-08-21 07:21:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:21:42.760] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77048, oid: "2d6ce2b4-cfa3-4975-aad1-9b3f8bf75059", upload_time: "2026-08-21T07:21:42Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:42], updated_at: ~N[2026-08-21 07:21:42]} [2026-08-21 07:21:42.760] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:21:42Z", "value" => "morefun"} [2026-08-21 07:21:42.807] [DEBUG] QUERY OK db=46.5ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:42Z", "morefun", "vendor", 77048, ~N[2026-08-21 07:21:42], ~N[2026-08-21 07:21:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:42.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781910, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:42], updated_at: ~N[2026-08-21 07:21:42]}} [2026-08-21 07:21:42.807] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:21:42Z", "value" => "kiosk_launcher"} [2026-08-21 07:21:42.842] [DEBUG] QUERY OK db=34.3ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:42Z", "kiosk_launcher", "model", 77048, ~N[2026-08-21 07:21:42], ~N[2026-08-21 07:21:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:42.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781912, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:42], updated_at: ~N[2026-08-21 07:21:42]}} [2026-08-21 07:21:42.843] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:21:42Z", "value" => "1.0"} [2026-08-21 07:21:42.913] [DEBUG] QUERY OK db=69.0ms queue=0.3ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:42Z", "1.0", "app_version", 77048, ~N[2026-08-21 07:21:42], ~N[2026-08-21 07:21:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:42.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781914, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:42], updated_at: ~N[2026-08-21 07:21:42]}} [2026-08-21 07:21:42.913] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:21:42Z", "value" => "13"} [2026-08-21 07:21:42.954] [DEBUG] QUERY OK db=39.8ms idle=71.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:42Z", "13", "android_version", 77048, ~N[2026-08-21 07:21:42], ~N[2026-08-21 07:21:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:42.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781916, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:42], updated_at: ~N[2026-08-21 07:21:42]}} [2026-08-21 07:21:42.954] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:21:42Z", "value" => "888"} [2026-08-21 07:21:43.015] [DEBUG] QUERY OK db=60.1ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:42Z", "888", "ram_free_mb", 77048, ~N[2026-08-21 07:21:42], ~N[2026-08-21 07:21:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:43.015] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781918, itemkey: "ram_free_mb", value: "888", timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:42], updated_at: ~N[2026-08-21 07:21:42]}} [2026-08-21 07:21:43.016] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:21:42Z", "value" => "WIFI"} [2026-08-21 07:21:43.081] [DEBUG] QUERY OK db=64.1ms queue=0.4ms idle=62.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:42Z", "WIFI", "network_type", 77048, ~N[2026-08-21 07:21:43], ~N[2026-08-21 07:21:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:43.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781920, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:43], updated_at: ~N[2026-08-21 07:21:43]}} [2026-08-21 07:21:43.081] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:21:42Z", "value" => "true"} [2026-08-21 07:21:43.127] [DEBUG] QUERY OK db=45.1ms idle=66.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:42Z", "true", "kiosk_active", 77048, ~N[2026-08-21 07:21:43], ~N[2026-08-21 07:21:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:43.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781922, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:43], updated_at: ~N[2026-08-21 07:21:43]}} [2026-08-21 07:21:43.127] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:21:42Z", "value" => ""} [2026-08-21 07:21:43.207] [DEBUG] QUERY OK db=78.7ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:21:42Z", "sim_operator", 77048, ~N[2026-08-21 07:21:43], ~N[2026-08-21 07:21:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:43.207] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781924, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:43], updated_at: ~N[2026-08-21 07:21:43]}} [2026-08-21 07:21:43.207] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:21:42Z", "value" => "UNKNOWN"} [2026-08-21 07:21:43.264] [DEBUG] QUERY OK db=56.5ms idle=80.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:42Z", "UNKNOWN", "sim_number", 77048, ~N[2026-08-21 07:21:43], ~N[2026-08-21 07:21:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:43.265] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781926, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:43], updated_at: ~N[2026-08-21 07:21:43]}} [2026-08-21 07:21:43.265] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:21:42Z", "value" => "UNKNOWN"} [2026-08-21 07:21:43.300] [DEBUG] QUERY OK db=34.3ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:42Z", "UNKNOWN", "sim_iccid", 77048, ~N[2026-08-21 07:21:43], ~N[2026-08-21 07:21:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:43.300] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781928, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:43], updated_at: ~N[2026-08-21 07:21:43]}} [2026-08-21 07:21:43.300] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:21:42Z", "value" => "UNKNOWN"} [2026-08-21 07:21:43.375] [DEBUG] QUERY OK db=74.0ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:42Z", "UNKNOWN", "sim_imsi", 77048, ~N[2026-08-21 07:21:43], ~N[2026-08-21 07:21:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:43.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781930, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:43], updated_at: ~N[2026-08-21 07:21:43]}} [2026-08-21 07:21:43.375] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:21:42Z", "value" => "UNKNOWN"} [2026-08-21 07:21:43.422] [DEBUG] QUERY OK db=46.6ms idle=71.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:42Z", "UNKNOWN", "sim_iccid2", 77048, ~N[2026-08-21 07:21:43], ~N[2026-08-21 07:21:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:43.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781932, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:43], updated_at: ~N[2026-08-21 07:21:43]}} [2026-08-21 07:21:43.422] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:21:42Z", "value" => "UNKNOWN"} [2026-08-21 07:21:43.457] [DEBUG] QUERY OK db=33.9ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:42Z", "UNKNOWN", "sim_imsi2", 77048, ~N[2026-08-21 07:21:43], ~N[2026-08-21 07:21:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:43.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781934, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:43], updated_at: ~N[2026-08-21 07:21:43]}} [2026-08-21 07:21:43.457] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:21:42Z", "value" => "26"} [2026-08-21 07:21:43.497] [DEBUG] QUERY OK db=40.1ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:42Z", "26", "data_usage_mb", 77048, ~N[2026-08-21 07:21:43], ~N[2026-08-21 07:21:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:43.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781936, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:43], updated_at: ~N[2026-08-21 07:21:43]}} [2026-08-21 07:21:43.498] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:21:42Z", "value" => "0"} [2026-08-21 07:21:43.556] [DEBUG] QUERY OK db=57.6ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:21:42Z", "0", "mobile_data_mb", 77048, ~N[2026-08-21 07:21:43], ~N[2026-08-21 07:21:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:43.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781938, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:43], updated_at: ~N[2026-08-21 07:21:43]}} [2026-08-21 07:21:43.558] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:21:43.625] [DEBUG] QUERY OK db=66.1ms idle=61.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77048, ~N[2026-08-21 07:21:43], ~N[2026-08-21 07:21:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:21:43.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781940, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:21:42Z", message: nil, status_log_id: 77048, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:21:43], updated_at: ~N[2026-08-21 07:21:43]}} [2026-08-21 07:22:12.734] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:22:12.734] [INFO ] Incoming JSON payload: {"oid":"9b5021d2-b751-4ca7-bbcf-5cf7734729b4","sn":"98251226730001","uploadTime":"2026-08-21T07:22:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:22:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:22:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:22:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:22:12Z"},{"itemkey":"ram_free_mb","value":"888","timestamp":"2026-08-21T07:22:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:22:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:22:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:22:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:22:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:22:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:22:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:22:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:22:12Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:22:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:22:12.739] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "9b5021d2-b751-4ca7-bbcf-5cf7734729b4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:22:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:22:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:22:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:22:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:22:12Z", "value" => "888"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:22:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:22:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:22:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:22:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:22:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:22:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:22:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:22:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:22:12Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:22:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:22:12Z", "vendor" => "morefun"} [2026-08-21 07:22:12.739] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:22:12.741] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:22:12.741] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:22:12.743] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=758.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-08-21 07:22:12.745] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.1ms idle=328.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-08-21 07:22:12.745] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:22:12.748] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=2.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:22:12.748] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:22:12.779] [DEBUG] QUERY OK source="tms_terminals" db=29.3ms queue=1.0ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:22:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:22:12.780] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:22:12.782] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=32.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:22:12.875] [DEBUG] QUERY OK source="tms_terminals" db=93.4ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:22:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:22:12.925] [DEBUG] QUERY OK db=49.3ms idle=94.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "9b5021d2-b751-4ca7-bbcf-5cf7734729b4", "2026-08-21T07:22:12Z", ~N[2026-08-21 07:22:12], ~N[2026-08-21 07:22:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:22:12.925] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77051, oid: "9b5021d2-b751-4ca7-bbcf-5cf7734729b4", upload_time: "2026-08-21T07:22:12Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:12], updated_at: ~N[2026-08-21 07:22:12]} [2026-08-21 07:22:12.926] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:22:12Z", "value" => "morefun"} [2026-08-21 07:22:12.974] [DEBUG] QUERY OK db=47.7ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:12Z", "morefun", "vendor", 77051, ~N[2026-08-21 07:22:12], ~N[2026-08-21 07:22:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:12.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781943, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:12], updated_at: ~N[2026-08-21 07:22:12]}} [2026-08-21 07:22:12.975] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:22:12Z", "value" => "kiosk_launcher"} [2026-08-21 07:22:13.039] [DEBUG] QUERY OK db=63.9ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:12Z", "kiosk_launcher", "model", 77051, ~N[2026-08-21 07:22:12], ~N[2026-08-21 07:22:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781945, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:12], updated_at: ~N[2026-08-21 07:22:12]}} [2026-08-21 07:22:13.039] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:22:12Z", "value" => "1.0"} [2026-08-21 07:22:13.089] [DEBUG] QUERY OK db=49.8ms idle=65.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:12Z", "1.0", "app_version", 77051, ~N[2026-08-21 07:22:13], ~N[2026-08-21 07:22:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.090] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781947, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:13], updated_at: ~N[2026-08-21 07:22:13]}} [2026-08-21 07:22:13.090] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:22:12Z", "value" => "13"} [2026-08-21 07:22:13.123] [DEBUG] QUERY OK db=32.9ms idle=51.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:12Z", "13", "android_version", 77051, ~N[2026-08-21 07:22:13], ~N[2026-08-21 07:22:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781949, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:13], updated_at: ~N[2026-08-21 07:22:13]}} [2026-08-21 07:22:13.123] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:22:12Z", "value" => "888"} [2026-08-21 07:22:13.187] [DEBUG] QUERY OK db=62.7ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:12Z", "888", "ram_free_mb", 77051, ~N[2026-08-21 07:22:13], ~N[2026-08-21 07:22:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781951, itemkey: "ram_free_mb", value: "888", timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:13], updated_at: ~N[2026-08-21 07:22:13]}} [2026-08-21 07:22:13.187] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:22:12Z", "value" => "WIFI"} [2026-08-21 07:22:13.263] [DEBUG] QUERY OK db=75.9ms queue=0.1ms idle=64.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:12Z", "WIFI", "network_type", 77051, ~N[2026-08-21 07:22:13], ~N[2026-08-21 07:22:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781953, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:13], updated_at: ~N[2026-08-21 07:22:13]}} [2026-08-21 07:22:13.264] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:22:12Z", "value" => "true"} [2026-08-21 07:22:13.319] [DEBUG] QUERY OK db=54.4ms idle=77.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:12Z", "true", "kiosk_active", 77051, ~N[2026-08-21 07:22:13], ~N[2026-08-21 07:22:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781955, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:13], updated_at: ~N[2026-08-21 07:22:13]}} [2026-08-21 07:22:13.319] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:22:12Z", "value" => ""} [2026-08-21 07:22:13.388] [DEBUG] QUERY OK db=68.9ms idle=56.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:22:12Z", "sim_operator", 77051, ~N[2026-08-21 07:22:13], ~N[2026-08-21 07:22:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781957, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:13], updated_at: ~N[2026-08-21 07:22:13]}} [2026-08-21 07:22:13.389] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:22:12Z", "value" => "UNKNOWN"} [2026-08-21 07:22:13.437] [DEBUG] QUERY OK db=47.9ms idle=70.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:12Z", "UNKNOWN", "sim_number", 77051, ~N[2026-08-21 07:22:13], ~N[2026-08-21 07:22:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.437] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781959, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:13], updated_at: ~N[2026-08-21 07:22:13]}} [2026-08-21 07:22:13.438] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:22:12Z", "value" => "UNKNOWN"} [2026-08-21 07:22:13.468] [DEBUG] QUERY OK db=29.6ms idle=18.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:12Z", "UNKNOWN", "sim_iccid", 77051, ~N[2026-08-21 07:22:13], ~N[2026-08-21 07:22:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781961, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:13], updated_at: ~N[2026-08-21 07:22:13]}} [2026-08-21 07:22:13.468] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:22:12Z", "value" => "UNKNOWN"} [2026-08-21 07:22:13.546] [DEBUG] QUERY OK db=77.0ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:12Z", "UNKNOWN", "sim_imsi", 77051, ~N[2026-08-21 07:22:13], ~N[2026-08-21 07:22:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781963, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:13], updated_at: ~N[2026-08-21 07:22:13]}} [2026-08-21 07:22:13.546] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:22:12Z", "value" => "UNKNOWN"} [2026-08-21 07:22:13.579] [DEBUG] QUERY OK db=32.6ms idle=79.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:12Z", "UNKNOWN", "sim_iccid2", 77051, ~N[2026-08-21 07:22:13], ~N[2026-08-21 07:22:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781965, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:13], updated_at: ~N[2026-08-21 07:22:13]}} [2026-08-21 07:22:13.580] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:22:12Z", "value" => "UNKNOWN"} [2026-08-21 07:22:13.635] [DEBUG] QUERY OK db=54.7ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:12Z", "UNKNOWN", "sim_imsi2", 77051, ~N[2026-08-21 07:22:13], ~N[2026-08-21 07:22:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.635] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781967, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:13], updated_at: ~N[2026-08-21 07:22:13]}} [2026-08-21 07:22:13.635] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:22:12Z", "value" => "26"} [2026-08-21 07:22:13.696] [DEBUG] QUERY OK db=60.4ms queue=0.2ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:12Z", "26", "data_usage_mb", 77051, ~N[2026-08-21 07:22:13], ~N[2026-08-21 07:22:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781969, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:13], updated_at: ~N[2026-08-21 07:22:13]}} [2026-08-21 07:22:13.697] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:22:12Z", "value" => "0"} [2026-08-21 07:22:13.750] [DEBUG] QUERY OK db=51.2ms idle=63.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:12Z", "0", "mobile_data_mb", 77051, ~N[2026-08-21 07:22:13], ~N[2026-08-21 07:22:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.750] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781971, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:13], updated_at: ~N[2026-08-21 07:22:13]}} [2026-08-21 07:22:13.751] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:22:13.830] [DEBUG] QUERY OK db=76.4ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77051, ~N[2026-08-21 07:22:13], ~N[2026-08-21 07:22:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:13.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781973, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:22:12Z", message: nil, status_log_id: 77051, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:13], updated_at: ~N[2026-08-21 07:22:13]}} [2026-08-21 07:22:42.852] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:22:42.852] [INFO ] Incoming JSON payload: {"oid":"ace4597e-df1e-4798-84ec-562b15c88046","sn":"98251226730001","uploadTime":"2026-08-21T07:22:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:22:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:22:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:22:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:22:42Z"},{"itemkey":"ram_free_mb","value":"885","timestamp":"2026-08-21T07:22:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:22:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:22:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:22:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:22:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:22:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:22:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:22:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:22:42Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:22:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:22:42.854] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ace4597e-df1e-4798-84ec-562b15c88046", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:22:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:22:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:22:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:22:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:22:42Z", "value" => "885"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:22:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:22:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:22:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:22:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:22:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:22:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:22:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:22:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:22:42Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:22:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:22:42Z", "vendor" => "morefun"} [2026-08-21 07:22:42.854] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:22:42.854] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:22:42.854] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:22:42.859] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=4.8ms idle=1347.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-08-21 07:22:42.862] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=344.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-08-21 07:22:42.862] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:22:42.865] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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-08-21 07:22:42.865] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:22:42.889] [DEBUG] QUERY OK source="tms_terminals" db=23.9ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:22:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:22:42.891] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:22:42.894] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=1.8ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:22:42.926] [DEBUG] QUERY OK source="tms_terminals" db=28.5ms idle=6.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:22:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:22:43.004] [DEBUG] QUERY OK db=74.7ms idle=33.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ace4597e-df1e-4798-84ec-562b15c88046", "2026-08-21T07:22:42Z", ~N[2026-08-21 07:22:42], ~N[2026-08-21 07:22:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:22:43.004] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77052, oid: "ace4597e-df1e-4798-84ec-562b15c88046", upload_time: "2026-08-21T07:22:42Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:42], updated_at: ~N[2026-08-21 07:22:42]} [2026-08-21 07:22:43.004] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:22:42Z", "value" => "morefun"} [2026-08-21 07:22:43.057] [DEBUG] QUERY OK db=48.2ms queue=0.2ms idle=84.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:42Z", "morefun", "vendor", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781974, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.058] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:22:42Z", "value" => "kiosk_launcher"} [2026-08-21 07:22:43.120] [DEBUG] QUERY OK db=58.7ms queue=0.9ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:42Z", "kiosk_launcher", "model", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.120] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781976, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.120] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:22:42Z", "value" => "1.0"} [2026-08-21 07:22:43.170] [DEBUG] QUERY OK db=49.2ms idle=65.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:42Z", "1.0", "app_version", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.170] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781978, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.172] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:22:42Z", "value" => "13"} [2026-08-21 07:22:43.245] [DEBUG] QUERY OK db=71.3ms queue=0.2ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:42Z", "13", "android_version", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781980, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.245] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:22:42Z", "value" => "885"} [2026-08-21 07:22:43.295] [DEBUG] QUERY OK db=49.2ms idle=75.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:42Z", "885", "ram_free_mb", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.295] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781982, itemkey: "ram_free_mb", value: "885", timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.295] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:22:42Z", "value" => "WIFI"} [2026-08-21 07:22:43.339] [DEBUG] QUERY OK db=43.7ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:42Z", "WIFI", "network_type", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781984, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.340] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:22:42Z", "value" => "true"} [2026-08-21 07:22:43.381] [DEBUG] QUERY OK db=40.9ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:42Z", "true", "kiosk_active", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781986, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.382] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:22:42Z", "value" => ""} [2026-08-21 07:22:43.425] [DEBUG] QUERY OK db=42.9ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:22:42Z", "sim_operator", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781988, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.425] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:22:42Z", "value" => "UNKNOWN"} [2026-08-21 07:22:43.467] [DEBUG] QUERY OK db=41.5ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:42Z", "UNKNOWN", "sim_number", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781990, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.472] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:22:42Z", "value" => "UNKNOWN"} [2026-08-21 07:22:43.549] [DEBUG] QUERY OK db=74.4ms queue=2.0ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:42Z", "UNKNOWN", "sim_iccid", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781992, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.549] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:22:42Z", "value" => "UNKNOWN"} [2026-08-21 07:22:43.601] [DEBUG] QUERY OK db=51.7ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:42Z", "UNKNOWN", "sim_imsi", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781994, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.602] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:22:42Z", "value" => "UNKNOWN"} [2026-08-21 07:22:43.664] [DEBUG] QUERY OK db=58.9ms queue=3.2ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:42Z", "UNKNOWN", "sim_iccid2", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.664] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781997, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.665] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:22:42Z", "value" => "UNKNOWN"} [2026-08-21 07:22:43.721] [DEBUG] QUERY OK db=53.2ms idle=63.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:42Z", "UNKNOWN", "sim_imsi2", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.721] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 781999, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.722] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:22:42Z", "value" => "26"} [2026-08-21 07:22:43.788] [DEBUG] QUERY OK db=65.6ms idle=57.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:42Z", "26", "data_usage_mb", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.788] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782001, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.788] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:22:42Z", "value" => "0"} [2026-08-21 07:22:43.868] [DEBUG] QUERY OK db=79.3ms idle=70.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22:42Z", "0", "mobile_data_mb", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782003, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:22:43.883] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:22:43.947] [DEBUG] QUERY OK db=58.4ms idle=99.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77052, ~N[2026-08-21 07:22:43], ~N[2026-08-21 07:22:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:22:43.965] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782005, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:22:42Z", message: nil, status_log_id: 77052, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:22:43], updated_at: ~N[2026-08-21 07:22:43]}} [2026-08-21 07:23:13.199] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:23:13.202] [INFO ] Incoming JSON payload: {"oid":"21bc4d2e-5257-4474-b2cc-cb8d2087496f","sn":"98251226730001","uploadTime":"2026-08-21T07:23:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:23:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:23:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:23:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:23:12Z"},{"itemkey":"ram_free_mb","value":"893","timestamp":"2026-08-21T07:23:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:23:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:23:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:23:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:23:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:23:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:23:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:23:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:23:12Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:23:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:23: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:23:13.206] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "21bc4d2e-5257-4474-b2cc-cb8d2087496f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:23:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:23:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:23:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:23:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:23:12Z", "value" => "893"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:23:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:23:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:23:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:23:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:23:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:23:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:23:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:23:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:23:12Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:23:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:23: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:23:12Z", "vendor" => "morefun"} [2026-08-21 07:23:13.207] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:23:13.207] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:23:13.207] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:23:13.218] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1208.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-08-21 07:23:13.223] [DEBUG] QUERY OK source="parameter_templates" db=4.3ms idle=494.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-08-21 07:23:13.225] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:23:13.233] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=10.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:23:13.233] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:23:13.239] [DEBUG] QUERY OK source="tms_terminals" db=5.3ms idle=10.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:23:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:23:13.239] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:23:13.243] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms idle=8.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:23:13.288] [DEBUG] QUERY OK source="tms_terminals" db=44.5ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:23:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:23:13.349] [DEBUG] QUERY OK db=61.2ms idle=45.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "21bc4d2e-5257-4474-b2cc-cb8d2087496f", "2026-08-21T07:23:12Z", ~N[2026-08-21 07:23:13], ~N[2026-08-21 07:23:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:23:13.350] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77054, oid: "21bc4d2e-5257-4474-b2cc-cb8d2087496f", upload_time: "2026-08-21T07:23:12Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:13], updated_at: ~N[2026-08-21 07:23:13]} [2026-08-21 07:23:13.350] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:23:12Z", "value" => "morefun"} [2026-08-21 07:23:13.405] [DEBUG] QUERY OK db=55.2ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:12Z", "morefun", "vendor", 77054, ~N[2026-08-21 07:23:13], ~N[2026-08-21 07:23:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:13.406] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782006, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:13], updated_at: ~N[2026-08-21 07:23:13]}} [2026-08-21 07:23:13.406] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:23:12Z", "value" => "kiosk_launcher"} [2026-08-21 07:23:13.481] [DEBUG] QUERY OK db=72.2ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:12Z", "kiosk_launcher", "model", 77054, ~N[2026-08-21 07:23:13], ~N[2026-08-21 07:23:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:13.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782008, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:13], updated_at: ~N[2026-08-21 07:23:13]}} [2026-08-21 07:23:13.483] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:23:12Z", "value" => "1.0"} [2026-08-21 07:23:13.535] [DEBUG] QUERY OK db=51.5ms idle=78.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:12Z", "1.0", "app_version", 77054, ~N[2026-08-21 07:23:13], ~N[2026-08-21 07:23:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:13.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782010, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:13], updated_at: ~N[2026-08-21 07:23:13]}} [2026-08-21 07:23:13.535] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:23:12Z", "value" => "13"} [2026-08-21 07:23:13.579] [DEBUG] QUERY OK db=42.4ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:12Z", "13", "android_version", 77054, ~N[2026-08-21 07:23:13], ~N[2026-08-21 07:23:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:13.582] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782012, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:13], updated_at: ~N[2026-08-21 07:23:13]}} [2026-08-21 07:23:13.582] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:23:12Z", "value" => "893"} [2026-08-21 07:23:13.628] [DEBUG] QUERY OK db=46.2ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:12Z", "893", "ram_free_mb", 77054, ~N[2026-08-21 07:23:13], ~N[2026-08-21 07:23:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:13.629] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782014, itemkey: "ram_free_mb", value: "893", timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:13], updated_at: ~N[2026-08-21 07:23:13]}} [2026-08-21 07:23:13.630] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:23:12Z", "value" => "WIFI"} [2026-08-21 07:23:13.685] [DEBUG] QUERY OK db=55.4ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:12Z", "WIFI", "network_type", 77054, ~N[2026-08-21 07:23:13], ~N[2026-08-21 07:23:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:13.686] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782016, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:13], updated_at: ~N[2026-08-21 07:23:13]}} [2026-08-21 07:23:13.686] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:23:12Z", "value" => "true"} [2026-08-21 07:23:13.738] [DEBUG] QUERY OK db=46.9ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:12Z", "true", "kiosk_active", 77054, ~N[2026-08-21 07:23:13], ~N[2026-08-21 07:23:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:13.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782018, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:13], updated_at: ~N[2026-08-21 07:23:13]}} [2026-08-21 07:23:13.740] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:23:12Z", "value" => ""} [2026-08-21 07:23:13.801] [DEBUG] QUERY OK db=59.3ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:23:12Z", "sim_operator", 77054, ~N[2026-08-21 07:23:13], ~N[2026-08-21 07:23:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:13.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782020, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:13], updated_at: ~N[2026-08-21 07:23:13]}} [2026-08-21 07:23:13.805] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:23:12Z", "value" => "UNKNOWN"} [2026-08-21 07:23:13.884] [DEBUG] QUERY OK db=79.3ms idle=67.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:12Z", "UNKNOWN", "sim_number", 77054, ~N[2026-08-21 07:23:13], ~N[2026-08-21 07:23:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:13.885] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782022, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:13], updated_at: ~N[2026-08-21 07:23:13]}} [2026-08-21 07:23:13.885] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:23:12Z", "value" => "UNKNOWN"} [2026-08-21 07:23:14.002] [DEBUG] QUERY OK db=101.7ms idle=100.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:12Z", "UNKNOWN", "sim_iccid", 77054, ~N[2026-08-21 07:23:13], ~N[2026-08-21 07:23:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:14.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782024, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:13], updated_at: ~N[2026-08-21 07:23:13]}} [2026-08-21 07:23:14.003] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:23:12Z", "value" => "UNKNOWN"} [2026-08-21 07:23:14.056] [DEBUG] QUERY OK db=52.9ms idle=118.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:12Z", "UNKNOWN", "sim_imsi", 77054, ~N[2026-08-21 07:23:14], ~N[2026-08-21 07:23:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:14.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782026, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:14], updated_at: ~N[2026-08-21 07:23:14]}} [2026-08-21 07:23:14.056] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:23:12Z", "value" => "UNKNOWN"} [2026-08-21 07:23:14.113] [DEBUG] QUERY OK db=55.8ms idle=54.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:12Z", "UNKNOWN", "sim_iccid2", 77054, ~N[2026-08-21 07:23:14], ~N[2026-08-21 07:23:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:14.113] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782028, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:14], updated_at: ~N[2026-08-21 07:23:14]}} [2026-08-21 07:23:14.114] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:23:12Z", "value" => "UNKNOWN"} [2026-08-21 07:23:14.164] [DEBUG] QUERY OK db=49.5ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:12Z", "UNKNOWN", "sim_imsi2", 77054, ~N[2026-08-21 07:23:14], ~N[2026-08-21 07:23:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:14.167] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782030, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:14], updated_at: ~N[2026-08-21 07:23:14]}} [2026-08-21 07:23:14.167] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:23:12Z", "value" => "26"} [2026-08-21 07:23:14.206] [DEBUG] QUERY OK db=37.6ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:12Z", "26", "data_usage_mb", 77054, ~N[2026-08-21 07:23:14], ~N[2026-08-21 07:23:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:14.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782032, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:14], updated_at: ~N[2026-08-21 07:23:14]}} [2026-08-21 07:23:14.210] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:23:12Z", "value" => "0"} [2026-08-21 07:23:14.242] [DEBUG] QUERY OK db=29.5ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:12Z", "0", "mobile_data_mb", 77054, ~N[2026-08-21 07:23:14], ~N[2026-08-21 07:23:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:14.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782034, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:14], updated_at: ~N[2026-08-21 07:23:14]}} [2026-08-21 07:23:14.247] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:23: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:23:14.295] [DEBUG] QUERY OK db=44.7ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77054, ~N[2026-08-21 07:23:14], ~N[2026-08-21 07:23:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:14.300] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782036, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:23:12Z", message: nil, status_log_id: 77054, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:14], updated_at: ~N[2026-08-21 07:23:14]}} [2026-08-21 07:23:17.167] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch980308009433_20260821072316821","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T07:23:16Z"} [2026-08-21 07:23:17.168] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch980308009433_20260821072316821", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:23:16Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 16, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 57, 56, 48, 51, 48, 56, 48, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:23:35.796] [INFO ] Running offline device check... [2026-08-21 07:23:35.796] [INFO ] Starting offline device check... [2026-08-21 07:23:35.798] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.6ms idle=955.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-08-21 07:23:35.807] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.4ms queue=0.3ms idle=784.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:23:35.814] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.815] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=7.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.816] [INFO ] Starting scheduled rule validation [2026-08-21 07:23:35.816] [DEBUG] Validating missing assignments [2026-08-21 07:23:35.817] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.817] [DEBUG] QUERY OK source="terminal_group_rules" db=1.2ms idle=0.7ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-08-21 07:23:35.818] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.819] [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-08-21 07:23:35.820] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=0.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-08-21 07:23:35.820] [DEBUG] Re-applied 0 rules during validation [2026-08-21 07:23:35.820] [DEBUG] Validating invalid assignments [2026-08-21 07:23:35.821] [DEBUG] Validating rule consistency [2026-08-21 07:23:35.821] [DEBUG] Updating group terminal counts [2026-08-21 07:23:35.820] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.3ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.821] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.822] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.824] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.833] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.837] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=3.2ms idle=9.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.849] [DEBUG] QUERY OK source="terminal_groups" db=0.2ms queue=1.5ms idle=0.0ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-08-21 07:23:35.854] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms queue=0.9ms idle=3.4ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:249 [2026-08-21 07:23:35.855] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms queue=0.5ms idle=0.2ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-08-21 07:23:35.855] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.856] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms queue=0.8ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:258 [2026-08-21 07:23:35.857] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms queue=0.3ms 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-08-21 07:23:35.860] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.5ms queue=1.1ms 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-08-21 07:23:35.863] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=2.1ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:262 [2026-08-21 07:23:35.863] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.4ms queue=0.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.864] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=0.7ms idle=0.2ms SELECT t0.`assignment_type`, count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) GROUP BY t0.`assignment_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:269 [2026-08-21 07:23:35.864] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-08-21 07:23:35.864] [INFO ] Rule validation completed - applied 0 fixes [2026-08-21 07:23:35.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.866] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.867] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.890] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.892] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.1ms 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 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.895] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.897] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.898] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.899] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.936] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=37.0ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.938] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=37.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:23:35.940] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.948] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.949] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.955] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.959] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.965] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.8ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.973] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms idle=7.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.976] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=9.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.978] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.979] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.985] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.991] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.992] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.995] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.996] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:35.999] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:36.000] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:36.004] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.8ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:36.005] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:36.011] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:36.015] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms 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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:36.021] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:36.024] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms queue=0.1ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:36.026] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:36.033] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=8.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:36.038] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:36.044] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:23:36.044] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 07:23:36.044] [INFO ] Offline device check completed successfully [2026-08-21 07:23:43.283] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:23:43.283] [INFO ] Incoming JSON payload: {"oid":"b9fde3d3-e16d-4381-a9e8-56985049501d","sn":"98251226730001","uploadTime":"2026-08-21T07:23:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:23:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:23:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:23:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:23:42Z"},{"itemkey":"ram_free_mb","value":"888","timestamp":"2026-08-21T07:23:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:23:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:23:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:23:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:23:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:23:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:23:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:23:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:23:42Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:23:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:23: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:23:43.287] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b9fde3d3-e16d-4381-a9e8-56985049501d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:23:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:23:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:23:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:23:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:23:42Z", "value" => "888"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:23:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:23:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:23:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:23:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:23:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:23:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:23:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:23:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:23:42Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:23:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:23: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:23:42Z", "vendor" => "morefun"} [2026-08-21 07:23:43.287] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:23:43.287] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:23:43.288] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:23:43.289] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=1272.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-08-21 07:23:43.291] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=410.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-08-21 07:23:43.293] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:23:43.298] [DEBUG] QUERY OK source="tms_terminals" db=5.0ms idle=4.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:23:43.299] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:23:43.430] [DEBUG] QUERY OK source="tms_terminals" db=130.9ms idle=8.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:23:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:23:43.430] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:23:43.432] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=132.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:23:43.466] [DEBUG] QUERY OK source="tms_terminals" db=34.1ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:23:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:23:43.513] [DEBUG] QUERY OK db=46.2ms idle=35.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b9fde3d3-e16d-4381-a9e8-56985049501d", "2026-08-21T07:23:42Z", ~N[2026-08-21 07:23:43], ~N[2026-08-21 07:23:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:23:43.513] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77056, oid: "b9fde3d3-e16d-4381-a9e8-56985049501d", upload_time: "2026-08-21T07:23:42Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:43], updated_at: ~N[2026-08-21 07:23:43]} [2026-08-21 07:23:43.514] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:23:42Z", "value" => "morefun"} [2026-08-21 07:23:43.580] [DEBUG] QUERY OK db=65.9ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:42Z", "morefun", "vendor", 77056, ~N[2026-08-21 07:23:43], ~N[2026-08-21 07:23:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:43.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782038, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:43], updated_at: ~N[2026-08-21 07:23:43]}} [2026-08-21 07:23:43.580] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:23:42Z", "value" => "kiosk_launcher"} [2026-08-21 07:23:43.633] [DEBUG] QUERY OK db=52.0ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:42Z", "kiosk_launcher", "model", 77056, ~N[2026-08-21 07:23:43], ~N[2026-08-21 07:23:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:43.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782040, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:43], updated_at: ~N[2026-08-21 07:23:43]}} [2026-08-21 07:23:43.633] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:23:42Z", "value" => "1.0"} [2026-08-21 07:23:43.690] [DEBUG] QUERY OK db=56.4ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:42Z", "1.0", "app_version", 77056, ~N[2026-08-21 07:23:43], ~N[2026-08-21 07:23:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:43.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782042, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:43], updated_at: ~N[2026-08-21 07:23:43]}} [2026-08-21 07:23:43.690] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:23:42Z", "value" => "13"} [2026-08-21 07:23:43.732] [DEBUG] QUERY OK db=40.3ms queue=0.1ms idle=58.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:42Z", "13", "android_version", 77056, ~N[2026-08-21 07:23:43], ~N[2026-08-21 07:23:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:43.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782044, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:43], updated_at: ~N[2026-08-21 07:23:43]}} [2026-08-21 07:23:43.732] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:23:42Z", "value" => "888"} [2026-08-21 07:23:43.801] [DEBUG] QUERY OK db=68.2ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:42Z", "888", "ram_free_mb", 77056, ~N[2026-08-21 07:23:43], ~N[2026-08-21 07:23:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:43.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782046, itemkey: "ram_free_mb", value: "888", timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:43], updated_at: ~N[2026-08-21 07:23:43]}} [2026-08-21 07:23:43.801] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:23:42Z", "value" => "WIFI"} [2026-08-21 07:23:43.849] [DEBUG] QUERY OK db=47.5ms queue=0.1ms idle=69.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:42Z", "WIFI", "network_type", 77056, ~N[2026-08-21 07:23:43], ~N[2026-08-21 07:23:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:43.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782048, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:43], updated_at: ~N[2026-08-21 07:23:43]}} [2026-08-21 07:23:43.850] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:23:42Z", "value" => "true"} [2026-08-21 07:23:43.903] [DEBUG] QUERY OK db=51.8ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:42Z", "true", "kiosk_active", 77056, ~N[2026-08-21 07:23:43], ~N[2026-08-21 07:23:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:43.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782050, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:43], updated_at: ~N[2026-08-21 07:23:43]}} [2026-08-21 07:23:43.903] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:23:42Z", "value" => ""} [2026-08-21 07:23:43.996] [DEBUG] QUERY OK db=92.0ms idle=20.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:23:42Z", "sim_operator", 77056, ~N[2026-08-21 07:23:43], ~N[2026-08-21 07:23:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:43.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782052, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:43], updated_at: ~N[2026-08-21 07:23:43]}} [2026-08-21 07:23:43.996] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:23:42Z", "value" => "UNKNOWN"} [2026-08-21 07:23:44.070] [DEBUG] QUERY OK db=73.6ms idle=93.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:42Z", "UNKNOWN", "sim_number", 77056, ~N[2026-08-21 07:23:43], ~N[2026-08-21 07:23:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:44.070] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782054, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:43], updated_at: ~N[2026-08-21 07:23:43]}} [2026-08-21 07:23:44.070] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:23:42Z", "value" => "UNKNOWN"} [2026-08-21 07:23:44.153] [DEBUG] QUERY OK db=82.0ms idle=75.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:42Z", "UNKNOWN", "sim_iccid", 77056, ~N[2026-08-21 07:23:44], ~N[2026-08-21 07:23:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:44.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782056, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:44], updated_at: ~N[2026-08-21 07:23:44]}} [2026-08-21 07:23:44.153] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:23:42Z", "value" => "UNKNOWN"} [2026-08-21 07:23:44.214] [DEBUG] QUERY OK db=59.8ms idle=83.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:42Z", "UNKNOWN", "sim_imsi", 77056, ~N[2026-08-21 07:23:44], ~N[2026-08-21 07:23:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:44.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782058, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:44], updated_at: ~N[2026-08-21 07:23:44]}} [2026-08-21 07:23:44.214] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:23:42Z", "value" => "UNKNOWN"} [2026-08-21 07:23:44.271] [DEBUG] QUERY OK db=55.6ms idle=61.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:42Z", "UNKNOWN", "sim_iccid2", 77056, ~N[2026-08-21 07:23:44], ~N[2026-08-21 07:23:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:44.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782060, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:44], updated_at: ~N[2026-08-21 07:23:44]}} [2026-08-21 07:23:44.273] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:23:42Z", "value" => "UNKNOWN"} [2026-08-21 07:23:44.349] [DEBUG] QUERY OK db=73.7ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:42Z", "UNKNOWN", "sim_imsi2", 77056, ~N[2026-08-21 07:23:44], ~N[2026-08-21 07:23:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:44.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782062, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:44], updated_at: ~N[2026-08-21 07:23:44]}} [2026-08-21 07:23:44.350] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:23:42Z", "value" => "26"} [2026-08-21 07:23:44.397] [DEBUG] QUERY OK db=45.7ms queue=0.6ms idle=79.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:42Z", "26", "data_usage_mb", 77056, ~N[2026-08-21 07:23:44], ~N[2026-08-21 07:23:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:44.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782065, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:44], updated_at: ~N[2026-08-21 07:23:44]}} [2026-08-21 07:23:44.398] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:23:42Z", "value" => "0"} [2026-08-21 07:23:44.463] [DEBUG] QUERY OK db=64.0ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23:42Z", "0", "mobile_data_mb", 77056, ~N[2026-08-21 07:23:44], ~N[2026-08-21 07:23:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:44.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782067, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:44], updated_at: ~N[2026-08-21 07:23:44]}} [2026-08-21 07:23:44.464] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:23: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:23:44.629] [DEBUG] QUERY OK db=164.7ms idle=67.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:23: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77056, ~N[2026-08-21 07:23:44], ~N[2026-08-21 07:23:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:23:44.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782069, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:23:42Z", message: nil, status_log_id: 77056, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:23:44], updated_at: ~N[2026-08-21 07:23:44]}} [2026-08-21 07:24:02.866] [INFO ] GET /admin/settlements/summary [2026-08-21 07:24:02.931] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 07:24:02.956] [DEBUG] QUERY OK source="users_tokens" db=2.2ms queue=1.8ms idle=1181.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:24:02.948957Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 07:24:02.995] [DEBUG] QUERY OK source="core_transactions" db=2.3ms queue=0.1ms idle=39.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:03.001] [DEBUG] QUERY OK source="merchant_adjustments" db=1.4ms queue=1.5ms idle=31.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:03.012] [DEBUG] QUERY OK source="core_transactions" db=2.9ms idle=14.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:03.014] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.9ms idle=11.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:03.103] [INFO ] Sent 200 in 237ms [2026-08-21 07:24:05.048] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "GwF-DjU2Dj83WBMQUQRCAh4aKCtvciwyuXFLAwWUM3esdu0SoNNyWAVV", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 07:24:05.244] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "nY8BtAYjzkvc5qrQqTfR83zd", "live_socket_id" => "users_sessions:_gyWJnb72cBNLoly6C0mOch11oXZNsn0EVBfto7MVeo=", "user_token" => <<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>} [2026-08-21 07:24:05.246] [DEBUG] QUERY OK source="users_tokens" db=0.8ms idle=478.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)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:24:05.245059Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 07:24:05.247] [DEBUG] QUERY OK source="core_transactions" db=0.7ms idle=1212.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:05.248] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=254.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:05.250] [DEBUG] QUERY OK source="core_transactions" db=0.9ms idle=1.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:05.251] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=0.7ms idle=1.7ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:05.252] [DEBUG] Replied in 7ms [2026-08-21 07:24:06.407] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:24:06.408] [DEBUG] Replied in 880µs [2026-08-21 07:24:07.037] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:24:07.037] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T07:24:06Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T07:24:06Z","value":"6"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T07:24:06Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T07:24:06Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T07:24:06Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T07:24:06Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T07:24:06Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T07:24:06Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T07:24:06Z","vendor":"MoreFun"} [2026-08-21 07:24:07.037] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:24:06Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:24:06Z", "value" => "6"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:24:06Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:24:06Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:24:06Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:24:06Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:24:06Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:24:06Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:24:06Z", "vendor" => "MoreFun"} [2026-08-21 07:24:07.037] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 07:24:07.037] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:24:07.037] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 07:24:07.048] [DEBUG] QUERY OK source="parameter_templates" db=10.6ms idle=31.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-08-21 07:24:07.049] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=12.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 07:24:07.054] [DEBUG] QUERY OK source="parameter_template_values" db=4.3ms idle=8.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-08-21 07:24:07.061] [DEBUG] QUERY OK source="parameter_definitions" db=2.3ms queue=4.9ms idle=5.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-08-21 07:24:07.066] [DEBUG] QUERY OK source="pos_terminal" db=1.7ms queue=2.1ms idle=8.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 07:24:07.103] [DEBUG] QUERY OK source="pos_merchant" db=35.4ms queue=0.4ms idle=5.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 07:24:07.104] [DEBUG] QUERY OK db=0.5ms queue=1.0ms idle=1074.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 ["626165170000000"] [2026-08-21 07:24:07.107] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 07:24:07.113] [DEBUG] QUERY OK source="pos_terminal_data" db=1.2ms queue=2.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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 07:24:07.116] [DEBUG] QUERY OK source="address" db=1.7ms queue=0.1ms idle=11.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 07:24:07.116] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 07:24:07.121] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 07:24:07.176] [DEBUG] QUERY OK db=52.0ms queue=1.3ms idle=9.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "4fc5a5f6c4cebdbb879343fc7d948545544632b502a0602fd142d5c2a5ff4a8b", 1124, 938, ~U[2026-08-21 07:24:07Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 07:24:07], ~N[2026-08-21 07:24:07]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 07:24:07.176] [INFO ] AutoPushService: Created push log 48377 for MF919 params.zip [2026-08-21 07:24:07.176] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1124, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 07:24:07.176] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:24:07.177] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 07:24:07.179] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms idle=61.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 07:24:07.182] [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-08-21 07:24:07.230] [DEBUG] QUERY OK db=45.5ms queue=1.7ms idle=7.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d1d4b70f6074cd5e998b685931509f4a05656a27e96f6283b18e089af25bc260", 6530, 17947, ~U[2026-08-21 07:24:07Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 07:24:07], ~N[2026-08-21 07:24:07]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 07:24:07.230] [INFO ] AutoPushService: Created push log 48379 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 07:24:07.230] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 6530, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 07:24:07.231] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:24:07.231] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 07:24:07.237] [DEBUG] QUERY OK source="config_file_versions" db=5.6ms idle=52.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 07:24:07.237] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 07:24:07.239] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms 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"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 07:24:07.240] [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-08-21 07:24:07.245] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 07:24:07.245] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:24:07.245] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:24:07.250] [DEBUG] QUERY OK source="config_file_versions" db=4.4ms idle=8.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-08-21 07:24:07.253] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:24:07.253] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 07:24:07.260] [DEBUG] QUERY OK source="tms_terminals" db=6.6ms idle=14.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:24:07.372] [DEBUG] QUERY OK source="tms_terminals" db=67.8ms queue=43.4ms idle=10.8ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 07:24:07], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:24:07.372] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:24:07.372] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:24:07.372] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:24:07.373] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:24:07.372] [INFO ] Event published: terminal_updated [2026-08-21 07:24:07.376] [DEBUG] QUERY OK source="terminal_group_memberships" db=3.2ms idle=112.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:24:07], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:24:07.380] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms queue=0.1ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:24:07.385] [DEBUG] QUERY OK source="terminal_group_rules" db=5.2ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:24:07.385] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:24:07.424] [DEBUG] QUERY OK source="tms_terminals" db=6.3ms queue=40.5ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 07:24:07], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:24:07.427] [DEBUG] QUERY OK source="parameter_templates" db=3.0ms idle=38.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-08-21 07:24:07.428] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=3.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-08-21 07:24:07.430] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=1.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:24:07.430] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 07:24:07.533] [DEBUG] QUERY OK source="parameter_push_logs" db=102.4ms idle=1.5ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-08-21 06:54:07]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 07:24:07.533] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 07:24:07.536] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 07:24:07.538] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=107.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-08-21 07:24:07.542] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms 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-08-21 07:24:07.543] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:24:07.545] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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-08-21 07:24:07.634] [DEBUG] QUERY OK source="tms_terminals" db=47.1ms queue=41.4ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:24:07], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:24:07.682] [DEBUG] QUERY OK db=46.9ms idle=90.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T07:24:06Z", ~N[2026-08-21 07:24:07], ~N[2026-08-21 07:24:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:24:07.686] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77058, oid: "organization_id", upload_time: "2026-08-21T07:24:06Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:07], updated_at: ~N[2026-08-21 07:24:07]} [2026-08-21 07:24:07.686] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:24:06Z", "value" => "online"} [2026-08-21 07:24:07.737] [DEBUG] QUERY OK db=49.1ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T07:24:06Z", "online", "status", 77058, ~N[2026-08-21 07:24:07], ~N[2026-08-21 07:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:07.737] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782070, itemkey: "status", value: "online", timestamp: "2026-08-21T07:24:06Z", message: "Terminal status update", status_log_id: 77058, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:07], updated_at: ~N[2026-08-21 07:24:07]}} [2026-08-21 07:24:07.737] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 07:24:07.737] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:24:06Z", "value" => "6"} [2026-08-21 07:24:07.822] [DEBUG] QUERY OK db=81.6ms queue=0.2ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T07:24:06Z", "6", "battery", 77058, ~N[2026-08-21 07:24:07], ~N[2026-08-21 07:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:07.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782072, itemkey: "battery", value: "6", timestamp: "2026-08-21T07:24:06Z", message: "Battery level", status_log_id: 77058, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:07], updated_at: ~N[2026-08-21 07:24:07]}} [2026-08-21 07:24:07.823] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:24:06Z", "value" => "online"} [2026-08-21 07:24:07.826] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD"]} [2026-08-21 07:24:07.830] [DEBUG] QUERY OK source="core_transactions" db=1.5ms queue=2.0ms idle=3.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:07.872] [DEBUG] QUERY OK source="merchant_adjustments" db=41.1ms queue=0.5ms idle=0.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:07.874] [DEBUG] QUERY OK source="core_transactions" db=1.8ms idle=0.4ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:07.880] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=3.3ms idle=2.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:07.881] [DEBUG] Replied in 55ms [2026-08-21 07:24:07.904] [DEBUG] QUERY OK db=81.0ms idle=87.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T07:24:06Z", "online", "network", 77058, ~N[2026-08-21 07:24:07], ~N[2026-08-21 07:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:07.904] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782074, itemkey: "network", value: "online", timestamp: "2026-08-21T07:24:06Z", message: "Network connectivity", status_log_id: 77058, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:07], updated_at: ~N[2026-08-21 07:24:07]}} [2026-08-21 07:24:07.908] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 07:24:07.908] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:24:06Z", "value" => "0"} [2026-08-21 07:24:07.971] [DEBUG] QUERY OK db=61.8ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T07:24:06Z", "0", "cpu", 77058, ~N[2026-08-21 07:24:07], ~N[2026-08-21 07:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:07.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782076, itemkey: "cpu", value: "0", timestamp: "2026-08-21T07:24:06Z", message: "CPU usage percentage", status_log_id: 77058, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:07], updated_at: ~N[2026-08-21 07:24:07]}} [2026-08-21 07:24:07.971] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:24:06Z", "value" => "1.0.0"} [2026-08-21 07:24:08.039] [DEBUG] QUERY OK db=68.0ms idle=67.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T07:24:06Z", "1.0.0", "parameter_config", 77058, ~N[2026-08-21 07:24:07], ~N[2026-08-21 07:24:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:08.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782078, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T07:24:06Z", message: "Current parameters version", status_log_id: 77058, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:07], updated_at: ~N[2026-08-21 07:24:07]}} [2026-08-21 07:24:08.040] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:24:06Z", "value" => "1.0.1"} [2026-08-21 07:24:08.124] [DEBUG] QUERY OK db=83.4ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T07:24:06Z", "1.0.1", "emv_config", 77058, ~N[2026-08-21 07:24:08], ~N[2026-08-21 07:24:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:08.124] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782080, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T07:24:06Z", message: "Current EMV config version", status_log_id: 77058, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:08], updated_at: ~N[2026-08-21 07:24:08]}} [2026-08-21 07:24:08.124] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:24:06Z", "value" => ""} [2026-08-21 07:24:08.187] [DEBUG] QUERY OK db=59.1ms queue=2.0ms idle=84.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T07:24:06Z", "keys_config", 77058, ~N[2026-08-21 07:24:08], ~N[2026-08-21 07:24:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:08.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782082, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T07:24:06Z", message: "Current keys config version", status_log_id: 77058, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:08], updated_at: ~N[2026-08-21 07:24:08]}} [2026-08-21 07:24:08.187] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:24:06Z", "value" => "3.8.7.3"} [2026-08-21 07:24:08.248] [DEBUG] QUERY OK db=60.7ms idle=63.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T07:24:06Z", "3.8.7.3", "application", 77058, ~N[2026-08-21 07:24:08], ~N[2026-08-21 07:24:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:08.249] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782084, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T07:24:06Z", message: "Current application version", status_log_id: 77058, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:08], updated_at: ~N[2026-08-21 07:24:08]}} [2026-08-21 07:24:08.249] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:24:07Z"} [2026-08-21 07:24:08.250] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:24:07Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 19, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:24:08.362] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => ""} [2026-08-21 07:24:08.366] [DEBUG] QUERY OK source="core_transactions" db=1.7ms queue=0.1ms idle=178.1ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:08.369] [DEBUG] QUERY OK source="merchant_adjustments" db=1.1ms idle=119.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:08.376] [DEBUG] QUERY OK source="core_transactions" db=6.3ms idle=4.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:08.381] [DEBUG] QUERY OK source="tid_masters" db=2.8ms queue=1.4ms idle=7.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:08.381] [DEBUG] Replied in 19ms [2026-08-21 07:24:09.958] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["VISA"]} [2026-08-21 07:24:09.966] [DEBUG] QUERY OK source="core_transactions" db=1.5ms queue=1.6ms idle=1581.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "VISA"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:09.971] [DEBUG] QUERY OK source="merchant_adjustments" db=3.4ms idle=946.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:10.007] [DEBUG] QUERY OK source="core_transactions" db=30.8ms queue=0.5ms idle=9.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:10.017] [DEBUG] QUERY OK source="tid_masters" db=4.0ms queue=2.8ms idle=36.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:10.018] [DEBUG] Replied in 59ms [2026-08-21 07:24:10.760] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "VISA"]} [2026-08-21 07:24:10.763] [DEBUG] QUERY OK source="core_transactions" db=1.3ms queue=1.9ms idle=745.7ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "VISA"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:10.765] [DEBUG] QUERY OK source="merchant_adjustments" db=1.2ms idle=731.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:10.807] [DEBUG] QUERY OK source="core_transactions" db=41.0ms queue=0.1ms idle=2.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:10.813] [DEBUG] QUERY OK source="tid_masters" db=1.9ms queue=3.3ms idle=42.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:10.813] [DEBUG] Replied in 53ms [2026-08-21 07:24:11.878] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "VISA", "AMEX"]} [2026-08-21 07:24:11.880] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=0.9ms idle=1065.1ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "VISA", "AMEX"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:11.881] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=846.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:11.921] [DEBUG] QUERY OK source="core_transactions" db=39.4ms idle=1.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:11.924] [DEBUG] QUERY OK source="tid_masters" db=1.0ms queue=0.7ms idle=41.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:11.925] [DEBUG] Replied in 47ms [2026-08-21 07:24:13.101] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "AMEX"]} [2026-08-21 07:24:13.105] [DEBUG] QUERY OK source="core_transactions" db=2.3ms queue=0.4ms idle=70.7ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "AMEX"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:13.110] [DEBUG] QUERY OK source="merchant_adjustments" db=0.9ms idle=61.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:13.146] [DEBUG] QUERY OK source="core_transactions" db=35.8ms idle=5.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:13.148] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.7ms idle=40.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:13.148] [DEBUG] Replied in 47ms [2026-08-21 07:24:13.373] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:24:13.373] [INFO ] Incoming JSON payload: {"oid":"a9d19451-0693-420a-898f-fda7fdab6734","sn":"98251226730001","uploadTime":"2026-08-21T07:24:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:24:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:24:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:24:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:24:12Z"},{"itemkey":"ram_free_mb","value":"890","timestamp":"2026-08-21T07:24:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:24:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:24:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:24:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:24:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:24:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:24:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:24:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:24:12Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:24:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:24: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:24:13.377] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a9d19451-0693-420a-898f-fda7fdab6734", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:24:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:24:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:24:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:24:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:24:12Z", "value" => "890"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:24:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:24:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:24:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:24:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:24:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:24:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:24:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:24:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:24:12Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:24:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:24: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:24:12Z", "vendor" => "morefun"} [2026-08-21 07:24:13.378] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:24:13.378] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:24:13.378] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:24:13.380] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=232.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-08-21 07:24:13.381] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=1.0ms idle=231.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 07:24:13.381] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:24:13.385] [DEBUG] QUERY OK source="tms_terminals" db=3.5ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:24:13.417] [DEBUG] QUERY OK source="tms_terminals" db=31.7ms idle=4.1ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 07:24:13], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:24:13.417] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:24:13.418] [INFO ] Event published: terminal_updated [2026-08-21 07:24:13.418] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:24:13.418] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:24:13.418] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:24:13.419] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.9ms queue=0.2ms idle=32.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:24:13], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:24:13.422] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:24:13.426] [DEBUG] QUERY OK source="terminal_group_rules" db=3.8ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:24:13.427] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:24:13.511] [DEBUG] QUERY OK source="tms_terminals" db=49.0ms queue=41.7ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 07:24:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:24:13.511] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:24:13.514] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:24:13.561] [DEBUG] QUERY OK source="tms_terminals" db=45.4ms queue=1.6ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:24:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:24:13.603] [DEBUG] QUERY OK db=39.3ms idle=49.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a9d19451-0693-420a-898f-fda7fdab6734", "2026-08-21T07:24:12Z", ~N[2026-08-21 07:24:13], ~N[2026-08-21 07:24:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:24:13.603] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77060, oid: "a9d19451-0693-420a-898f-fda7fdab6734", upload_time: "2026-08-21T07:24:12Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:13], updated_at: ~N[2026-08-21 07:24:13]} [2026-08-21 07:24:13.603] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:24:12Z", "value" => "morefun"} [2026-08-21 07:24:13.646] [DEBUG] QUERY OK db=42.4ms queue=0.3ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:12Z", "morefun", "vendor", 77060, ~N[2026-08-21 07:24:13], ~N[2026-08-21 07:24:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:13.647] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782086, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:13], updated_at: ~N[2026-08-21 07:24:13]}} [2026-08-21 07:24:13.647] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:24:12Z", "value" => "kiosk_launcher"} [2026-08-21 07:24:13.718] [DEBUG] QUERY OK db=69.5ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:12Z", "kiosk_launcher", "model", 77060, ~N[2026-08-21 07:24:13], ~N[2026-08-21 07:24:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:13.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782088, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:13], updated_at: ~N[2026-08-21 07:24:13]}} [2026-08-21 07:24:13.723] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:24:12Z", "value" => "1.0"} [2026-08-21 07:24:13.824] [DEBUG] QUERY OK db=100.5ms idle=77.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:12Z", "1.0", "app_version", 77060, ~N[2026-08-21 07:24:13], ~N[2026-08-21 07:24:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:13.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782090, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:13], updated_at: ~N[2026-08-21 07:24:13]}} [2026-08-21 07:24:13.825] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:24:12Z", "value" => "13"} [2026-08-21 07:24:13.894] [DEBUG] QUERY OK db=68.5ms idle=107.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:12Z", "13", "android_version", 77060, ~N[2026-08-21 07:24:13], ~N[2026-08-21 07:24:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:13.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782092, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:13], updated_at: ~N[2026-08-21 07:24:13]}} [2026-08-21 07:24:13.895] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:24:12Z", "value" => "890"} [2026-08-21 07:24:13.963] [DEBUG] QUERY OK db=67.3ms idle=70.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:12Z", "890", "ram_free_mb", 77060, ~N[2026-08-21 07:24:13], ~N[2026-08-21 07:24:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:13.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782094, itemkey: "ram_free_mb", value: "890", timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:13], updated_at: ~N[2026-08-21 07:24:13]}} [2026-08-21 07:24:13.963] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:24:12Z", "value" => "WIFI"} [2026-08-21 07:24:14.023] [DEBUG] QUERY OK db=58.8ms idle=69.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:12Z", "WIFI", "network_type", 77060, ~N[2026-08-21 07:24:13], ~N[2026-08-21 07:24:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:14.023] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782096, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:13], updated_at: ~N[2026-08-21 07:24:13]}} [2026-08-21 07:24:14.023] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:24:12Z", "value" => "true"} [2026-08-21 07:24:14.156] [DEBUG] QUERY OK db=133.0ms idle=60.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:12Z", "true", "kiosk_active", 77060, ~N[2026-08-21 07:24:14], ~N[2026-08-21 07:24:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:14.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782098, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:14], updated_at: ~N[2026-08-21 07:24:14]}} [2026-08-21 07:24:14.157] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:24:12Z", "value" => ""} [2026-08-21 07:24:14.187] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD"]} [2026-08-21 07:24:14.194] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=4.9ms idle=31.1ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:14.236] [DEBUG] QUERY OK source="merchant_adjustments" db=38.8ms queue=2.2ms idle=0.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:14.238] [DEBUG] QUERY OK source="core_transactions" db=1.7ms queue=0.3ms idle=0.4ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:14.241] [DEBUG] QUERY OK source="tid_masters" db=0.9ms queue=1.9ms idle=0.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:14.241] [DEBUG] Replied in 54ms [2026-08-21 07:24:14.259] [DEBUG] QUERY OK db=101.9ms idle=109.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:24:12Z", "sim_operator", 77060, ~N[2026-08-21 07:24:14], ~N[2026-08-21 07:24:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:14.259] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782100, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:14], updated_at: ~N[2026-08-21 07:24:14]}} [2026-08-21 07:24:14.260] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:24:12Z", "value" => "UNKNOWN"} [2026-08-21 07:24:14.357] [DEBUG] QUERY OK db=97.4ms idle=18.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:12Z", "UNKNOWN", "sim_number", 77060, ~N[2026-08-21 07:24:14], ~N[2026-08-21 07:24:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:14.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782102, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:14], updated_at: ~N[2026-08-21 07:24:14]}} [2026-08-21 07:24:14.358] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:24:12Z", "value" => "UNKNOWN"} [2026-08-21 07:24:14.418] [DEBUG] QUERY OK db=59.3ms idle=99.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:12Z", "UNKNOWN", "sim_iccid", 77060, ~N[2026-08-21 07:24:14], ~N[2026-08-21 07:24:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:14.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782104, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:14], updated_at: ~N[2026-08-21 07:24:14]}} [2026-08-21 07:24:14.418] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:24:12Z", "value" => "UNKNOWN"} [2026-08-21 07:24:14.479] [DEBUG] QUERY OK db=60.1ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:12Z", "UNKNOWN", "sim_imsi", 77060, ~N[2026-08-21 07:24:14], ~N[2026-08-21 07:24:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:14.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782106, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:14], updated_at: ~N[2026-08-21 07:24:14]}} [2026-08-21 07:24:14.479] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:24:12Z", "value" => "UNKNOWN"} [2026-08-21 07:24:14.560] [DEBUG] QUERY OK db=80.3ms idle=61.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:12Z", "UNKNOWN", "sim_iccid2", 77060, ~N[2026-08-21 07:24:14], ~N[2026-08-21 07:24:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:14.560] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782108, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:14], updated_at: ~N[2026-08-21 07:24:14]}} [2026-08-21 07:24:14.560] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:24:12Z", "value" => "UNKNOWN"} [2026-08-21 07:24:14.597] [DEBUG] QUERY OK db=36.2ms idle=81.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:12Z", "UNKNOWN", "sim_imsi2", 77060, ~N[2026-08-21 07:24:14], ~N[2026-08-21 07:24:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:14.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782110, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:14], updated_at: ~N[2026-08-21 07:24:14]}} [2026-08-21 07:24:14.597] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:24:12Z", "value" => "26"} [2026-08-21 07:24:14.651] [DEBUG] QUERY OK db=52.1ms queue=0.8ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:12Z", "26", "data_usage_mb", 77060, ~N[2026-08-21 07:24:14], ~N[2026-08-21 07:24:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:14.652] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782112, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:14], updated_at: ~N[2026-08-21 07:24:14]}} [2026-08-21 07:24:14.652] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:24:12Z", "value" => "0"} [2026-08-21 07:24:14.687] [DEBUG] QUERY OK db=34.5ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:12Z", "0", "mobile_data_mb", 77060, ~N[2026-08-21 07:24:14], ~N[2026-08-21 07:24:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:14.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782114, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:14], updated_at: ~N[2026-08-21 07:24:14]}} [2026-08-21 07:24:14.689] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:24: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:24:14.782] [DEBUG] QUERY OK db=91.8ms queue=0.4ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77060, ~N[2026-08-21 07:24:14], ~N[2026-08-21 07:24:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:14.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782116, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:24:12Z", message: nil, status_log_id: 77060, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:14], updated_at: ~N[2026-08-21 07:24:14]}} [2026-08-21 07:24:15.351] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY"]} [2026-08-21 07:24:15.359] [DEBUG] QUERY OK source="core_transactions" db=1.2ms queue=6.4ms idle=569.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:15.363] [DEBUG] QUERY OK source="merchant_adjustments" db=1.7ms queue=1.2ms idle=307.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:15.402] [DEBUG] QUERY OK source="core_transactions" db=36.8ms idle=6.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:15.406] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=2.7ms idle=40.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:15.406] [DEBUG] Replied in 55ms [2026-08-21 07:24:16.083] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS"]} [2026-08-21 07:24:16.084] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=0.6ms idle=677.1ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:16.086] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms idle=28.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:16.126] [DEBUG] QUERY OK source="core_transactions" db=39.9ms idle=1.4ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:16.128] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=0.8ms idle=40.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:16.129] [DEBUG] Replied in 46ms [2026-08-21 07:24:17.137] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_merchant_mid" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"]} [2026-08-21 07:24:17.139] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=0.8ms idle=378.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:17.140] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=81.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:17.182] [DEBUG] QUERY OK source="core_transactions" db=40.7ms idle=1.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:17.183] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.5ms idle=42.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:17.184] [DEBUG] Replied in 46ms [2026-08-21 07:24:19.210] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch980308009433_20260821072418890","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T07:24:19Z"} [2026-08-21 07:24:19.210] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch980308009433_20260821072418890", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:24:19Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 24, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 57, 56, 48, 51, 48, 56, 48, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:24:19.601] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["merchant_mid"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "425590250000000", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"]} [2026-08-21 07:24:19.604] [DEBUG] QUERY OK source="core_transactions" db=1.9ms queue=1.1ms idle=568.3ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` = ?) AND (c0.`scheme_name` IN (?,?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "MASTERCARD", "UNIONPAY", "DINERS", "AANI"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:19.606] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=1.0ms idle=535.9ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` = ?) [~D[2026-07-22], ~D[2026-08-21], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:19.647] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=39.6ms idle=2.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?)) ["425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.merchant_display_name/1, at: lib/settlement_core/settlement_summary_builder.ex:196 [2026-08-21 07:24:19.648] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=41.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:19.688] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=38.9ms idle=1.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:19.688] [DEBUG] Replied in 87ms [2026-08-21 07:24:21.157] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["merchant_mid"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"]} [2026-08-21 07:24:21.163] [DEBUG] QUERY OK source="core_transactions" db=1.2ms queue=3.8ms idle=126.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:21.165] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms idle=87.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:21.204] [DEBUG] QUERY OK source="core_transactions" db=38.5ms idle=2.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:21.206] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.7ms idle=39.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:21.206] [DEBUG] Replied in 48ms [2026-08-21 07:24:23.030] [DEBUG] HANDLE EVENT "toggle_type_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:24:23.030] [DEBUG] Replied in 227µs [2026-08-21 07:24:24.614] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["transaction_types"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["SALE"]} [2026-08-21 07:24:24.618] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=1.7ms idle=1529.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) AND (c0.`transaction_type` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI", "SALE"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:24.619] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=0.1ms idle=530.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:24.660] [DEBUG] QUERY OK source="core_transactions" db=40.8ms idle=1.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:24.662] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=1.6ms idle=41.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:24.663] [DEBUG] Replied in 48ms [2026-08-21 07:24:25.241] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["transaction_types"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["SALE", "REFUND"]} [2026-08-21 07:24:25.250] [DEBUG] QUERY OK source="core_transactions" db=5.8ms queue=2.7ms idle=579.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) AND (c0.`transaction_type` IN (?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI", "SALE", "REFUND"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:25.251] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=158.7ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:25.297] [DEBUG] QUERY OK source="core_transactions" db=45.2ms queue=0.3ms idle=1.2ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:25.299] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=0.6ms idle=46.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:25.299] [DEBUG] Replied in 58ms [2026-08-21 07:24:25.870] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["transaction_types"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:24:25.874] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=0.6ms idle=575.1ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:25.877] [DEBUG] QUERY OK source="merchant_adjustments" db=0.7ms idle=577.0ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:25.915] [DEBUG] QUERY OK source="core_transactions" db=37.4ms idle=3.5ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:25.918] [DEBUG] QUERY OK source="tid_masters" db=1.6ms queue=0.9ms idle=38.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:25.918] [DEBUG] Replied in 48ms [2026-08-21 07:24:27.095] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["transaction_types"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["SALE", "REVERSAL"]} [2026-08-21 07:24:27.102] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=1.8ms idle=66.3ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) AND (c0.`transaction_type` IN (?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI", "SALE", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:27.143] [DEBUG] QUERY OK source="merchant_adjustments" db=36.3ms idle=4.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:27.144] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=40.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:27.147] [DEBUG] QUERY OK source="tid_masters" db=1.3ms queue=1.5ms idle=1.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:27.148] [DEBUG] Replied in 53ms [2026-08-21 07:24:27.572] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:24:07Z"} [2026-08-21 07:24:27.575] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:24:07Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 20, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:24:27.583] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:24:07Z"} [2026-08-21 07:24:27.584] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:24:07Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 22, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:24:29.639] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["transaction_types"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:24:29.641] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=0.9ms idle=607.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:29.642] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms idle=530.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:29.682] [DEBUG] QUERY OK source="core_transactions" db=38.9ms idle=2.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:29.683] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.5ms idle=40.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:29.684] [DEBUG] Replied in 45ms [2026-08-21 07:24:30.624] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["transaction_types"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["SALE", "REFUND"]} [2026-08-21 07:24:30.630] [DEBUG] QUERY OK source="core_transactions" db=1.2ms queue=3.9ms idle=941.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) AND (c0.`transaction_type` IN (?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI", "SALE", "REFUND"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:30.631] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=515.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:30.677] [DEBUG] QUERY OK source="core_transactions" db=45.3ms idle=1.5ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:30.683] [DEBUG] QUERY OK source="tid_masters" db=1.8ms queue=4.1ms idle=46.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:30.683] [DEBUG] Replied in 59ms [2026-08-21 07:24:31.259] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["transaction_types"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["SALE"]} [2026-08-21 07:24:31.261] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=1.3ms idle=297.4ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) AND (c0.`transaction_type` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI", "SALE"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:31.262] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms idle=142.9ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:31.303] [DEBUG] QUERY OK source="core_transactions" db=40.3ms decode=0.3ms idle=1.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:31.307] [DEBUG] QUERY OK source="tid_masters" db=1.3ms queue=1.4ms idle=42.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:31.307] [DEBUG] Replied in 48ms [2026-08-21 07:24:36.805] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["transaction_types"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["SALE", "REFUND"]} [2026-08-21 07:24:36.806] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.4ms idle=773.1ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) AND (c0.`transaction_type` IN (?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI", "SALE", "REFUND"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:36.807] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=664.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:36.848] [DEBUG] QUERY OK source="core_transactions" db=40.0ms idle=1.2ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:36.850] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=0.4ms idle=41.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:36.850] [DEBUG] Replied in 45ms [2026-08-21 07:24:37.955] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["transaction_types"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:24:37.957] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.4ms idle=1105.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:37.957] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=812.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:37.998] [DEBUG] QUERY OK source="core_transactions" db=39.8ms idle=1.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:38.000] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.9ms idle=40.7ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:38.000] [DEBUG] Replied in 44ms [2026-08-21 07:24:40.385] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["transaction_types"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["SALE", "REFUND"]} [2026-08-21 07:24:40.388] [DEBUG] QUERY OK source="core_transactions" db=1.7ms queue=0.6ms idle=1231.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) AND (c0.`transaction_type` IN (?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI", "SALE", "REFUND"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:40.390] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms idle=231.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:40.429] [DEBUG] QUERY OK source="core_transactions" db=38.7ms idle=2.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:40.431] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=1.4ms idle=39.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:40.431] [DEBUG] Replied in 46ms [2026-08-21 07:24:42.926] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["transaction_types"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["REFUND"]} [2026-08-21 07:24:42.927] [DEBUG] QUERY OK source="core_transactions" db=0.6ms queue=0.5ms idle=894.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) AND (c0.`transaction_type` IN (?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI", "REFUND"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:42.928] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms idle=763.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:42.970] [DEBUG] QUERY OK source="core_transactions" db=41.5ms queue=0.1ms idle=1.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:42.972] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.6ms idle=42.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:42.972] [DEBUG] Replied in 46ms [2026-08-21 07:24:43.708] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:24:43.708] [INFO ] Incoming JSON payload: {"oid":"93229122-c689-4b72-8b66-95b253461251","sn":"98251226730001","uploadTime":"2026-08-21T07:24:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"ram_free_mb","value":"894","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:24:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:24:43.710] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "93229122-c689-4b72-8b66-95b253461251", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:24:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:24:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:24:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:24:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:24:43Z", "value" => "894"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:24:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:24:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:24:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:24:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:24:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:24:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:24:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:24:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:24:43Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:24:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:24:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:24:43Z", "vendor" => "morefun"} [2026-08-21 07:24:43.710] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:24:43.710] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:24:43.710] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:24:43.711] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=738.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-08-21 07:24:43.714] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms decode=0.4ms idle=544.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-08-21 07:24:43.715] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:24:43.716] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=4.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:24:43.716] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:24:43.758] [DEBUG] QUERY OK source="tms_terminals" db=39.2ms queue=0.8ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:24:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:24:43.758] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:24:43.759] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=42.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:24:43.788] [DEBUG] QUERY OK source="tms_terminals" db=28.9ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:24:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:24:43.858] [DEBUG] QUERY OK db=68.6ms queue=0.1ms idle=29.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "93229122-c689-4b72-8b66-95b253461251", "2026-08-21T07:24:43Z", ~N[2026-08-21 07:24:43], ~N[2026-08-21 07:24:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:24:43.858] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77063, oid: "93229122-c689-4b72-8b66-95b253461251", upload_time: "2026-08-21T07:24:43Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:43], updated_at: ~N[2026-08-21 07:24:43]} [2026-08-21 07:24:43.858] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:24:43Z", "value" => "morefun"} [2026-08-21 07:24:43.902] [DEBUG] QUERY OK db=43.2ms idle=70.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "morefun", "vendor", 77063, ~N[2026-08-21 07:24:43], ~N[2026-08-21 07:24:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:43.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782119, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:43], updated_at: ~N[2026-08-21 07:24:43]}} [2026-08-21 07:24:43.902] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:24:43Z", "value" => "kiosk_launcher"} [2026-08-21 07:24:43.988] [DEBUG] QUERY OK db=85.6ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "kiosk_launcher", "model", 77063, ~N[2026-08-21 07:24:43], ~N[2026-08-21 07:24:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:43.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782121, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:43], updated_at: ~N[2026-08-21 07:24:43]}} [2026-08-21 07:24:43.991] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:24:43Z", "value" => "1.0"} [2026-08-21 07:24:44.037] [DEBUG] QUERY OK db=46.1ms queue=0.4ms idle=88.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "1.0", "app_version", 77063, ~N[2026-08-21 07:24:43], ~N[2026-08-21 07:24:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:44.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782123, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:43], updated_at: ~N[2026-08-21 07:24:43]}} [2026-08-21 07:24:44.039] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:24:43Z", "value" => "13"} [2026-08-21 07:24:44.087] [DEBUG] QUERY OK db=47.2ms idle=51.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "13", "android_version", 77063, ~N[2026-08-21 07:24:44], ~N[2026-08-21 07:24:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:44.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782125, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:44], updated_at: ~N[2026-08-21 07:24:44]}} [2026-08-21 07:24:44.087] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:24:43Z", "value" => "894"} [2026-08-21 07:24:44.161] [DEBUG] QUERY OK db=73.7ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "894", "ram_free_mb", 77063, ~N[2026-08-21 07:24:44], ~N[2026-08-21 07:24:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:44.161] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782127, itemkey: "ram_free_mb", value: "894", timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:44], updated_at: ~N[2026-08-21 07:24:44]}} [2026-08-21 07:24:44.162] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:24:43Z", "value" => "WIFI"} [2026-08-21 07:24:44.188] [DEBUG] QUERY OK db=26.2ms idle=75.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "WIFI", "network_type", 77063, ~N[2026-08-21 07:24:44], ~N[2026-08-21 07:24:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:44.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782129, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:44], updated_at: ~N[2026-08-21 07:24:44]}} [2026-08-21 07:24:44.189] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:24:43Z", "value" => "true"} [2026-08-21 07:24:44.229] [DEBUG] QUERY OK db=39.6ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "true", "kiosk_active", 77063, ~N[2026-08-21 07:24:44], ~N[2026-08-21 07:24:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:44.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782131, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:44], updated_at: ~N[2026-08-21 07:24:44]}} [2026-08-21 07:24:44.229] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:24:43Z", "value" => ""} [2026-08-21 07:24:44.278] [DEBUG] QUERY OK db=49.0ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:24:43Z", "sim_operator", 77063, ~N[2026-08-21 07:24:44], ~N[2026-08-21 07:24:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:44.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782133, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:44], updated_at: ~N[2026-08-21 07:24:44]}} [2026-08-21 07:24:44.280] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:24:43Z", "value" => "UNKNOWN"} [2026-08-21 07:24:44.333] [DEBUG] QUERY OK db=52.4ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "UNKNOWN", "sim_number", 77063, ~N[2026-08-21 07:24:44], ~N[2026-08-21 07:24:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:44.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782135, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:44], updated_at: ~N[2026-08-21 07:24:44]}} [2026-08-21 07:24:44.333] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:24:43Z", "value" => "UNKNOWN"} [2026-08-21 07:24:44.399] [DEBUG] QUERY OK db=65.4ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "UNKNOWN", "sim_iccid", 77063, ~N[2026-08-21 07:24:44], ~N[2026-08-21 07:24:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:44.400] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782137, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:44], updated_at: ~N[2026-08-21 07:24:44]}} [2026-08-21 07:24:44.400] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:24:43Z", "value" => "UNKNOWN"} [2026-08-21 07:24:44.450] [DEBUG] QUERY OK db=49.3ms idle=67.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "UNKNOWN", "sim_imsi", 77063, ~N[2026-08-21 07:24:44], ~N[2026-08-21 07:24:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:44.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782139, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:44], updated_at: ~N[2026-08-21 07:24:44]}} [2026-08-21 07:24:44.450] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:24:43Z", "value" => "UNKNOWN"} [2026-08-21 07:24:44.486] [DEBUG] QUERY OK db=34.7ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "UNKNOWN", "sim_iccid2", 77063, ~N[2026-08-21 07:24:44], ~N[2026-08-21 07:24:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:44.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782141, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:44], updated_at: ~N[2026-08-21 07:24:44]}} [2026-08-21 07:24:44.486] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:24:43Z", "value" => "UNKNOWN"} [2026-08-21 07:24:44.536] [DEBUG] QUERY OK db=49.7ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "UNKNOWN", "sim_imsi2", 77063, ~N[2026-08-21 07:24:44], ~N[2026-08-21 07:24:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:44.536] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782143, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:44], updated_at: ~N[2026-08-21 07:24:44]}} [2026-08-21 07:24:44.537] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:24:43Z", "value" => "26"} [2026-08-21 07:24:44.593] [DEBUG] QUERY OK db=56.4ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "26", "data_usage_mb", 77063, ~N[2026-08-21 07:24:44], ~N[2026-08-21 07:24:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:44.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782145, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:44], updated_at: ~N[2026-08-21 07:24:44]}} [2026-08-21 07:24:44.594] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:24:43Z", "value" => "0"} [2026-08-21 07:24:44.653] [DEBUG] QUERY OK db=59.1ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "0", "mobile_data_mb", 77063, ~N[2026-08-21 07:24:44], ~N[2026-08-21 07:24:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:44.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782147, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:44], updated_at: ~N[2026-08-21 07:24:44]}} [2026-08-21 07:24:44.654] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:24:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:24:44.727] [DEBUG] QUERY OK db=70.2ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:24:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77063, ~N[2026-08-21 07:24:44], ~N[2026-08-21 07:24:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:44.728] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782149, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:24:43Z", message: nil, status_log_id: 77063, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:44], updated_at: ~N[2026-08-21 07:24:44]}} [2026-08-21 07:24:46.064] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["transaction_types"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["REFUND", "REVERSAL"]} [2026-08-21 07:24:46.066] [DEBUG] QUERY OK source="core_transactions" db=0.6ms queue=0.4ms idle=883.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) AND (c0.`transaction_type` IN (?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:46.067] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms idle=881.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:46.108] [DEBUG] QUERY OK source="core_transactions" db=40.4ms idle=1.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:46.110] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.9ms idle=41.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:46.110] [DEBUG] Replied in 46ms [2026-08-21 07:24:46.721] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:24:46.722] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T07:24:46Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T07:24:46Z","value":"6"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T07:24:46Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T07:24:46Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T07:24:46Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T07:24:46Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T07:24:46Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T07:24:46Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T07:24:46Z","vendor":"MoreFun"} [2026-08-21 07:24:46.722] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:24:46Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:24:46Z", "value" => "6"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:24:46Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:24:46Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:24:46Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:24:46Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:24:46Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:24:46Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:24:46Z", "vendor" => "MoreFun"} [2026-08-21 07:24:46.722] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 07:24:46.722] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:24:46.722] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 07:24:46.726] [DEBUG] QUERY OK source="parameter_templates" db=3.1ms queue=0.1ms idle=612.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 07:24:46.728] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.1ms idle=538.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-08-21 07:24:46.730] [DEBUG] QUERY OK source="parameter_template_values" db=1.3ms queue=0.8ms 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-08-21 07:24:46.734] [DEBUG] QUERY OK source="parameter_definitions" db=2.2ms queue=1.1ms idle=2.7ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 07:24:46.736] [DEBUG] QUERY OK source="pos_terminal" db=1.5ms idle=5.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 07:24:46.778] [DEBUG] QUERY OK source="pos_merchant" db=40.2ms queue=0.1ms idle=3.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 07:24:46.780] [DEBUG] QUERY OK db=0.5ms queue=1.0ms idle=1746.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 ["626165170000000"] [2026-08-21 07:24:46.780] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 07:24:46.781] [DEBUG] QUERY OK source="pos_terminal_data" db=0.9ms 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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 07:24:46.784] [DEBUG] QUERY OK source="address" db=2.3ms idle=3.7ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 07:24:46.787] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 07:24:46.791] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 07:24:46.877] [DEBUG] QUERY OK db=82.8ms queue=0.8ms idle=11.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "291efc476d34644013a5da14337541c22b7cdae903c1cf920c37417df0543127", 1860, 939, ~U[2026-08-21 07:24:46Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 07:24:46], ~N[2026-08-21 07:24:46]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 07:24:46.878] [INFO ] AutoPushService: Created push log 48381 for MF919 params.zip [2026-08-21 07:24:46.878] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1860, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 07:24:46.878] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:24:46.878] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 07:24:46.881] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms queue=0.7ms idle=95.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-08-21 07:24:46.884] [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-08-21 07:24:46.946] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["transaction_types"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:24:46.949] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=1.2ms idle=65.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "UNIONPAY", "DINERS", "AANI"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:46.951] [DEBUG] QUERY OK db=65.4ms idle=8.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "227de8d15dddd575fd3707bb402bd95983ed872231c94a51b19caeff5e205d97", 1956, 17947, ~U[2026-08-21 07:24:46Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 07:24:46], ~N[2026-08-21 07:24:46]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 07:24:46.951] [INFO ] AutoPushService: Created push log 48383 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 07:24:46.951] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 1956, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 07:24:46.951] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:24:46.951] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 07:24:46.953] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms 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 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 07:24:46.953] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 07:24:46.955] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=0.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 07:24:46.956] [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-08-21 07:24:46.957] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 07:24:46.958] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:24:46.958] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:24:46.959] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=2.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 07:24:46.959] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:24:46.961] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 07:24:46.962] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=2.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:24:46.992] [DEBUG] QUERY OK source="merchant_adjustments" db=42.2ms idle=0.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:46.993] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=1.5ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:46.997] [DEBUG] QUERY OK source="tid_masters" db=1.9ms queue=1.1ms idle=0.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:46.997] [DEBUG] Replied in 50ms [2026-08-21 07:24:47.030] [DEBUG] QUERY OK source="tms_terminals" db=67.7ms idle=0.5ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 07:24:46], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:24:47.030] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:24:47.031] [INFO ] Event published: terminal_updated [2026-08-21 07:24:47.031] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:24:47.031] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:24:47.032] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:24:47.039] [DEBUG] QUERY OK source="terminal_group_memberships" db=7.7ms idle=34.5ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:24:47], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:24:47.040] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=9.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:24:47.041] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:24:47.041] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:24:47.111] [DEBUG] QUERY OK source="tms_terminals" db=30.6ms queue=40.7ms idle=0.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 07:24:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:24:47.113] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=70.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-08-21 07:24:47.115] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms 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-08-21 07:24:47.117] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=3.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:24:47.117] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 07:24:47.161] [DEBUG] QUERY OK source="parameter_push_logs" db=43.0ms idle=2.4ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-08-21 06:54:47]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 07:24:47.161] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 07:24:47.161] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 07:24:47.164] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 07:24:47.166] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms 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-08-21 07:24:47.166] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:24:47.168] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:24:47.230] [DEBUG] QUERY OK source="tms_terminals" db=20.2ms queue=41.2ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:24:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:24:47.288] [DEBUG] QUERY OK db=57.7ms queue=0.1ms idle=37.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T07:24:46Z", ~N[2026-08-21 07:24:47], ~N[2026-08-21 07:24:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:24:47.288] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77064, oid: "organization_id", upload_time: "2026-08-21T07:24:46Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:47], updated_at: ~N[2026-08-21 07:24:47]} [2026-08-21 07:24:47.288] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:24:46Z", "value" => "online"} [2026-08-21 07:24:47.322] [DEBUG] QUERY OK db=33.2ms idle=59.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T07:24:46Z", "online", "status", 77064, ~N[2026-08-21 07:24:47], ~N[2026-08-21 07:24:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:47.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782150, itemkey: "status", value: "online", timestamp: "2026-08-21T07:24:46Z", message: "Terminal status update", status_log_id: 77064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:47], updated_at: ~N[2026-08-21 07:24:47]}} [2026-08-21 07:24:47.322] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 07:24:47.323] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:24:46Z", "value" => "6"} [2026-08-21 07:24:47.389] [DEBUG] QUERY OK db=65.1ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T07:24:46Z", "6", "battery", 77064, ~N[2026-08-21 07:24:47], ~N[2026-08-21 07:24:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:47.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782152, itemkey: "battery", value: "6", timestamp: "2026-08-21T07:24:46Z", message: "Battery level", status_log_id: 77064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:47], updated_at: ~N[2026-08-21 07:24:47]}} [2026-08-21 07:24:47.390] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:24:46Z", "value" => "online"} [2026-08-21 07:24:47.437] [DEBUG] QUERY OK db=46.9ms idle=67.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T07:24:46Z", "online", "network", 77064, ~N[2026-08-21 07:24:47], ~N[2026-08-21 07:24:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:47.437] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782154, itemkey: "network", value: "online", timestamp: "2026-08-21T07:24:46Z", message: "Network connectivity", status_log_id: 77064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:47], updated_at: ~N[2026-08-21 07:24:47]}} [2026-08-21 07:24:47.437] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 07:24:47.438] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:24:46Z", "value" => "0"} [2026-08-21 07:24:47.519] [DEBUG] QUERY OK db=80.3ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T07:24:46Z", "0", "cpu", 77064, ~N[2026-08-21 07:24:47], ~N[2026-08-21 07:24:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:47.519] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782156, itemkey: "cpu", value: "0", timestamp: "2026-08-21T07:24:46Z", message: "CPU usage percentage", status_log_id: 77064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:47], updated_at: ~N[2026-08-21 07:24:47]}} [2026-08-21 07:24:47.519] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:24:46Z", "value" => "1.0.0"} [2026-08-21 07:24:47.595] [DEBUG] QUERY OK db=74.7ms queue=1.1ms 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-08-21T07:24:46Z", "1.0.0", "parameter_config", 77064, ~N[2026-08-21 07:24:47], ~N[2026-08-21 07:24:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:47.595] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782158, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T07:24:46Z", message: "Current parameters version", status_log_id: 77064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:47], updated_at: ~N[2026-08-21 07:24:47]}} [2026-08-21 07:24:47.596] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:24:46Z", "value" => "1.0.1"} [2026-08-21 07:24:47.632] [DEBUG] QUERY OK db=36.0ms idle=77.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T07:24:46Z", "1.0.1", "emv_config", 77064, ~N[2026-08-21 07:24:47], ~N[2026-08-21 07:24:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:47.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782160, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T07:24:46Z", message: "Current EMV config version", status_log_id: 77064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:47], updated_at: ~N[2026-08-21 07:24:47]}} [2026-08-21 07:24:47.632] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:24:46Z", "value" => ""} [2026-08-21 07:24:47.678] [DEBUG] QUERY OK db=43.4ms queue=0.8ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T07:24:46Z", "keys_config", 77064, ~N[2026-08-21 07:24:47], ~N[2026-08-21 07:24:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:47.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782162, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T07:24:46Z", message: "Current keys config version", status_log_id: 77064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:47], updated_at: ~N[2026-08-21 07:24:47]}} [2026-08-21 07:24:47.679] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:24:46Z", "value" => "3.8.7.3"} [2026-08-21 07:24:47.732] [DEBUG] QUERY OK db=52.6ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T07:24:46Z", "3.8.7.3", "application", 77064, ~N[2026-08-21 07:24:47], ~N[2026-08-21 07:24:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:24:47.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782164, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T07:24:46Z", message: "Current application version", status_log_id: 77064, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:24:47], updated_at: ~N[2026-08-21 07:24:47]}} [2026-08-21 07:24:47.733] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:24:46Z"} [2026-08-21 07:24:47.733] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:24:46Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 27, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:24:47.983] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "VISA", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:24:47.999] [DEBUG] QUERY OK source="core_transactions" db=3.3ms queue=2.6ms idle=314.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "VISA", "UNIONPAY", "DINERS", "AANI"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:48.002] [DEBUG] QUERY OK source="merchant_adjustments" db=1.5ms queue=1.0ms idle=267.9ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:48.041] [DEBUG] QUERY OK source="core_transactions" db=36.4ms queue=1.9ms idle=3.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:48.043] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.5ms idle=39.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:48.043] [DEBUG] Replied in 59ms [2026-08-21 07:24:48.517] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:24:48.522] [DEBUG] QUERY OK source="core_transactions" db=1.4ms queue=2.8ms idle=475.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:24:48.527] [DEBUG] QUERY OK source="merchant_adjustments" db=1.3ms idle=330.0ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:24:48.563] [DEBUG] QUERY OK source="core_transactions" db=35.2ms queue=0.5ms idle=5.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:24:48.568] [DEBUG] QUERY OK source="tid_masters" db=4.1ms queue=0.9ms idle=36.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:24:48.568] [DEBUG] Replied in 51ms [2026-08-21 07:25:07.265] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:24:46Z"} [2026-08-21 07:25:07.266] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:24:46Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 28, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:25:07.271] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:24:46Z"} [2026-08-21 07:25:07.274] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:24:46Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 29, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:25:07.574] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:24:07Z"} [2026-08-21 07:25:07.575] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:24:07Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 21, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:25:13.822] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:25:13.822] [INFO ] Incoming JSON payload: {"oid":"a747cee4-b0e2-42e6-8a68-d2781cfeb975","sn":"98251226730001","uploadTime":"2026-08-21T07:25:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:25:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:25:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:25:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:25:13Z"},{"itemkey":"ram_free_mb","value":"893","timestamp":"2026-08-21T07:25:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:25:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:25:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:25:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:25:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:25:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:25:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:25:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:25:13Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:25:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:25: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:25:13.823] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a747cee4-b0e2-42e6-8a68-d2781cfeb975", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:25:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:25:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:25:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:25:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:25:13Z", "value" => "893"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:25:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:25:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:25:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:25:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:25:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:25:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:25:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:25:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:25:13Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:25:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:25: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:25:13Z", "vendor" => "morefun"} [2026-08-21 07:25:13.824] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:25:13.824] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:25:13.824] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:25:13.826] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms idle=490.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-08-21 07:25:13.840] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.7ms idle=298.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-08-21 07:25:13.840] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:25:13.848] [DEBUG] QUERY OK source="tms_terminals" db=4.2ms queue=0.8ms idle=16.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:25:13.878] [DEBUG] QUERY OK source="tms_terminals" db=26.4ms idle=22.8ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 07:25:13], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:25:13.878] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:25:13.879] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:25:13.879] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:25:13.879] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:25:13.879] [INFO ] Event published: terminal_updated [2026-08-21 07:25:13.886] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.3ms queue=1.7ms idle=34.5ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:25:13], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:25:13.889] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=9.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:25:13.891] [DEBUG] QUERY OK source="terminal_group_rules" db=1.3ms idle=0.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:25:13.891] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:25:13.981] [DEBUG] QUERY OK source="tms_terminals" db=52.3ms queue=41.4ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 07:25:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:25:13.981] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:25:13.985] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=92.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:25:14.017] [DEBUG] QUERY OK source="tms_terminals" db=29.3ms queue=1.8ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:25:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:25:14.044] [DEBUG] QUERY OK db=26.5ms idle=33.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a747cee4-b0e2-42e6-8a68-d2781cfeb975", "2026-08-21T07:25:13Z", ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:25:14.045] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77066, oid: "a747cee4-b0e2-42e6-8a68-d2781cfeb975", upload_time: "2026-08-21T07:25:13Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]} [2026-08-21 07:25:14.045] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:25:13Z", "value" => "morefun"} [2026-08-21 07:25:14.111] [DEBUG] QUERY OK db=24.2ms queue=41.3ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:13Z", "morefun", "vendor", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.111] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782166, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.111] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:25:13Z", "value" => "kiosk_launcher"} [2026-08-21 07:25:14.151] [DEBUG] QUERY OK db=39.6ms queue=0.1ms idle=67.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:13Z", "kiosk_launcher", "model", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782167, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.151] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:25:13Z", "value" => "1.0"} [2026-08-21 07:25:14.183] [DEBUG] QUERY OK db=29.5ms queue=1.2ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:13Z", "1.0", "app_version", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782169, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.183] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:25:13Z", "value" => "13"} [2026-08-21 07:25:14.228] [DEBUG] QUERY OK db=43.4ms queue=0.3ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:13Z", "13", "android_version", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782171, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.229] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:25:13Z", "value" => "893"} [2026-08-21 07:25:14.295] [DEBUG] QUERY OK db=65.8ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:13Z", "893", "ram_free_mb", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.295] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782173, itemkey: "ram_free_mb", value: "893", timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.295] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:25:13Z", "value" => "WIFI"} [2026-08-21 07:25:14.332] [DEBUG] QUERY OK db=36.3ms queue=0.1ms idle=67.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:13Z", "WIFI", "network_type", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.332] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782175, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.333] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:25:13Z", "value" => "true"} [2026-08-21 07:25:14.412] [DEBUG] QUERY OK db=78.7ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:13Z", "true", "kiosk_active", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782177, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.412] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:25:13Z", "value" => ""} [2026-08-21 07:25:14.469] [DEBUG] QUERY OK db=56.3ms idle=71.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:25:13Z", "sim_operator", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782179, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.470] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:25:13Z", "value" => "UNKNOWN"} [2026-08-21 07:25:14.520] [DEBUG] QUERY OK db=48.8ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:13Z", "UNKNOWN", "sim_number", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.520] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782181, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.520] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:25:13Z", "value" => "UNKNOWN"} [2026-08-21 07:25:14.574] [DEBUG] QUERY OK db=53.4ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:13Z", "UNKNOWN", "sim_iccid", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782183, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.575] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:25:13Z", "value" => "UNKNOWN"} [2026-08-21 07:25:14.609] [DEBUG] QUERY OK db=33.5ms idle=55.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:13Z", "UNKNOWN", "sim_imsi", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782185, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.609] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:25:13Z", "value" => "UNKNOWN"} [2026-08-21 07:25:14.694] [DEBUG] QUERY OK db=82.3ms queue=1.9ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:13Z", "UNKNOWN", "sim_iccid2", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782187, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.695] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:25:13Z", "value" => "UNKNOWN"} [2026-08-21 07:25:14.740] [DEBUG] QUERY OK db=43.7ms idle=87.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:13Z", "UNKNOWN", "sim_imsi2", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782189, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.740] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:25:13Z", "value" => "26"} [2026-08-21 07:25:14.784] [DEBUG] QUERY OK db=43.2ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:13Z", "26", "data_usage_mb", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782191, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.784] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:25:13Z", "value" => "0"} [2026-08-21 07:25:14.834] [DEBUG] QUERY OK db=49.8ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:13Z", "0", "mobile_data_mb", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782193, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:14.836] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:25: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:25:14.891] [DEBUG] QUERY OK db=53.8ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77066, ~N[2026-08-21 07:25:14], ~N[2026-08-21 07:25:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:14.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782195, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:25:13Z", message: nil, status_log_id: 77066, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:14], updated_at: ~N[2026-08-21 07:25:14]}} [2026-08-21 07:25:21.303] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:25:21.303] [DEBUG] Replied in 223µs [2026-08-21 07:25:22.162] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:25:22.162] [DEBUG] Replied in 206µs [2026-08-21 07:25:22.981] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:25:22.981] [DEBUG] Replied in 198µs [2026-08-21 07:25:23.843] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:25:23.843] [DEBUG] Replied in 178µs [2026-08-21 07:25:24.706] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:25:24.706] [DEBUG] Replied in 186µs [2026-08-21 07:25:25.509] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:25:25.510] [DEBUG] Replied in 190µs [2026-08-21 07:25:27.274] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:24:47Z"} [2026-08-21 07:25:27.275] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:24:47Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 30, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:25:27.322] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:25:27.325] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=0.9ms idle=926.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:25:27.326] [DEBUG] QUERY OK source="merchant_adjustments" db=1.0ms idle=53.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:25:27.367] [DEBUG] QUERY OK source="core_transactions" db=40.1ms queue=0.2ms idle=1.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:25:27.369] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=0.7ms idle=41.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:25:27.370] [DEBUG] Replied in 47ms [2026-08-21 07:25:31.331] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["scheme_names"], "_unused_date_from" => "", "_unused_date_to" => "", "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mid" => "", "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:25:31.333] [DEBUG] QUERY OK source="core_transactions" db=1.2ms queue=0.4ms idle=919.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:48 [2026-08-21 07:25:31.334] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms idle=269.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:51 [2026-08-21 07:25:31.375] [DEBUG] QUERY OK source="core_transactions" db=40.8ms idle=1.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:25:31.379] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=2.3ms idle=41.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:25:31.381] [DEBUG] Replied in 49ms [2026-08-21 07:25:36.890] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:25:36.890] [DEBUG] Replied in 198µs [2026-08-21 07:25:37.785] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:25:37.785] [DEBUG] Replied in 235µs [2026-08-21 07:25:38.473] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:25:38.473] [DEBUG] Replied in 192µs [2026-08-21 07:25:39.304] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:25:39.305] [DEBUG] Replied in 203µs [2026-08-21 07:25:40.125] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:25:40.126] [DEBUG] Replied in 187µs [2026-08-21 07:25:41.637] [DEBUG] HANDLE EVENT "toggle_type_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:25:41.637] [DEBUG] Replied in 1ms [2026-08-21 07:25:43.932] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:25:43.932] [INFO ] Incoming JSON payload: {"oid":"54a1c29c-ef20-4c28-be1c-f28daae292e8","sn":"98251226730001","uploadTime":"2026-08-21T07:25:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"ram_free_mb","value":"891","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:25:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:25:43.933] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "54a1c29c-ef20-4c28-be1c-f28daae292e8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:25:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:25:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:25:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:25:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:25:43Z", "value" => "891"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:25:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:25:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:25:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:25:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:25:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:25:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:25:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:25:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:25:43Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:25:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:25:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:25:43Z", "vendor" => "morefun"} [2026-08-21 07:25:43.934] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:25:43.934] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:25:43.934] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:25:43.934] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1473.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-08-21 07:25:43.946] [DEBUG] QUERY OK source="parameter_templates" db=10.8ms idle=470.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-08-21 07:25:43.950] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:25:43.955] [DEBUG] QUERY OK source="tms_terminals" db=3.8ms idle=17.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:25:43.956] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:25:44.035] [DEBUG] QUERY OK source="tms_terminals" db=78.7ms idle=10.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:25:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:25:44.036] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:25:44.036] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=80.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:25:44.107] [DEBUG] QUERY OK source="tms_terminals" db=69.3ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:25:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:25:44.187] [DEBUG] QUERY OK db=79.3ms queue=0.1ms idle=71.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "54a1c29c-ef20-4c28-be1c-f28daae292e8", "2026-08-21T07:25:43Z", ~N[2026-08-21 07:25:44], ~N[2026-08-21 07:25:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:25:44.187] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77068, oid: "54a1c29c-ef20-4c28-be1c-f28daae292e8", upload_time: "2026-08-21T07:25:43Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:44], updated_at: ~N[2026-08-21 07:25:44]} [2026-08-21 07:25:44.187] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:25:43Z", "value" => "morefun"} [2026-08-21 07:25:44.270] [DEBUG] QUERY OK db=82.1ms idle=81.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "morefun", "vendor", 77068, ~N[2026-08-21 07:25:44], ~N[2026-08-21 07:25:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:44.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782198, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:44], updated_at: ~N[2026-08-21 07:25:44]}} [2026-08-21 07:25:44.270] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:25:43Z", "value" => "kiosk_launcher"} [2026-08-21 07:25:44.369] [DEBUG] QUERY OK db=97.7ms queue=0.1ms idle=83.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "kiosk_launcher", "model", 77068, ~N[2026-08-21 07:25:44], ~N[2026-08-21 07:25:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:44.369] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782200, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:44], updated_at: ~N[2026-08-21 07:25:44]}} [2026-08-21 07:25:44.369] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:25:43Z", "value" => "1.0"} [2026-08-21 07:25:44.446] [DEBUG] QUERY OK db=76.8ms idle=99.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "1.0", "app_version", 77068, ~N[2026-08-21 07:25:44], ~N[2026-08-21 07:25:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:44.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782202, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:44], updated_at: ~N[2026-08-21 07:25:44]}} [2026-08-21 07:25:44.448] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:25:43Z", "value" => "13"} [2026-08-21 07:25:44.503] [DEBUG] QUERY OK db=51.9ms queue=0.1ms idle=82.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "13", "android_version", 77068, ~N[2026-08-21 07:25:44], ~N[2026-08-21 07:25:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:44.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782204, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:44], updated_at: ~N[2026-08-21 07:25:44]}} [2026-08-21 07:25:44.504] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:25:43Z", "value" => "891"} [2026-08-21 07:25:44.536] [DEBUG] QUERY OK db=32.0ms queue=0.1ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "891", "ram_free_mb", 77068, ~N[2026-08-21 07:25:44], ~N[2026-08-21 07:25:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:44.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782206, itemkey: "ram_free_mb", value: "891", timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:44], updated_at: ~N[2026-08-21 07:25:44]}} [2026-08-21 07:25:44.537] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:25:43Z", "value" => "WIFI"} [2026-08-21 07:25:44.609] [DEBUG] QUERY OK db=71.6ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "WIFI", "network_type", 77068, ~N[2026-08-21 07:25:44], ~N[2026-08-21 07:25:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:44.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782208, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:44], updated_at: ~N[2026-08-21 07:25:44]}} [2026-08-21 07:25:44.610] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:25:43Z", "value" => "true"} [2026-08-21 07:25:44.674] [DEBUG] QUERY OK db=63.1ms idle=74.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "true", "kiosk_active", 77068, ~N[2026-08-21 07:25:44], ~N[2026-08-21 07:25:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:44.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782210, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:44], updated_at: ~N[2026-08-21 07:25:44]}} [2026-08-21 07:25:44.675] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:25:43Z", "value" => ""} [2026-08-21 07:25:44.756] [DEBUG] QUERY OK db=81.3ms idle=66.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:25:43Z", "sim_operator", 77068, ~N[2026-08-21 07:25:44], ~N[2026-08-21 07:25:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:44.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782212, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:44], updated_at: ~N[2026-08-21 07:25:44]}} [2026-08-21 07:25:44.757] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:25:43Z", "value" => "UNKNOWN"} [2026-08-21 07:25:44.824] [DEBUG] QUERY OK db=66.8ms idle=82.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "UNKNOWN", "sim_number", 77068, ~N[2026-08-21 07:25:44], ~N[2026-08-21 07:25:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:44.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782214, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:44], updated_at: ~N[2026-08-21 07:25:44]}} [2026-08-21 07:25:44.824] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:25:43Z", "value" => "UNKNOWN"} [2026-08-21 07:25:44.927] [DEBUG] QUERY OK db=101.7ms idle=68.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "UNKNOWN", "sim_iccid", 77068, ~N[2026-08-21 07:25:44], ~N[2026-08-21 07:25:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:44.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782216, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:44], updated_at: ~N[2026-08-21 07:25:44]}} [2026-08-21 07:25:44.927] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:25:43Z", "value" => "UNKNOWN"} [2026-08-21 07:25:44.991] [DEBUG] QUERY OK db=63.0ms queue=0.1ms idle=103.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "UNKNOWN", "sim_imsi", 77068, ~N[2026-08-21 07:25:44], ~N[2026-08-21 07:25:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:44.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782218, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:44], updated_at: ~N[2026-08-21 07:25:44]}} [2026-08-21 07:25:44.992] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:25:43Z", "value" => "UNKNOWN"} [2026-08-21 07:25:45.046] [DEBUG] QUERY OK db=54.0ms idle=65.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "UNKNOWN", "sim_iccid2", 77068, ~N[2026-08-21 07:25:44], ~N[2026-08-21 07:25:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:45.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782220, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:44], updated_at: ~N[2026-08-21 07:25:44]}} [2026-08-21 07:25:45.047] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:25:43Z", "value" => "UNKNOWN"} [2026-08-21 07:25:45.137] [DEBUG] QUERY OK db=88.8ms idle=56.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "UNKNOWN", "sim_imsi2", 77068, ~N[2026-08-21 07:25:45], ~N[2026-08-21 07:25:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:45.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782222, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:45], updated_at: ~N[2026-08-21 07:25:45]}} [2026-08-21 07:25:45.137] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:25:43Z", "value" => "26"} [2026-08-21 07:25:45.216] [DEBUG] QUERY OK db=78.4ms idle=91.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "26", "data_usage_mb", 77068, ~N[2026-08-21 07:25:45], ~N[2026-08-21 07:25:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:45.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782224, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:45], updated_at: ~N[2026-08-21 07:25:45]}} [2026-08-21 07:25:45.218] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:25:43Z", "value" => "0"} [2026-08-21 07:25:45.293] [DEBUG] QUERY OK db=73.8ms idle=81.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "0", "mobile_data_mb", 77068, ~N[2026-08-21 07:25:45], ~N[2026-08-21 07:25:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:45.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782226, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:45], updated_at: ~N[2026-08-21 07:25:45]}} [2026-08-21 07:25:45.297] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:25:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:25:45.360] [DEBUG] QUERY OK db=60.7ms queue=0.1ms idle=82.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:25:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77068, ~N[2026-08-21 07:25:45], ~N[2026-08-21 07:25:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:25:45.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782228, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:25:43Z", message: nil, status_log_id: 77068, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:25:45], updated_at: ~N[2026-08-21 07:25:45]}} [2026-08-21 07:25:45.513] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:25:45.513] [DEBUG] Replied in 251µs [2026-08-21 07:26:02.809] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:26:02.809] [DEBUG] Replied in 166µs [2026-08-21 07:26:03.404] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:26:03.405] [DEBUG] Replied in 207µs [2026-08-21 07:26:03.955] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:26:03.956] [DEBUG] Replied in 787µs [2026-08-21 07:26:04.780] [DEBUG] HANDLE EVENT "toggle_type_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:26:04.780] [DEBUG] Replied in 180µs [2026-08-21 07:26:05.342] [DEBUG] HANDLE EVENT "toggle_type_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:26:05.342] [DEBUG] Replied in 174µs [2026-08-21 07:26:12.123] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:26:12.123] [DEBUG] Replied in 192µs [2026-08-21 07:26:14.039] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:26:14.041] [INFO ] Incoming JSON payload: {"oid":"bb7aa018-504f-4f61-92f9-328a2624ddb2","sn":"98251226730001","uploadTime":"2026-08-21T07:26:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:26:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:26:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:26:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:26:13Z"},{"itemkey":"ram_free_mb","value":"888","timestamp":"2026-08-21T07:26:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:26:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:26:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:26:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:26:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:26:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:26:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:26:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:26:13Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:26:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:26: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:26:14.045] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bb7aa018-504f-4f61-92f9-328a2624ddb2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:26:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:26:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:26:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:26:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:26:13Z", "value" => "888"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:26:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:26:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:26:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:26:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:26:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:26:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:26:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:26:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:26:13Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:26:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:26: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:26:13Z", "vendor" => "morefun"} [2026-08-21 07:26:14.047] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:26:14.047] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:26:14.047] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:26:14.051] [DEBUG] QUERY OK source="parameter_templates" db=4.2ms idle=978.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-08-21 07:26:14.059] [DEBUG] QUERY OK source="parameter_templates" db=7.2ms 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-08-21 07:26:14.060] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:26:14.063] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms 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-08-21 07:26:14.063] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:26:14.169] [DEBUG] QUERY OK source="tms_terminals" db=64.4ms queue=40.8ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:26:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:26:14.170] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:26:14.172] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=107.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:26:14.212] [DEBUG] QUERY OK source="tms_terminals" db=39.9ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:26:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:26:14.278] [DEBUG] QUERY OK db=65.3ms idle=40.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "bb7aa018-504f-4f61-92f9-328a2624ddb2", "2026-08-21T07:26:13Z", ~N[2026-08-21 07:26:14], ~N[2026-08-21 07:26:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:26:14.278] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77071, oid: "bb7aa018-504f-4f61-92f9-328a2624ddb2", upload_time: "2026-08-21T07:26:13Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:14], updated_at: ~N[2026-08-21 07:26:14]} [2026-08-21 07:26:14.278] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:26:13Z", "value" => "morefun"} [2026-08-21 07:26:14.327] [DEBUG] QUERY OK db=48.3ms idle=66.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:13Z", "morefun", "vendor", 77071, ~N[2026-08-21 07:26:14], ~N[2026-08-21 07:26:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:14.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782232, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:14], updated_at: ~N[2026-08-21 07:26:14]}} [2026-08-21 07:26:14.328] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:26:13Z", "value" => "kiosk_launcher"} [2026-08-21 07:26:14.401] [DEBUG] QUERY OK db=72.2ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:13Z", "kiosk_launcher", "model", 77071, ~N[2026-08-21 07:26:14], ~N[2026-08-21 07:26:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:14.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782234, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:14], updated_at: ~N[2026-08-21 07:26:14]}} [2026-08-21 07:26:14.401] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:26:13Z", "value" => "1.0"} [2026-08-21 07:26:14.493] [DEBUG] QUERY OK db=91.2ms idle=74.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:13Z", "1.0", "app_version", 77071, ~N[2026-08-21 07:26:14], ~N[2026-08-21 07:26:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:14.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782236, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:14], updated_at: ~N[2026-08-21 07:26:14]}} [2026-08-21 07:26:14.493] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:26:13Z", "value" => "13"} [2026-08-21 07:26:14.577] [DEBUG] QUERY OK db=83.0ms idle=92.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:13Z", "13", "android_version", 77071, ~N[2026-08-21 07:26:14], ~N[2026-08-21 07:26:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:14.577] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782238, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:14], updated_at: ~N[2026-08-21 07:26:14]}} [2026-08-21 07:26:14.577] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:26:13Z", "value" => "888"} [2026-08-21 07:26:14.698] [DEBUG] QUERY OK db=119.7ms idle=84.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:13Z", "888", "ram_free_mb", 77071, ~N[2026-08-21 07:26:14], ~N[2026-08-21 07:26:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:14.698] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782240, itemkey: "ram_free_mb", value: "888", timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:14], updated_at: ~N[2026-08-21 07:26:14]}} [2026-08-21 07:26:14.698] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:26:13Z", "value" => "WIFI"} [2026-08-21 07:26:14.744] [DEBUG] QUERY OK db=43.7ms idle=65.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:13Z", "WIFI", "network_type", 77071, ~N[2026-08-21 07:26:14], ~N[2026-08-21 07:26:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:14.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782241, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:14], updated_at: ~N[2026-08-21 07:26:14]}} [2026-08-21 07:26:14.745] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:26:13Z", "value" => "true"} [2026-08-21 07:26:14.789] [DEBUG] QUERY OK db=44.3ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:13Z", "true", "kiosk_active", 77071, ~N[2026-08-21 07:26:14], ~N[2026-08-21 07:26:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:14.790] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782243, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:14], updated_at: ~N[2026-08-21 07:26:14]}} [2026-08-21 07:26:14.790] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:26:13Z", "value" => ""} [2026-08-21 07:26:14.853] [DEBUG] QUERY OK db=62.3ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:26:13Z", "sim_operator", 77071, ~N[2026-08-21 07:26:14], ~N[2026-08-21 07:26:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:14.853] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782245, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:14], updated_at: ~N[2026-08-21 07:26:14]}} [2026-08-21 07:26:14.853] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:26:13Z", "value" => "UNKNOWN"} [2026-08-21 07:26:14.888] [DEBUG] QUERY OK db=34.6ms idle=64.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:13Z", "UNKNOWN", "sim_number", 77071, ~N[2026-08-21 07:26:14], ~N[2026-08-21 07:26:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:14.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782247, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:14], updated_at: ~N[2026-08-21 07:26:14]}} [2026-08-21 07:26:14.889] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:26:13Z", "value" => "UNKNOWN"} [2026-08-21 07:26:14.926] [DEBUG] QUERY OK db=36.6ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:13Z", "UNKNOWN", "sim_iccid", 77071, ~N[2026-08-21 07:26:14], ~N[2026-08-21 07:26:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:14.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782249, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:14], updated_at: ~N[2026-08-21 07:26:14]}} [2026-08-21 07:26:14.926] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:26:13Z", "value" => "UNKNOWN"} [2026-08-21 07:26:14.992] [DEBUG] QUERY OK db=65.1ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:13Z", "UNKNOWN", "sim_imsi", 77071, ~N[2026-08-21 07:26:14], ~N[2026-08-21 07:26:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:14.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782251, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:14], updated_at: ~N[2026-08-21 07:26:14]}} [2026-08-21 07:26:14.992] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:26:13Z", "value" => "UNKNOWN"} [2026-08-21 07:26:15.130] [DEBUG] QUERY OK db=137.2ms idle=66.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:13Z", "UNKNOWN", "sim_iccid2", 77071, ~N[2026-08-21 07:26:14], ~N[2026-08-21 07:26:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:15.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782254, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:14], updated_at: ~N[2026-08-21 07:26:14]}} [2026-08-21 07:26:15.130] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:26:13Z", "value" => "UNKNOWN"} [2026-08-21 07:26:15.206] [DEBUG] QUERY OK db=74.4ms idle=139.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:13Z", "UNKNOWN", "sim_imsi2", 77071, ~N[2026-08-21 07:26:15], ~N[2026-08-21 07:26:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:15.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782256, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:15], updated_at: ~N[2026-08-21 07:26:15]}} [2026-08-21 07:26:15.206] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:26:13Z", "value" => "26"} [2026-08-21 07:26:15.243] [DEBUG] QUERY OK db=36.5ms idle=76.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:13Z", "26", "data_usage_mb", 77071, ~N[2026-08-21 07:26:15], ~N[2026-08-21 07:26:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:15.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782258, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:15], updated_at: ~N[2026-08-21 07:26:15]}} [2026-08-21 07:26:15.244] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:26:13Z", "value" => "0"} [2026-08-21 07:26:15.330] [DEBUG] QUERY OK db=85.8ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:13Z", "0", "mobile_data_mb", 77071, ~N[2026-08-21 07:26:15], ~N[2026-08-21 07:26:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:15.330] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782260, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:15], updated_at: ~N[2026-08-21 07:26:15]}} [2026-08-21 07:26:15.331] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:26: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:26:15.399] [DEBUG] QUERY OK db=66.1ms idle=88.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77071, ~N[2026-08-21 07:26:15], ~N[2026-08-21 07:26:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:15.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782261, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:26:13Z", message: nil, status_log_id: 77071, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:15], updated_at: ~N[2026-08-21 07:26:15]}} [2026-08-21 07:26:19.111] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:26:19.111] [DEBUG] Replied in 212µs [2026-08-21 07:26:20.827] [DEBUG] HANDLE EVENT "toggle_type_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:26:20.827] [DEBUG] Replied in 199µs [2026-08-21 07:26:42.446] [DEBUG] HANDLE EVENT "toggle_type_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:26:42.446] [DEBUG] Replied in 233µs [2026-08-21 07:26:44.133] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:26:44.133] [INFO ] Incoming JSON payload: {"oid":"b700782b-9e8d-42e5-aea6-6b9dfa34a6f7","sn":"98251226730001","uploadTime":"2026-08-21T07:26:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"ram_free_mb","value":"891","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:26:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:26:44.134] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b700782b-9e8d-42e5-aea6-6b9dfa34a6f7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:26:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:26:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:26:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:26:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:26:43Z", "value" => "891"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:26:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:26:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:26:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:26:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:26:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:26:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:26:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:26:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:26:43Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:26:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:26:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:26:43Z", "vendor" => "morefun"} [2026-08-21 07:26:44.134] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:26:44.134] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:26:44.134] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:26:44.137] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=1.3ms idle=1060.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-08-21 07:26:44.137] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=358.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-08-21 07:26:44.137] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:26:44.139] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.7ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:26:44.139] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:26:44.187] [DEBUG] QUERY OK source="tms_terminals" db=47.6ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:26:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:26:44.187] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:26:44.191] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=49.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:26:44.223] [DEBUG] QUERY OK source="tms_terminals" db=30.9ms idle=4.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:26:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:26:44.242] [DEBUG] QUERY OK db=16.2ms idle=34.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b700782b-9e8d-42e5-aea6-6b9dfa34a6f7", "2026-08-21T07:26:43Z", ~N[2026-08-21 07:26:44], ~N[2026-08-21 07:26:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:26:44.243] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77072, oid: "b700782b-9e8d-42e5-aea6-6b9dfa34a6f7", upload_time: "2026-08-21T07:26:43Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:44], updated_at: ~N[2026-08-21 07:26:44]} [2026-08-21 07:26:44.243] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:26:43Z", "value" => "morefun"} [2026-08-21 07:26:44.297] [DEBUG] QUERY OK db=53.5ms queue=0.1ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "morefun", "vendor", 77072, ~N[2026-08-21 07:26:44], ~N[2026-08-21 07:26:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:44.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782262, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:44], updated_at: ~N[2026-08-21 07:26:44]}} [2026-08-21 07:26:44.297] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:26:43Z", "value" => "kiosk_launcher"} [2026-08-21 07:26:44.402] [DEBUG] QUERY OK db=104.9ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "kiosk_launcher", "model", 77072, ~N[2026-08-21 07:26:44], ~N[2026-08-21 07:26:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:44.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782264, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:44], updated_at: ~N[2026-08-21 07:26:44]}} [2026-08-21 07:26:44.403] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:26:43Z", "value" => "1.0"} [2026-08-21 07:26:44.445] [DEBUG] QUERY OK db=41.9ms idle=106.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "1.0", "app_version", 77072, ~N[2026-08-21 07:26:44], ~N[2026-08-21 07:26:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:44.446] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782266, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:44], updated_at: ~N[2026-08-21 07:26:44]}} [2026-08-21 07:26:44.446] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:26:43Z", "value" => "13"} [2026-08-21 07:26:44.515] [DEBUG] QUERY OK db=67.8ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "13", "android_version", 77072, ~N[2026-08-21 07:26:44], ~N[2026-08-21 07:26:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:44.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782268, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:44], updated_at: ~N[2026-08-21 07:26:44]}} [2026-08-21 07:26:44.515] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:26:43Z", "value" => "891"} [2026-08-21 07:26:44.562] [DEBUG] QUERY OK db=46.6ms idle=70.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "891", "ram_free_mb", 77072, ~N[2026-08-21 07:26:44], ~N[2026-08-21 07:26:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:44.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782270, itemkey: "ram_free_mb", value: "891", timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:44], updated_at: ~N[2026-08-21 07:26:44]}} [2026-08-21 07:26:44.563] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:26:43Z", "value" => "WIFI"} [2026-08-21 07:26:44.616] [DEBUG] QUERY OK db=51.8ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "WIFI", "network_type", 77072, ~N[2026-08-21 07:26:44], ~N[2026-08-21 07:26:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:44.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782272, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:44], updated_at: ~N[2026-08-21 07:26:44]}} [2026-08-21 07:26:44.616] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:26:43Z", "value" => "true"} [2026-08-21 07:26:44.670] [DEBUG] QUERY OK db=52.9ms queue=0.1ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "true", "kiosk_active", 77072, ~N[2026-08-21 07:26:44], ~N[2026-08-21 07:26:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:44.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782274, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:44], updated_at: ~N[2026-08-21 07:26:44]}} [2026-08-21 07:26:44.671] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:26:43Z", "value" => ""} [2026-08-21 07:26:44.761] [DEBUG] QUERY OK db=88.4ms queue=0.3ms idle=56.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:26:43Z", "sim_operator", 77072, ~N[2026-08-21 07:26:44], ~N[2026-08-21 07:26:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:44.761] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782276, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:44], updated_at: ~N[2026-08-21 07:26:44]}} [2026-08-21 07:26:44.761] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:26:43Z", "value" => "UNKNOWN"} [2026-08-21 07:26:44.816] [DEBUG] QUERY OK db=53.4ms queue=0.1ms idle=91.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "UNKNOWN", "sim_number", 77072, ~N[2026-08-21 07:26:44], ~N[2026-08-21 07:26:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:44.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782278, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:44], updated_at: ~N[2026-08-21 07:26:44]}} [2026-08-21 07:26:44.816] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:26:43Z", "value" => "UNKNOWN"} [2026-08-21 07:26:44.889] [DEBUG] QUERY OK db=72.8ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "UNKNOWN", "sim_iccid", 77072, ~N[2026-08-21 07:26:44], ~N[2026-08-21 07:26:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:44.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782280, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:44], updated_at: ~N[2026-08-21 07:26:44]}} [2026-08-21 07:26:44.890] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:26:43Z", "value" => "UNKNOWN"} [2026-08-21 07:26:44.948] [DEBUG] QUERY OK db=57.9ms idle=75.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "UNKNOWN", "sim_imsi", 77072, ~N[2026-08-21 07:26:44], ~N[2026-08-21 07:26:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:44.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782282, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:44], updated_at: ~N[2026-08-21 07:26:44]}} [2026-08-21 07:26:44.949] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:26:43Z", "value" => "UNKNOWN"} [2026-08-21 07:26:45.000] [DEBUG] QUERY OK db=50.0ms queue=0.4ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "UNKNOWN", "sim_iccid2", 77072, ~N[2026-08-21 07:26:44], ~N[2026-08-21 07:26:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:45.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782284, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:44], updated_at: ~N[2026-08-21 07:26:44]}} [2026-08-21 07:26:45.002] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:26:43Z", "value" => "UNKNOWN"} [2026-08-21 07:26:45.065] [DEBUG] QUERY OK db=61.1ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "UNKNOWN", "sim_imsi2", 77072, ~N[2026-08-21 07:26:45], ~N[2026-08-21 07:26:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:45.065] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782286, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:45], updated_at: ~N[2026-08-21 07:26:45]}} [2026-08-21 07:26:45.066] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:26:43Z", "value" => "26"} [2026-08-21 07:26:45.147] [DEBUG] QUERY OK db=79.9ms queue=0.1ms idle=67.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "26", "data_usage_mb", 77072, ~N[2026-08-21 07:26:45], ~N[2026-08-21 07:26:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:45.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782288, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:45], updated_at: ~N[2026-08-21 07:26:45]}} [2026-08-21 07:26:45.151] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:26:43Z", "value" => "0"} [2026-08-21 07:26:45.225] [DEBUG] QUERY OK db=63.4ms queue=0.1ms idle=96.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "0", "mobile_data_mb", 77072, ~N[2026-08-21 07:26:45], ~N[2026-08-21 07:26:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:45.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782291, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:45], updated_at: ~N[2026-08-21 07:26:45]}} [2026-08-21 07:26:45.227] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:26:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:26:45.341] [DEBUG] QUERY OK db=112.8ms queue=0.6ms idle=80.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:26:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77072, ~N[2026-08-21 07:26:45], ~N[2026-08-21 07:26:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:26:45.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782293, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:26:43Z", message: nil, status_log_id: 77072, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:26:45], updated_at: ~N[2026-08-21 07:26:45]}} [2026-08-21 07:27:14.241] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:27:14.241] [INFO ] Incoming JSON payload: {"oid":"2990cb5d-96cb-478c-bd2c-22d12ce1728f","sn":"98251226730001","uploadTime":"2026-08-21T07:27:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:27:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:27:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:27:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:27:13Z"},{"itemkey":"ram_free_mb","value":"890","timestamp":"2026-08-21T07:27:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:27:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:27:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:27:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:27:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:27:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:27:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:27:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:27:13Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:27:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:27: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:27:14.242] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2990cb5d-96cb-478c-bd2c-22d12ce1728f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:27:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:27:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:27:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:27:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:27:13Z", "value" => "890"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:27:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:27:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:27:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:27:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:27:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:27:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:27:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:27:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:27:13Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:27:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:27: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:27:13Z", "vendor" => "morefun"} [2026-08-21 07:27:14.243] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:27:14.243] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:27:14.243] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:27:14.248] [DEBUG] QUERY OK source="parameter_templates" db=4.5ms queue=0.1ms idle=1138.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-08-21 07:27:14.249] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=291.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-08-21 07:27:14.249] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:27:14.251] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:27:14.255] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:27:14.303] [DEBUG] QUERY OK source="tms_terminals" db=47.6ms queue=0.1ms idle=6.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:27:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:27:14.303] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:27:14.304] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=52.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:27:14.369] [DEBUG] QUERY OK source="tms_terminals" db=64.1ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:27:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:27:14.413] [DEBUG] QUERY OK db=41.8ms queue=1.2ms idle=65.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2990cb5d-96cb-478c-bd2c-22d12ce1728f", "2026-08-21T07:27:13Z", ~N[2026-08-21 07:27:14], ~N[2026-08-21 07:27:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:27:14.413] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77074, oid: "2990cb5d-96cb-478c-bd2c-22d12ce1728f", upload_time: "2026-08-21T07:27:13Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:14], updated_at: ~N[2026-08-21 07:27:14]} [2026-08-21 07:27:14.413] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:27:13Z", "value" => "morefun"} [2026-08-21 07:27:14.604] [DEBUG] QUERY OK db=189.6ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:13Z", "morefun", "vendor", 77074, ~N[2026-08-21 07:27:14], ~N[2026-08-21 07:27:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:14.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782294, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:14], updated_at: ~N[2026-08-21 07:27:14]}} [2026-08-21 07:27:14.605] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:27:13Z", "value" => "kiosk_launcher"} [2026-08-21 07:27:14.657] [DEBUG] QUERY OK db=51.5ms idle=192.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:13Z", "kiosk_launcher", "model", 77074, ~N[2026-08-21 07:27:14], ~N[2026-08-21 07:27:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:14.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782296, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:14], updated_at: ~N[2026-08-21 07:27:14]}} [2026-08-21 07:27:14.658] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:27:13Z", "value" => "1.0"} [2026-08-21 07:27:14.715] [DEBUG] QUERY OK db=57.0ms idle=54.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:13Z", "1.0", "app_version", 77074, ~N[2026-08-21 07:27:14], ~N[2026-08-21 07:27:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:14.715] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782298, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:14], updated_at: ~N[2026-08-21 07:27:14]}} [2026-08-21 07:27:14.715] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:27:13Z", "value" => "13"} [2026-08-21 07:27:14.771] [DEBUG] QUERY OK db=53.8ms queue=1.1ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:13Z", "13", "android_version", 77074, ~N[2026-08-21 07:27:14], ~N[2026-08-21 07:27:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:14.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782300, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:14], updated_at: ~N[2026-08-21 07:27:14]}} [2026-08-21 07:27:14.771] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:27:13Z", "value" => "890"} [2026-08-21 07:27:14.827] [DEBUG] QUERY OK db=55.3ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:13Z", "890", "ram_free_mb", 77074, ~N[2026-08-21 07:27:14], ~N[2026-08-21 07:27:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:14.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782302, itemkey: "ram_free_mb", value: "890", timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:14], updated_at: ~N[2026-08-21 07:27:14]}} [2026-08-21 07:27:14.832] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:27:13Z", "value" => "WIFI"} [2026-08-21 07:27:14.896] [DEBUG] QUERY OK db=63.9ms idle=61.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:13Z", "WIFI", "network_type", 77074, ~N[2026-08-21 07:27:14], ~N[2026-08-21 07:27:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:14.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782304, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:14], updated_at: ~N[2026-08-21 07:27:14]}} [2026-08-21 07:27:14.897] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:27:13Z", "value" => "true"} [2026-08-21 07:27:15.018] [DEBUG] QUERY OK db=120.9ms idle=70.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:13Z", "true", "kiosk_active", 77074, ~N[2026-08-21 07:27:14], ~N[2026-08-21 07:27:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:15.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782306, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:14], updated_at: ~N[2026-08-21 07:27:14]}} [2026-08-21 07:27:15.024] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:27:13Z", "value" => ""} [2026-08-21 07:27:15.065] [DEBUG] QUERY OK db=40.8ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:27:13Z", "sim_operator", 77074, ~N[2026-08-21 07:27:15], ~N[2026-08-21 07:27:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:15.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782309, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:15], updated_at: ~N[2026-08-21 07:27:15]}} [2026-08-21 07:27:15.069] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:27:13Z", "value" => "UNKNOWN"} [2026-08-21 07:27:15.146] [DEBUG] QUERY OK db=77.2ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:13Z", "UNKNOWN", "sim_number", 77074, ~N[2026-08-21 07:27:15], ~N[2026-08-21 07:27:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:15.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782311, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:15], updated_at: ~N[2026-08-21 07:27:15]}} [2026-08-21 07:27:15.149] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:27:13Z", "value" => "UNKNOWN"} [2026-08-21 07:27:15.180] [DEBUG] QUERY OK db=30.9ms idle=83.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:13Z", "UNKNOWN", "sim_iccid", 77074, ~N[2026-08-21 07:27:15], ~N[2026-08-21 07:27:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:15.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782313, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:15], updated_at: ~N[2026-08-21 07:27:15]}} [2026-08-21 07:27:15.183] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:27:13Z", "value" => "UNKNOWN"} [2026-08-21 07:27:15.246] [DEBUG] QUERY OK db=62.2ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:13Z", "UNKNOWN", "sim_imsi", 77074, ~N[2026-08-21 07:27:15], ~N[2026-08-21 07:27:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:15.246] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782315, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:15], updated_at: ~N[2026-08-21 07:27:15]}} [2026-08-21 07:27:15.246] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:27:13Z", "value" => "UNKNOWN"} [2026-08-21 07:27:15.297] [DEBUG] QUERY OK db=47.7ms queue=2.6ms idle=66.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:13Z", "UNKNOWN", "sim_iccid2", 77074, ~N[2026-08-21 07:27:15], ~N[2026-08-21 07:27:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:15.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782317, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:15], updated_at: ~N[2026-08-21 07:27:15]}} [2026-08-21 07:27:15.297] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:27:13Z", "value" => "UNKNOWN"} [2026-08-21 07:27:15.350] [DEBUG] QUERY OK db=52.5ms idle=51.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:13Z", "UNKNOWN", "sim_imsi2", 77074, ~N[2026-08-21 07:27:15], ~N[2026-08-21 07:27:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:15.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782319, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:15], updated_at: ~N[2026-08-21 07:27:15]}} [2026-08-21 07:27:15.352] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:27:13Z", "value" => "26"} [2026-08-21 07:27:15.426] [DEBUG] QUERY OK db=73.3ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:13Z", "26", "data_usage_mb", 77074, ~N[2026-08-21 07:27:15], ~N[2026-08-21 07:27:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:15.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782321, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:15], updated_at: ~N[2026-08-21 07:27:15]}} [2026-08-21 07:27:15.426] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:27:13Z", "value" => "0"} [2026-08-21 07:27:15.492] [DEBUG] QUERY OK db=65.5ms idle=76.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:13Z", "0", "mobile_data_mb", 77074, ~N[2026-08-21 07:27:15], ~N[2026-08-21 07:27:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:15.492] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782323, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:15], updated_at: ~N[2026-08-21 07:27:15]}} [2026-08-21 07:27:15.508] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:27: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:27:15.557] [DEBUG] QUERY OK db=45.2ms queue=0.2ms idle=85.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77074, ~N[2026-08-21 07:27:15], ~N[2026-08-21 07:27:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:15.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782325, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:27:13Z", message: nil, status_log_id: 77074, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:15], updated_at: ~N[2026-08-21 07:27:15]}} [2026-08-21 07:27:40.153] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:27:40.153] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T07:27:39Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T07:27:39Z","value":"9"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T07:27:39Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T07:27:39Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T07:27:39Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T07:27:39Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T07:27:39Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T07:27:39Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T07:27:39Z","vendor":"MoreFun"} [2026-08-21 07:27:40.154] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:27:39Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:27:39Z", "value" => "9"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:27:39Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:27:39Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:27:39Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:27:39Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:27:39Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:27:39Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:27:39Z", "vendor" => "MoreFun"} [2026-08-21 07:27:40.154] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 07:27:40.154] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:27:40.154] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 07:27:40.156] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=98.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-08-21 07:27:40.157] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=38.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 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-08-21 07:27:40.160] [DEBUG] QUERY OK source="parameter_template_values" db=2.8ms 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-08-21 07:27:40.168] [DEBUG] QUERY OK source="parameter_definitions" db=2.9ms queue=4.6ms idle=4.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-08-21 07:27:40.170] [DEBUG] QUERY OK source="pos_terminal" db=1.1ms idle=8.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-08-21 07:27:40.209] [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` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 07:27:40.211] [DEBUG] QUERY OK db=0.5ms queue=1.1ms idle=1092.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 ["626165170000000"] [2026-08-21 07:27:40.211] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 07:27:40.213] [DEBUG] QUERY OK source="pos_terminal_data" db=0.9ms 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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 07:27:40.214] [DEBUG] QUERY OK source="address" db=1.0ms 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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 07:27:40.214] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 07:27:40.218] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 07:27:40.298] [DEBUG] QUERY OK db=79.3ms idle=5.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "97591928e3debd219ab917631d25e90ad61f67c9e7a08da97401f0614b4aefaf", 2468, 939, ~U[2026-08-21 07:27:40Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 07:27:40], ~N[2026-08-21 07:27:40]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 07:27:40.299] [INFO ] AutoPushService: Created push log 48385 for MF919 params.zip [2026-08-21 07:27:40.300] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 2468, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 07:27:40.300] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:27:40.300] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 07:27:40.311] [DEBUG] QUERY OK source="config_file_versions" db=9.7ms decode=0.3ms idle=86.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-08-21 07:27:40.318] [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-08-21 07:27:40.351] [DEBUG] QUERY OK db=32.1ms idle=21.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b291dc81424c1dd82e8b7e36ab87fb46b2979e67db23328c6270ac50d18c8a25", 837, 17947, ~U[2026-08-21 07:27:40Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 07:27:40], ~N[2026-08-21 07:27:40]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 07:27:40.352] [INFO ] AutoPushService: Created push log 48387 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 07:27:40.352] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 837, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 07:27:40.352] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:27:40.352] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 07:27:40.354] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms queue=0.2ms idle=43.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-08-21 07:27:40.354] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 07:27:40.356] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 07:27:40.356] [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-08-21 07:27:40.359] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 07:27:40.359] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:27:40.359] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:27:40.360] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=4.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 07:27:40.360] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:27:40.360] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 07:27:40.361] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:27:40.460] [DEBUG] QUERY OK source="tms_terminals" db=57.2ms queue=40.8ms idle=1.8ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 07:27:40], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:27:40.460] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:27:40.460] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:27:40.460] [INFO ] Event published: terminal_updated [2026-08-21 07:27:40.460] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:27:40.461] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:27:40.462] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.9ms queue=0.2ms idle=99.6ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:27:40], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:27:40.463] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms idle=2.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:27:40.466] [DEBUG] QUERY OK source="terminal_group_rules" db=2.3ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:27:40.466] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:27:40.548] [DEBUG] QUERY OK source="tms_terminals" db=43.9ms queue=41.7ms idle=0.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 07:27:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:27:40.550] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.2ms idle=82.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-08-21 07:27:40.550] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:27:40.552] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=0.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:27:40.552] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 07:27:40.600] [DEBUG] QUERY OK source="parameter_push_logs" db=47.5ms idle=1.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-08-21 06:57:40]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 07:27:40.600] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 07:27:40.600] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 07:27:40.602] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 07:27:40.604] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=2.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 07:27:40.604] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:27:40.606] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:27:40.685] [DEBUG] QUERY OK source="tms_terminals" db=36.5ms queue=42.2ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:27:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:27:40.786] [DEBUG] QUERY OK db=100.8ms idle=79.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T07:27:39Z", ~N[2026-08-21 07:27:40], ~N[2026-08-21 07:27:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:27:40.786] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77076, oid: "organization_id", upload_time: "2026-08-21T07:27:39Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:40], updated_at: ~N[2026-08-21 07:27:40]} [2026-08-21 07:27:40.786] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:27:39Z", "value" => "online"} [2026-08-21 07:27:40.953] [DEBUG] QUERY OK db=166.2ms idle=101.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T07:27:39Z", "online", "status", 77076, ~N[2026-08-21 07:27:40], ~N[2026-08-21 07:27:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:40.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782326, itemkey: "status", value: "online", timestamp: "2026-08-21T07:27:39Z", message: "Terminal status update", status_log_id: 77076, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:40], updated_at: ~N[2026-08-21 07:27:40]}} [2026-08-21 07:27:40.953] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 07:27:40.954] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:27:39Z", "value" => "9"} [2026-08-21 07:27:41.052] [DEBUG] QUERY OK db=97.8ms queue=0.1ms idle=167.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T07:27:39Z", "9", "battery", 77076, ~N[2026-08-21 07:27:40], ~N[2026-08-21 07:27:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:41.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782328, itemkey: "battery", value: "9", timestamp: "2026-08-21T07:27:39Z", message: "Battery level", status_log_id: 77076, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:40], updated_at: ~N[2026-08-21 07:27:40]}} [2026-08-21 07:27:41.052] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:27:39Z", "value" => "online"} [2026-08-21 07:27:41.139] [DEBUG] QUERY OK db=86.0ms idle=102.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T07:27:39Z", "online", "network", 77076, ~N[2026-08-21 07:27:41], ~N[2026-08-21 07:27:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:41.139] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782330, itemkey: "network", value: "online", timestamp: "2026-08-21T07:27:39Z", message: "Network connectivity", status_log_id: 77076, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:41], updated_at: ~N[2026-08-21 07:27:41]}} [2026-08-21 07:27:41.139] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 07:27:41.140] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:27:39Z", "value" => "0"} [2026-08-21 07:27:41.202] [DEBUG] QUERY OK db=62.1ms idle=79.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T07:27:39Z", "0", "cpu", 77076, ~N[2026-08-21 07:27:41], ~N[2026-08-21 07:27:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:41.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782332, itemkey: "cpu", value: "0", timestamp: "2026-08-21T07:27:39Z", message: "CPU usage percentage", status_log_id: 77076, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:41], updated_at: ~N[2026-08-21 07:27:41]}} [2026-08-21 07:27:41.203] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:27:39Z", "value" => "1.0.0"} [2026-08-21 07:27:41.272] [DEBUG] QUERY OK db=69.2ms idle=64.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T07:27:39Z", "1.0.0", "parameter_config", 77076, ~N[2026-08-21 07:27:41], ~N[2026-08-21 07:27:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:41.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782334, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T07:27:39Z", message: "Current parameters version", status_log_id: 77076, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:41], updated_at: ~N[2026-08-21 07:27:41]}} [2026-08-21 07:27:41.273] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:27:39Z", "value" => "1.0.1"} [2026-08-21 07:27:41.354] [DEBUG] QUERY OK db=80.6ms idle=70.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T07:27:39Z", "1.0.1", "emv_config", 77076, ~N[2026-08-21 07:27:41], ~N[2026-08-21 07:27:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:41.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782336, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T07:27:39Z", message: "Current EMV config version", status_log_id: 77076, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:41], updated_at: ~N[2026-08-21 07:27:41]}} [2026-08-21 07:27:41.354] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:27:39Z", "value" => ""} [2026-08-21 07:27:41.430] [DEBUG] QUERY OK db=74.3ms queue=0.6ms idle=82.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T07:27:39Z", "keys_config", 77076, ~N[2026-08-21 07:27:41], ~N[2026-08-21 07:27:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:41.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782338, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T07:27:39Z", message: "Current keys config version", status_log_id: 77076, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:41], updated_at: ~N[2026-08-21 07:27:41]}} [2026-08-21 07:27:41.430] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:27:39Z", "value" => "3.8.7.3"} [2026-08-21 07:27:41.485] [DEBUG] QUERY OK db=54.2ms idle=76.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T07:27:39Z", "3.8.7.3", "application", 77076, ~N[2026-08-21 07:27:41], ~N[2026-08-21 07:27:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:41.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782340, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T07:27:39Z", message: "Current application version", status_log_id: 77076, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:41], updated_at: ~N[2026-08-21 07:27:41]}} [2026-08-21 07:27:41.486] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:27:40Z"} [2026-08-21 07:27:41.486] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:27:40Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 37, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:27:44.322] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:27:44.324] [INFO ] Incoming JSON payload: {"oid":"3134ed63-3c51-4394-8bee-243497a9b173","sn":"98251226730001","uploadTime":"2026-08-21T07:27:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"ram_free_mb","value":"895","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:27:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:27:44.331] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3134ed63-3c51-4394-8bee-243497a9b173", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:27:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:27:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:27:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:27:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:27:43Z", "value" => "895"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:27:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:27:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:27:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:27:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:27:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:27:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:27:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:27:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:27:43Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:27:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:27:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:27:43Z", "vendor" => "morefun"} [2026-08-21 07:27:44.331] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:27:44.332] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:27:44.332] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:27:44.335] [DEBUG] QUERY OK source="parameter_templates" db=3.0ms idle=1215.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-08-21 07:27:44.340] [DEBUG] QUERY OK source="parameter_templates" db=4.3ms idle=260.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-08-21 07:27:44.340] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:27:44.345] [DEBUG] QUERY OK source="tms_terminals" db=4.4ms idle=5.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:27:44.414] [DEBUG] QUERY OK source="tms_terminals" db=68.0ms queue=0.3ms idle=7.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 07:27:44], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:27:44.414] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:27:44.414] [INFO ] Event published: terminal_updated [2026-08-21 07:27:44.415] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:27:44.415] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:27:44.415] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:27:44.416] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.7ms idle=69.3ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:27:44], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:27:44.422] [DEBUG] QUERY OK source="tms_terminals" db=5.2ms idle=2.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:27:44.423] [DEBUG] QUERY OK source="terminal_group_rules" db=0.9ms idle=0.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:27:44.423] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:27:44.497] [DEBUG] QUERY OK source="tms_terminals" db=39.1ms queue=41.1ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 07:27:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:27:44.497] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:27:44.500] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=74.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-08-21 07:27:44.601] [DEBUG] QUERY OK source="tms_terminals" db=58.3ms queue=41.7ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:27:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:27:44.708] [DEBUG] QUERY OK db=106.7ms idle=101.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "3134ed63-3c51-4394-8bee-243497a9b173", "2026-08-21T07:27:43Z", ~N[2026-08-21 07:27:44], ~N[2026-08-21 07:27:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:27:44.710] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77078, oid: "3134ed63-3c51-4394-8bee-243497a9b173", upload_time: "2026-08-21T07:27:43Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:44], updated_at: ~N[2026-08-21 07:27:44]} [2026-08-21 07:27:44.710] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:27:43Z", "value" => "morefun"} [2026-08-21 07:27:44.758] [DEBUG] QUERY OK db=44.1ms queue=3.5ms idle=110.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "morefun", "vendor", 77078, ~N[2026-08-21 07:27:44], ~N[2026-08-21 07:27:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:44.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782343, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:44], updated_at: ~N[2026-08-21 07:27:44]}} [2026-08-21 07:27:44.759] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:27:43Z", "value" => "kiosk_launcher"} [2026-08-21 07:27:44.808] [DEBUG] QUERY OK db=48.2ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "kiosk_launcher", "model", 77078, ~N[2026-08-21 07:27:44], ~N[2026-08-21 07:27:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:44.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782344, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:44], updated_at: ~N[2026-08-21 07:27:44]}} [2026-08-21 07:27:44.808] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:27:43Z", "value" => "1.0"} [2026-08-21 07:27:44.850] [DEBUG] QUERY OK db=41.3ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "1.0", "app_version", 77078, ~N[2026-08-21 07:27:44], ~N[2026-08-21 07:27:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:44.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782346, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:44], updated_at: ~N[2026-08-21 07:27:44]}} [2026-08-21 07:27:44.850] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:27:43Z", "value" => "13"} [2026-08-21 07:27:44.906] [DEBUG] QUERY OK db=55.2ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "13", "android_version", 77078, ~N[2026-08-21 07:27:44], ~N[2026-08-21 07:27:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:44.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782348, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:44], updated_at: ~N[2026-08-21 07:27:44]}} [2026-08-21 07:27:44.906] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:27:43Z", "value" => "895"} [2026-08-21 07:27:44.940] [DEBUG] QUERY OK db=33.6ms idle=57.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "895", "ram_free_mb", 77078, ~N[2026-08-21 07:27:44], ~N[2026-08-21 07:27:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:44.941] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782350, itemkey: "ram_free_mb", value: "895", timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:44], updated_at: ~N[2026-08-21 07:27:44]}} [2026-08-21 07:27:44.941] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:27:43Z", "value" => "WIFI"} [2026-08-21 07:27:44.994] [DEBUG] QUERY OK db=52.7ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "WIFI", "network_type", 77078, ~N[2026-08-21 07:27:44], ~N[2026-08-21 07:27:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:44.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782352, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:44], updated_at: ~N[2026-08-21 07:27:44]}} [2026-08-21 07:27:44.994] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:27:43Z", "value" => "true"} [2026-08-21 07:27:45.059] [DEBUG] QUERY OK db=64.6ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "true", "kiosk_active", 77078, ~N[2026-08-21 07:27:44], ~N[2026-08-21 07:27:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:45.060] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782354, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:44], updated_at: ~N[2026-08-21 07:27:44]}} [2026-08-21 07:27:45.060] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:27:43Z", "value" => ""} [2026-08-21 07:27:45.120] [DEBUG] QUERY OK db=59.2ms idle=66.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:27:43Z", "sim_operator", 77078, ~N[2026-08-21 07:27:45], ~N[2026-08-21 07:27:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:45.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782356, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:45], updated_at: ~N[2026-08-21 07:27:45]}} [2026-08-21 07:27:45.122] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:27:43Z", "value" => "UNKNOWN"} [2026-08-21 07:27:45.189] [DEBUG] QUERY OK db=63.1ms queue=0.1ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "UNKNOWN", "sim_number", 77078, ~N[2026-08-21 07:27:45], ~N[2026-08-21 07:27:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:45.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782358, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:45], updated_at: ~N[2026-08-21 07:27:45]}} [2026-08-21 07:27:45.190] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:27:43Z", "value" => "UNKNOWN"} [2026-08-21 07:27:45.252] [DEBUG] QUERY OK db=60.9ms idle=70.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "UNKNOWN", "sim_iccid", 77078, ~N[2026-08-21 07:27:45], ~N[2026-08-21 07:27:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:45.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782360, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:45], updated_at: ~N[2026-08-21 07:27:45]}} [2026-08-21 07:27:45.254] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:27:43Z", "value" => "UNKNOWN"} [2026-08-21 07:27:45.298] [DEBUG] QUERY OK db=43.1ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "UNKNOWN", "sim_imsi", 77078, ~N[2026-08-21 07:27:45], ~N[2026-08-21 07:27:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:45.300] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782362, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:45], updated_at: ~N[2026-08-21 07:27:45]}} [2026-08-21 07:27:45.300] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:27:43Z", "value" => "UNKNOWN"} [2026-08-21 07:27:45.353] [DEBUG] QUERY OK db=52.3ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "UNKNOWN", "sim_iccid2", 77078, ~N[2026-08-21 07:27:45], ~N[2026-08-21 07:27:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:45.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782364, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:45], updated_at: ~N[2026-08-21 07:27:45]}} [2026-08-21 07:27:45.354] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:27:43Z", "value" => "UNKNOWN"} [2026-08-21 07:27:45.448] [DEBUG] QUERY OK db=92.9ms queue=0.1ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "UNKNOWN", "sim_imsi2", 77078, ~N[2026-08-21 07:27:45], ~N[2026-08-21 07:27:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:45.449] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782366, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:45], updated_at: ~N[2026-08-21 07:27:45]}} [2026-08-21 07:27:45.450] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:27:43Z", "value" => "26"} [2026-08-21 07:27:45.511] [DEBUG] QUERY OK db=59.4ms idle=98.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "26", "data_usage_mb", 77078, ~N[2026-08-21 07:27:45], ~N[2026-08-21 07:27:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:45.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782368, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:45], updated_at: ~N[2026-08-21 07:27:45]}} [2026-08-21 07:27:45.512] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:27:43Z", "value" => "0"} [2026-08-21 07:27:45.583] [DEBUG] QUERY OK db=70.4ms idle=65.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "0", "mobile_data_mb", 77078, ~N[2026-08-21 07:27:45], ~N[2026-08-21 07:27:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:45.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782370, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:45], updated_at: ~N[2026-08-21 07:27:45]}} [2026-08-21 07:27:45.587] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:27:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:27:45.645] [DEBUG] QUERY OK db=57.3ms idle=76.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:27:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77078, ~N[2026-08-21 07:27:45], ~N[2026-08-21 07:27:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:27:45.647] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782372, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:27:43Z", message: nil, status_log_id: 77078, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:27:45], updated_at: ~N[2026-08-21 07:27:45]}} [2026-08-21 07:28:00.696] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:27:40Z"} [2026-08-21 07:28:00.696] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:27:40Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 38, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:28:00.704] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:27:40Z"} [2026-08-21 07:28:00.704] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:27:40Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 39, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:28:00.711] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:27:40Z"} [2026-08-21 07:28:00.711] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:27:40Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 40, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:28:13.856] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 31m, MIS in 0h 31m [2026-08-21 07:28:13.891] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 07:28:13.901] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 07:28:14.672] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:28:14.672] [INFO ] Incoming JSON payload: {"oid":"9831cfb8-ecd0-41e4-b301-005b5834487f","sn":"98251226730001","uploadTime":"2026-08-21T07:28:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"ram_free_mb","value":"895","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:28:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:28:14.673] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "9831cfb8-ecd0-41e4-b301-005b5834487f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:28:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:28:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:28:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:28:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:28:14Z", "value" => "895"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:28:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:28:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:28:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:28:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:28:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:28:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:28:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:28:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:28:14Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:28:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:28:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:28:14Z", "vendor" => "morefun"} [2026-08-21 07:28:14.673] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:28:14.673] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:28:14.673] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:28:14.686] [DEBUG] QUERY OK source="parameter_templates" db=12.5ms queue=0.1ms idle=548.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-08-21 07:28:14.687] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=480.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-08-21 07:28:14.687] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:28:14.690] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:28:14.690] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:28:14.763] [DEBUG] QUERY OK source="tms_terminals" db=27.4ms queue=41.3ms idle=6.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:28:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:28:14.763] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:28:14.766] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=73.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:28:14.803] [DEBUG] QUERY OK source="tms_terminals" db=36.7ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:28:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:28:14.848] [DEBUG] QUERY OK db=43.4ms idle=38.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "9831cfb8-ecd0-41e4-b301-005b5834487f", "2026-08-21T07:28:14Z", ~N[2026-08-21 07:28:14], ~N[2026-08-21 07:28:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:28:14.848] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77080, oid: "9831cfb8-ecd0-41e4-b301-005b5834487f", upload_time: "2026-08-21T07:28:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:14], updated_at: ~N[2026-08-21 07:28:14]} [2026-08-21 07:28:14.849] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:28:14Z", "value" => "morefun"} [2026-08-21 07:28:14.919] [DEBUG] QUERY OK db=69.8ms queue=0.3ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "morefun", "vendor", 77080, ~N[2026-08-21 07:28:14], ~N[2026-08-21 07:28:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:14.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782374, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:14], updated_at: ~N[2026-08-21 07:28:14]}} [2026-08-21 07:28:14.920] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:28:14Z", "value" => "kiosk_launcher"} [2026-08-21 07:28:14.958] [DEBUG] QUERY OK db=38.0ms idle=71.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "kiosk_launcher", "model", 77080, ~N[2026-08-21 07:28:14], ~N[2026-08-21 07:28:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:14.959] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782376, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:14], updated_at: ~N[2026-08-21 07:28:14]}} [2026-08-21 07:28:14.960] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:28:14Z", "value" => "1.0"} [2026-08-21 07:28:15.007] [DEBUG] QUERY OK db=47.2ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "1.0", "app_version", 77080, ~N[2026-08-21 07:28:14], ~N[2026-08-21 07:28:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:15.007] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782378, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:14], updated_at: ~N[2026-08-21 07:28:14]}} [2026-08-21 07:28:15.007] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:28:14Z", "value" => "13"} [2026-08-21 07:28:15.052] [DEBUG] QUERY OK db=42.3ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "13", "android_version", 77080, ~N[2026-08-21 07:28:15], ~N[2026-08-21 07:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:15.053] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782380, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:15], updated_at: ~N[2026-08-21 07:28:15]}} [2026-08-21 07:28:15.053] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:28:14Z", "value" => "895"} [2026-08-21 07:28:15.117] [DEBUG] QUERY OK db=63.7ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "895", "ram_free_mb", 77080, ~N[2026-08-21 07:28:15], ~N[2026-08-21 07:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:15.118] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782382, itemkey: "ram_free_mb", value: "895", timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:15], updated_at: ~N[2026-08-21 07:28:15]}} [2026-08-21 07:28:15.118] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:28:14Z", "value" => "WIFI"} [2026-08-21 07:28:15.149] [DEBUG] QUERY OK db=30.9ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "WIFI", "network_type", 77080, ~N[2026-08-21 07:28:15], ~N[2026-08-21 07:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:15.150] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782384, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:15], updated_at: ~N[2026-08-21 07:28:15]}} [2026-08-21 07:28:15.152] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:28:14Z", "value" => "true"} [2026-08-21 07:28:15.195] [DEBUG] QUERY OK db=43.2ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "true", "kiosk_active", 77080, ~N[2026-08-21 07:28:15], ~N[2026-08-21 07:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:15.195] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782386, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:15], updated_at: ~N[2026-08-21 07:28:15]}} [2026-08-21 07:28:15.196] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:28:14Z", "value" => ""} [2026-08-21 07:28:15.241] [DEBUG] QUERY OK db=40.0ms queue=1.8ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:28:14Z", "sim_operator", 77080, ~N[2026-08-21 07:28:15], ~N[2026-08-21 07:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:15.241] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782388, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:15], updated_at: ~N[2026-08-21 07:28:15]}} [2026-08-21 07:28:15.241] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:28:14Z", "value" => "UNKNOWN"} [2026-08-21 07:28:15.276] [DEBUG] QUERY OK db=34.2ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "UNKNOWN", "sim_number", 77080, ~N[2026-08-21 07:28:15], ~N[2026-08-21 07:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:15.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782390, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:15], updated_at: ~N[2026-08-21 07:28:15]}} [2026-08-21 07:28:15.276] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:28:14Z", "value" => "UNKNOWN"} [2026-08-21 07:28:15.321] [DEBUG] QUERY OK db=43.9ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "UNKNOWN", "sim_iccid", 77080, ~N[2026-08-21 07:28:15], ~N[2026-08-21 07:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:15.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782392, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:15], updated_at: ~N[2026-08-21 07:28:15]}} [2026-08-21 07:28:15.322] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:28:14Z", "value" => "UNKNOWN"} [2026-08-21 07:28:15.404] [DEBUG] QUERY OK db=77.4ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "UNKNOWN", "sim_imsi", 77080, ~N[2026-08-21 07:28:15], ~N[2026-08-21 07:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:15.406] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782394, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:15], updated_at: ~N[2026-08-21 07:28:15]}} [2026-08-21 07:28:15.406] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:28:14Z", "value" => "UNKNOWN"} [2026-08-21 07:28:15.476] [DEBUG] QUERY OK db=69.2ms idle=85.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "UNKNOWN", "sim_iccid2", 77080, ~N[2026-08-21 07:28:15], ~N[2026-08-21 07:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:15.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782396, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:15], updated_at: ~N[2026-08-21 07:28:15]}} [2026-08-21 07:28:15.476] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:28:14Z", "value" => "UNKNOWN"} [2026-08-21 07:28:15.512] [DEBUG] QUERY OK db=35.4ms idle=72.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "UNKNOWN", "sim_imsi2", 77080, ~N[2026-08-21 07:28:15], ~N[2026-08-21 07:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:15.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782398, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:15], updated_at: ~N[2026-08-21 07:28:15]}} [2026-08-21 07:28:15.512] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:28:14Z", "value" => "26"} [2026-08-21 07:28:15.571] [DEBUG] QUERY OK db=57.8ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "26", "data_usage_mb", 77080, ~N[2026-08-21 07:28:15], ~N[2026-08-21 07:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:15.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782400, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:15], updated_at: ~N[2026-08-21 07:28:15]}} [2026-08-21 07:28:15.571] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:28:14Z", "value" => "0"} [2026-08-21 07:28:15.610] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 07:28:15.611] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 07:28:15.613] [INFO ] Building initial filter cache... [2026-08-21 07:28:15.622] [DEBUG] QUERY OK db=50.7ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "0", "mobile_data_mb", 77080, ~N[2026-08-21 07:28:15], ~N[2026-08-21 07:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:15.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782402, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:15], updated_at: ~N[2026-08-21 07:28:15]}} [2026-08-21 07:28:15.623] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:28:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:28:15.635] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.5ms idle=162.8ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 07:28:15.652] [DEBUG] QUERY OK source="filter_usage" db=0.4ms queue=0.5ms idle=51.1ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 07:28:15.654] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 07:28:15.703] [DEBUG] QUERY OK db=76.2ms idle=56.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:28:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77080, ~N[2026-08-21 07:28:15], ~N[2026-08-21 07:28:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:28:15.717] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782404, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:28:14Z", message: nil, status_log_id: 77080, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:28:15], updated_at: ~N[2026-08-21 07:28:15]}} [2026-08-21 07:28:15.800] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:28:15.921] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:28:15.933] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:28:15.933] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:28:15.934] [DEBUG] QUERY OK source="core_transactions" db=19.3ms queue=0.5ms idle=277.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], "419926360000000", "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:47 [2026-08-21 07:28:15.956] [DEBUG] QUERY OK source="merchant_adjustments" db=0.7ms queue=1.1ms idle=301.9ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-08-06], ~D[2026-08-06], "419926360000000", "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:50 [2026-08-21 07:28:15.971] [DEBUG] QUERY OK source="tid_masters" db=2.0ms queue=4.5ms idle=39.7ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.merchant_display_names/1, at: lib/settlement_core/settlement_summary_builder.ex:196 [2026-08-21 07:28:36.044] [INFO ] Running offline device check... [2026-08-21 07:28:36.044] [INFO ] Starting offline device check... [2026-08-21 07:28:36.049] [DEBUG] QUERY OK source="tms_terminals" db=3.8ms queue=0.1ms idle=912.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-08-21 07:28:36.069] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.4ms idle=755.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:28:36.079] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.9ms idle=20.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:28:36.081] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.090] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=0.1ms idle=5.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.093] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms queue=0.1ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.096] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.099] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.3ms 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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.101] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.104] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.111] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms queue=1.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.113] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.132] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.3ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.152] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.3ms queue=0.2ms 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 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.155] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms queue=0.1ms idle=20.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.156] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.157] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.185] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=27.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.187] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=28.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:28:36.189] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.194] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms 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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.196] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.201] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=3.0ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.248] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=46.5ms idle=5.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.249] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=47.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:28:36.251] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.265] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.274] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms idle=13.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.277] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=9.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.279] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=1.2ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.281] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.288] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms queue=3.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.290] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=7.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.292] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.293] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.296] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.301] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.307] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.313] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.316] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=7.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.317] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.318] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.321] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.323] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.326] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=1.0ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.327] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.330] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.332] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.337] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.342] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.345] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=0.1ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:28:36.345] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 07:28:36.348] [INFO ] Offline device check completed successfully [2026-08-21 07:32:28.915] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 07:32:33.916] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 07:33:35.817] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 07:33:35.819] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.1ms idle=1592.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-08-21 07:33:35.822] [DEBUG] QUERY OK source="filter_usage" db=3.0ms idle=688.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-08-21 07:33:35.822] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 07:33:36.352] [INFO ] Running offline device check... [2026-08-21 07:33:36.352] [INFO ] Starting offline device check... [2026-08-21 07:33:36.355] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=530.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 07:33:36.365] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.4ms idle=218.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:33:36.372] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.376] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=8.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.381] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=1.3ms 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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.383] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.386] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.389] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.391] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.392] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.394] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.399] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.400] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.418] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.9ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.432] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.434] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.1ms idle=13.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.438] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.439] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.464] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.465] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=25.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:33:36.468] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.470] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.472] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.473] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.518] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=44.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.520] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=45.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:33:36.526] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.535] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms queue=0.1ms idle=6.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.537] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=9.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.541] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.543] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.545] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.551] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.554] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.556] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.559] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.560] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.562] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.565] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.568] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.570] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.571] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.8ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.573] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.578] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.579] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.582] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=2.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.585] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.587] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.589] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.591] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.594] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.595] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.601] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:33:36.604] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 07:33:36.604] [INFO ] Offline device check completed successfully [2026-08-21 07:34:23.391] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 07:34:28.392] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 07:34:32.587] [ERROR] MyXQL.Connection (#PID<0.1062.0> (:proc_lib)) disconnected: ** (DBConnection.ConnectionError) client #PID<0.1138.0> (:proc_lib) timed out because it queued and checked out the connection for longer than 15000ms #PID<0.1138.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:848: DBConnection.execute/4 (ecto_sql 3.13.4) lib/ecto/adapters/myxql/connection.ex:41: Ecto.Adapters.MyXQL.Connection.execute/4 (ecto_sql 3.13.4) lib/ecto/adapters/sql.ex:1055: 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/sunny/tmsapp/tmsuat_apps/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-08-21 07:35:06.633] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 07:35:11.637] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 07:35:12.036] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 07:35:15.958] [ERROR] MyXQL.Connection (#PID<0.1063.0> (:proc_lib)) disconnected: ** (DBConnection.ConnectionError) client #PID<0.1138.0> (:proc_lib) timed out because it queued and checked out the connection for longer than 15000ms #PID<0.1138.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:848: DBConnection.execute/4 (ecto_sql 3.13.4) lib/ecto/adapters/myxql/connection.ex:41: Ecto.Adapters.MyXQL.Connection.execute/4 (ecto_sql 3.13.4) lib/ecto/adapters/sql.ex:1055: 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/sunny/tmsapp/tmsuat_apps/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-08-21 07:38:36.607] [INFO ] Running offline device check... [2026-08-21 07:38:36.607] [INFO ] Starting offline device check... [2026-08-21 07:38:36.610] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=604.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 07:38:36.626] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.7ms idle=295.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:38:36.639] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.641] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=14.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.644] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.2ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.645] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.647] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.650] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.652] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.654] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.657] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.665] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.3ms queue=0.1ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.666] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=8.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.688] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.4ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.697] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms queue=0.1ms idle=22.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.702] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=12.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.704] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.705] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.729] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.730] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.2ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.734] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.736] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.1ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.737] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.740] [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-08-21 07:38:36.784] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=43.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.785] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=45.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:38:36.789] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.799] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.2ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.802] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=10.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.811] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.9ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 07:38:36.813] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.815] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 07:38:36.819] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.822] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.823] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.825] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.826] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.828] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.828] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.830] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.831] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.833] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.834] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.835] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.836] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.837] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.838] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.839] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.842] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.843] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.844] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.845] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.846] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:38:36.846] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 07:38:36.846] [INFO ] Offline device check completed successfully [2026-08-21 07:41:33.772] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 18m, MIS in 0h 18m [2026-08-21 07:41:33.840] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 07:41:33.880] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 07:41:36.481] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 07:41:36.483] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 07:41:36.484] [INFO ] Building initial filter cache... [2026-08-21 07:41:36.524] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.4ms idle=1332.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-08-21 07:41:36.548] [DEBUG] QUERY OK source="filter_usage" db=0.9ms queue=4.5ms idle=376.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-08-21 07:41:36.548] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 07:41:36.681] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:41:36.689] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:41:36.785] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:41:36.812] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:41:36.812] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:41:36.886] [DEBUG] QUERY OK source="core_transactions" db=14.0ms queue=4.2ms idle=371.1ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], "419926360000000", "425590250000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:41:36.890] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=2.4ms idle=338.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:41:36.927] [DEBUG] QUERY OK source="tid_masters" db=2.6ms queue=29.2ms idle=12.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:41:36.940] [DEBUG] QUERY OK source="merchant_adjustments" db=4.5ms queue=2.5ms idle=43.0ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-08-06], ~D[2026-08-06], "419926360000000", "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:41:36.971] [DEBUG] QUERY OK source="core_transactions" db=1.8ms queue=11.6ms idle=30.4ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], "419926360000000", "425590250000000", "__none__", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:41:36.982] [DEBUG] QUERY OK source="core_transactions" db=10.0ms idle=31.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:41:37.019] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=33.7ms idle=13.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:41:37.036] [DEBUG] QUERY OK source="merchant_adjustments" db=7.0ms queue=9.4ms idle=37.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-08-06], ~D[2026-08-06], "419926360000000", "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:41:37.062] [DEBUG] QUERY OK source="core_transactions" db=2.4ms queue=7.0ms idle=33.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], "__none__", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:41:37.077] [DEBUG] QUERY OK source="core_transactions" db=14.0ms queue=0.4ms idle=27.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:41:37.103] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=24.7ms idle=16.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:41:37.106] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=1.0ms idle=26.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?)) [~D[2026-08-06], ~D[2026-08-06], "__none__"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:41:37.147] [DEBUG] QUERY OK source="core_transactions" db=1.1ms queue=35.8ms idle=6.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], "425590250000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:41:37.148] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=41.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:41:37.188] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=38.9ms idle=2.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:41:37.190] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=0.7ms idle=15.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?)) [~D[2026-08-06], ~D[2026-08-06], "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:42:07.760] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 17m, MIS in 0h 17m [2026-08-21 07:42:07.847] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 07:42:07.894] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 07:42:10.246] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 07:42:10.248] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 07:42:10.251] [INFO ] Building initial filter cache... [2026-08-21 07:42:10.271] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.8ms idle=1140.5ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 07:42:10.280] [DEBUG] QUERY OK source="filter_usage" db=0.6ms queue=0.4ms idle=144.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-08-21 07:42:10.280] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 07:42:10.329] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:42:10.334] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:42:10.380] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:42:10.384] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:42:10.384] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:42:10.390] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=1.0ms idle=123.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], "419926360000000", "425590250000000", "__none__", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:42:10.391] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=0.6ms idle=109.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06], ~D[2026-08-06]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:42:10.427] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=32.6ms idle=8.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:42:10.438] [DEBUG] QUERY OK source="merchant_adjustments" db=6.4ms queue=1.1ms idle=39.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-08-06], ~D[2026-08-06], "419926360000000", "425590250000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:42:10.443] [INFO ] [EmailPdfGenerator] Rendering settlement_summary_pdf to PDF: Settlement_Summary_2026-08-06_to_2026-08-06.pdf [2026-08-21 07:42:10.467] [INFO ] [EmailPdfGenerator] ✓ HTML rendered, size: 3741 bytes [2026-08-21 07:42:10.469] [INFO ] [EmailPdfGenerator] ✓ HTML written to /tmp/platform_web_pdf_228/document.html [2026-08-21 07:42:10.470] [INFO ] [EmailPdfGenerator] Using wkhtmltopdf [2026-08-21 07:42:11.303] [INFO ] [EmailPdfGenerator] ✓ PDF rendered successfully, size: 19262 bytes [2026-08-21 07:43:13.464] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 07:43:36.847] [INFO ] Running offline device check... [2026-08-21 07:43:36.847] [INFO ] Starting offline device check... [2026-08-21 07:43:36.849] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=1434.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 07:43:36.861] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.8ms idle=820.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:43:36.870] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.0ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.872] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.873] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.873] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.874] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.875] [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-08-21 07:43:36.875] [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-08-21 07:43:36.876] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.878] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.887] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.2ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.888] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.908] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.915] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=20.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:43:36.922] [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 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.924] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=7.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.926] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.955] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=28.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.961] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=2.4ms idle=31.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:43:36.964] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.968] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms queue=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.969] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:36.970] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.013] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=42.0ms 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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.015] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=1.1ms idle=42.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:43:37.016] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.024] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.026] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.029] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.030] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.032] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.037] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.038] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.040] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.042] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.042] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.045] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.046] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.049] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.050] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.051] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.052] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.053] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.054] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.055] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.056] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.057] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.058] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.059] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.060] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.061] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.062] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:43:37.062] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 07:43:37.062] [INFO ] Offline device check completed successfully [2026-08-21 07:43:48.062] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 07:43:48.988] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 07:45:43.151] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 14m, MIS in 0h 14m [2026-08-21 07:45:43.198] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 07:45:43.226] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 07:45:44.730] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 07:45:44.730] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 07:45:44.731] [INFO ] Building initial filter cache... [2026-08-21 07:45:44.741] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.3ms idle=950.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-08-21 07:45:44.747] [DEBUG] QUERY OK source="filter_usage" db=0.4ms queue=0.4ms idle=107.7ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 07:45:44.747] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 07:45:44.818] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:45:44.838] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-08-21 07:45:44.848] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-08-21 07:45:45.457] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:45:45.457] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T07:45:45Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T07:45:45Z","value":"19"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T07:45:45Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T07:45:45Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T07:45:45Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T07:45:45Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T07:45:45Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T07:45:45Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T07:45:45Z","vendor":"MoreFun"} [2026-08-21 07:45:45.478] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:45:45Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:45:45Z", "value" => "19"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:45:45Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:45:45Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:45:45Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:45:45Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:45:45Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:45:45Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:45:45Z", "vendor" => "MoreFun"} [2026-08-21 07:45:45.478] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 07:45:45.494] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:45:45.497] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 07:45:45.508] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=1.0ms idle=760.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-08-21 07:45:45.514] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms queue=1.5ms idle=718.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:45:45.535] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms queue=1.9ms idle=13.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-08-21 07:45:45.612] [DEBUG] QUERY OK source="parameter_definitions" db=2.0ms queue=1.0ms idle=95.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-08-21 07:45:45.641] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms queue=2.8ms idle=113.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-08-21 07:45:45.656] [DEBUG] QUERY OK source="pos_merchant" db=1.2ms queue=5.2ms idle=37.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 07:45:45.673] [DEBUG] QUERY OK db=2.0ms queue=1.0ms idle=1029.8ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["626165170000000"] [2026-08-21 07:45:45.673] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 07:45:45.680] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms queue=0.5ms idle=37.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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 07:45:45.691] [DEBUG] QUERY OK source="address" db=0.5ms queue=0.3ms idle=33.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 07:45:45.692] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 07:45:45.717] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 07:45:45.827] [DEBUG] QUERY OK db=42.6ms queue=1.4ms idle=85.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "2ee7b3f418b7cd25ea82a074b875de0b57fc26ff78d1ce22af09c2d574aafb0e", 5218, 938, ~U[2026-08-21 07:45:45Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 07:45:45], ~N[2026-08-21 07:45:45]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 07:45:45.827] [INFO ] AutoPushService: Created push log 48399 for MF919 params.zip [2026-08-21 07:45:45.838] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 5218, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 07:45:45.838] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:45:45.853] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 07:45:45.897] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms queue=13.7ms idle=73.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-08-21 07:45:45.943] [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-08-21 07:45:46.008] [DEBUG] QUERY OK db=58.2ms queue=0.9ms idle=139.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "02d3dfe2e91ed27266985cce4e0c6019b3bf3c55f5da865feeac89126de78ca8", 837, 17947, ~U[2026-08-21 07:45:45Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 07:45:45], ~N[2026-08-21 07:45:45]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 07:45:46.009] [INFO ] AutoPushService: Created push log 48400 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 07:45:46.009] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 837, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 07:45:46.009] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:45:46.009] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 07:45:46.014] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.6ms idle=115.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-08-21 07:45:46.027] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 07:45:46.030] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 07:45:46.030] [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-08-21 07:45:46.384] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 07:45:46.384] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:45:46.386] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:45:46.395] [DEBUG] QUERY OK source="config_file_versions" db=8.4ms idle=373.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-08-21 07:45:46.396] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:45:46.396] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 07:45:46.468] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=435.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 07:45:46.482] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:45:46.546] [DEBUG] QUERY OK source="tms_terminals" db=60.6ms queue=2.8ms idle=86.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:45:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:45:46.569] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=2.6ms idle=96.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-08-21 07:45:46.571] [DEBUG] QUERY OK source="config_file_versions" db=1.9ms queue=0.1ms idle=23.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-08-21 07:45:46.574] [DEBUG] QUERY OK source="config_file_versions" db=2.3ms 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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:45:46.574] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 07:45:46.695] [DEBUG] QUERY OK source="parameter_push_logs" db=60.2ms queue=1.5ms idle=62.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-08-21 07:15:46]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 07:45:46.695] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 07:45:46.695] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 07:45:46.698] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=121.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 07:45:46.699] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms 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-08-21 07:45:46.700] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:45:46.701] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:45:46.765] [DEBUG] QUERY OK source="tms_terminals" db=63.3ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:45:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:45:46.839] [DEBUG] QUERY OK db=51.9ms queue=2.6ms idle=83.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T07:45:45Z", ~N[2026-08-21 07:45:46], ~N[2026-08-21 07:45:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:45:46.874] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77112, oid: "organization_id", upload_time: "2026-08-21T07:45:45Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:46], updated_at: ~N[2026-08-21 07:45:46]} [2026-08-21 07:45:46.874] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:45:45Z", "value" => "online"} [2026-08-21 07:45:46.905] [DEBUG] QUERY OK db=30.3ms queue=0.5ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T07:45:45Z", "online", "status", 77112, ~N[2026-08-21 07:45:46], ~N[2026-08-21 07:45:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:46.905] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782811, itemkey: "status", value: "online", timestamp: "2026-08-21T07:45:45Z", message: "Terminal status update", status_log_id: 77112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:46], updated_at: ~N[2026-08-21 07:45:46]}} [2026-08-21 07:45:46.905] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 07:45:46.906] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:45:45Z", "value" => "19"} [2026-08-21 07:45:46.943] [DEBUG] QUERY OK db=36.8ms queue=0.3ms idle=67.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T07:45:45Z", "19", "battery", 77112, ~N[2026-08-21 07:45:46], ~N[2026-08-21 07:45:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:46.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782812, itemkey: "battery", value: "19", timestamp: "2026-08-21T07:45:45Z", message: "Battery level", status_log_id: 77112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:46], updated_at: ~N[2026-08-21 07:45:46]}} [2026-08-21 07:45:46.944] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:45:45Z", "value" => "online"} [2026-08-21 07:45:47.002] [DEBUG] QUERY OK db=58.2ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T07:45:45Z", "online", "network", 77112, ~N[2026-08-21 07:45:46], ~N[2026-08-21 07:45:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:47.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782813, itemkey: "network", value: "online", timestamp: "2026-08-21T07:45:45Z", message: "Network connectivity", status_log_id: 77112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:46], updated_at: ~N[2026-08-21 07:45:46]}} [2026-08-21 07:45:47.002] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 07:45:47.004] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:45:45Z", "value" => "0"} [2026-08-21 07:45:47.067] [DEBUG] QUERY OK db=62.8ms queue=0.1ms idle=61.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T07:45:45Z", "0", "cpu", 77112, ~N[2026-08-21 07:45:47], ~N[2026-08-21 07:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:47.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782814, itemkey: "cpu", value: "0", timestamp: "2026-08-21T07:45:45Z", message: "CPU usage percentage", status_log_id: 77112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:47], updated_at: ~N[2026-08-21 07:45:47]}} [2026-08-21 07:45:47.068] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:45:45Z", "value" => "1.0.0"} [2026-08-21 07:45:48.298] [DEBUG] QUERY OK db=1227.7ms queue=0.1ms idle=68.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T07:45:45Z", "1.0.0", "parameter_config", 77112, ~N[2026-08-21 07:45:47], ~N[2026-08-21 07:45:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:48.298] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782815, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T07:45:45Z", message: "Current parameters version", status_log_id: 77112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:47], updated_at: ~N[2026-08-21 07:45:47]}} [2026-08-21 07:45:48.299] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:45:45Z", "value" => "1.0.1"} [2026-08-21 07:45:48.348] [DEBUG] QUERY OK db=48.7ms idle=470.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T07:45:45Z", "1.0.1", "emv_config", 77112, ~N[2026-08-21 07:45:48], ~N[2026-08-21 07:45:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:48.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782816, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T07:45:45Z", message: "Current EMV config version", status_log_id: 77112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:48], updated_at: ~N[2026-08-21 07:45:48]}} [2026-08-21 07:45:48.348] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:45:45Z", "value" => ""} [2026-08-21 07:45:48.414] [DEBUG] QUERY OK db=64.0ms queue=1.2ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T07:45:45Z", "keys_config", 77112, ~N[2026-08-21 07:45:48], ~N[2026-08-21 07:45:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:48.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782817, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T07:45:45Z", message: "Current keys config version", status_log_id: 77112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:48], updated_at: ~N[2026-08-21 07:45:48]}} [2026-08-21 07:45:48.414] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:45:45Z", "value" => "3.8.7.3"} [2026-08-21 07:45:48.463] [DEBUG] QUERY OK db=48.7ms idle=66.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T07:45:45Z", "3.8.7.3", "application", 77112, ~N[2026-08-21 07:45:48], ~N[2026-08-21 07:45:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:48.464] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782818, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T07:45:45Z", message: "Current application version", status_log_id: 77112, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:48], updated_at: ~N[2026-08-21 07:45:48]}} [2026-08-21 07:45:48.469] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:45:45Z"} [2026-08-21 07:45:48.477] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:45:45Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 2, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:45:50.267] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:45:50.268] [INFO ] Incoming JSON payload: {"oid":"7ed2009e-c74c-4aac-8c7d-cd392e8a4ffa","sn":"98251226730001","uploadTime":"2026-08-21T07:45:49Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"ram_free_mb","value":"880","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:45:49Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:45:50.269] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7ed2009e-c74c-4aac-8c7d-cd392e8a4ffa", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:45:49Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:45:49Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:45:49Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:45:49Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:45:49Z", "value" => "880"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:45:49Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:45:49Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:45:49Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:45:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:45:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:45:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:45:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:45:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:45:49Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:45:49Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:45:49Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:45:49Z", "vendor" => "morefun"} [2026-08-21 07:45:50.269] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:45:50.269] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:45:50.269] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:45:50.270] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=631.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-08-21 07:45:50.272] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=1.0ms idle=432.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-08-21 07:45:50.272] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:45:50.275] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.4ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:45:50.358] [DEBUG] QUERY OK source="tms_terminals" db=41.5ms queue=41.6ms idle=2.7ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 07:45:50], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:45:50.359] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:45:50.359] [INFO ] Event published: terminal_updated [2026-08-21 07:45:50.360] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:45:50.360] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:45:50.360] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:45:50.380] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.7ms queue=1.3ms idle=103.4ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:45:50], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:45:50.385] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=2.0ms idle=23.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:45:50.404] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms queue=1.9ms idle=16.6ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:45:50.404] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:45:50.419] [DEBUG] QUERY OK source="tms_terminals" db=36.9ms queue=0.5ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 07:45:50], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:45:50.420] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:45:50.424] [DEBUG] QUERY OK source="tms_terminals" db=4.2ms 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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:45:50.505] [DEBUG] QUERY OK source="tms_terminals" db=36.7ms queue=43.8ms idle=5.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:45:50], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:45:50.547] [DEBUG] QUERY OK db=38.9ms queue=1.6ms idle=82.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "7ed2009e-c74c-4aac-8c7d-cd392e8a4ffa", "2026-08-21T07:45:49Z", ~N[2026-08-21 07:45:50], ~N[2026-08-21 07:45:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:45:50.547] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77113, oid: "7ed2009e-c74c-4aac-8c7d-cd392e8a4ffa", upload_time: "2026-08-21T07:45:49Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:50], updated_at: ~N[2026-08-21 07:45:50]} [2026-08-21 07:45:50.548] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:45:49Z", "value" => "morefun"} [2026-08-21 07:45:50.763] [DEBUG] QUERY OK db=215.0ms queue=0.3ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "morefun", "vendor", 77113, ~N[2026-08-21 07:45:50], ~N[2026-08-21 07:45:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:50.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782819, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:50], updated_at: ~N[2026-08-21 07:45:50]}} [2026-08-21 07:45:50.765] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:45:49Z", "value" => "kiosk_launcher"} [2026-08-21 07:45:51.370] [DEBUG] QUERY OK db=556.7ms queue=41.8ms idle=223.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "kiosk_launcher", "model", 77113, ~N[2026-08-21 07:45:50], ~N[2026-08-21 07:45:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:51.370] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782820, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:50], updated_at: ~N[2026-08-21 07:45:50]}} [2026-08-21 07:45:51.371] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:45:49Z", "value" => "1.0"} [2026-08-21 07:45:51.433] [DEBUG] QUERY OK db=61.0ms idle=529.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "1.0", "app_version", 77113, ~N[2026-08-21 07:45:51], ~N[2026-08-21 07:45:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:51.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782821, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:51], updated_at: ~N[2026-08-21 07:45:51]}} [2026-08-21 07:45:51.436] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:45:49Z", "value" => "13"} [2026-08-21 07:45:51.475] [DEBUG] QUERY OK db=38.5ms queue=0.8ms idle=66.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "13", "android_version", 77113, ~N[2026-08-21 07:45:51], ~N[2026-08-21 07:45:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:51.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782822, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:51], updated_at: ~N[2026-08-21 07:45:51]}} [2026-08-21 07:45:51.476] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:45:49Z", "value" => "880"} [2026-08-21 07:45:51.531] [DEBUG] QUERY OK db=55.0ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "880", "ram_free_mb", 77113, ~N[2026-08-21 07:45:51], ~N[2026-08-21 07:45:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:51.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782823, itemkey: "ram_free_mb", value: "880", timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:51], updated_at: ~N[2026-08-21 07:45:51]}} [2026-08-21 07:45:51.531] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:45:49Z", "value" => "WIFI"} [2026-08-21 07:45:51.574] [DEBUG] QUERY OK db=42.6ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "WIFI", "network_type", 77113, ~N[2026-08-21 07:45:51], ~N[2026-08-21 07:45:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:51.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782824, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:51], updated_at: ~N[2026-08-21 07:45:51]}} [2026-08-21 07:45:51.575] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:45:49Z", "value" => "true"} [2026-08-21 07:45:51.616] [DEBUG] QUERY OK db=40.2ms queue=0.6ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "true", "kiosk_active", 77113, ~N[2026-08-21 07:45:51], ~N[2026-08-21 07:45:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:51.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782825, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:51], updated_at: ~N[2026-08-21 07:45:51]}} [2026-08-21 07:45:51.616] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:45:49Z", "value" => ""} [2026-08-21 07:45:51.671] [DEBUG] QUERY OK db=53.6ms queue=1.3ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:45:49Z", "sim_operator", 77113, ~N[2026-08-21 07:45:51], ~N[2026-08-21 07:45:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:51.672] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782826, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:51], updated_at: ~N[2026-08-21 07:45:51]}} [2026-08-21 07:45:51.672] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:45:49Z", "value" => "UNKNOWN"} [2026-08-21 07:45:51.703] [DEBUG] QUERY OK db=31.3ms idle=56.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "UNKNOWN", "sim_number", 77113, ~N[2026-08-21 07:45:51], ~N[2026-08-21 07:45:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:51.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782827, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:51], updated_at: ~N[2026-08-21 07:45:51]}} [2026-08-21 07:45:51.704] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:45:49Z", "value" => "UNKNOWN"} [2026-08-21 07:45:51.744] [DEBUG] QUERY OK db=39.7ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "UNKNOWN", "sim_iccid", 77113, ~N[2026-08-21 07:45:51], ~N[2026-08-21 07:45:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:51.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782828, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:51], updated_at: ~N[2026-08-21 07:45:51]}} [2026-08-21 07:45:51.745] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:45:49Z", "value" => "UNKNOWN"} [2026-08-21 07:45:51.810] [DEBUG] QUERY OK db=64.0ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "UNKNOWN", "sim_imsi", 77113, ~N[2026-08-21 07:45:51], ~N[2026-08-21 07:45:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:51.810] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782829, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:51], updated_at: ~N[2026-08-21 07:45:51]}} [2026-08-21 07:45:51.811] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:45:49Z", "value" => "UNKNOWN"} [2026-08-21 07:45:51.842] [DEBUG] QUERY OK db=30.1ms idle=67.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "UNKNOWN", "sim_iccid2", 77113, ~N[2026-08-21 07:45:51], ~N[2026-08-21 07:45:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:51.842] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782830, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:51], updated_at: ~N[2026-08-21 07:45:51]}} [2026-08-21 07:45:51.843] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:45:49Z", "value" => "UNKNOWN"} [2026-08-21 07:45:51.875] [DEBUG] QUERY OK db=30.6ms idle=2.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "UNKNOWN", "sim_imsi2", 77113, ~N[2026-08-21 07:45:51], ~N[2026-08-21 07:45:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:51.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782831, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:51], updated_at: ~N[2026-08-21 07:45:51]}} [2026-08-21 07:45:51.875] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:45:49Z", "value" => "26"} [2026-08-21 07:45:51.914] [DEBUG] QUERY OK db=38.3ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "26", "data_usage_mb", 77113, ~N[2026-08-21 07:45:51], ~N[2026-08-21 07:45:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:51.914] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782832, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:51], updated_at: ~N[2026-08-21 07:45:51]}} [2026-08-21 07:45:51.914] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:45:49Z", "value" => "0"} [2026-08-21 07:45:51.948] [DEBUG] QUERY OK db=33.3ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "0", "mobile_data_mb", 77113, ~N[2026-08-21 07:45:51], ~N[2026-08-21 07:45:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:51.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782833, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:51], updated_at: ~N[2026-08-21 07:45:51]}} [2026-08-21 07:45:51.950] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:45:49Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:45:52.042] [DEBUG] QUERY OK db=90.4ms queue=0.2ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:45:49Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77113, ~N[2026-08-21 07:45:51], ~N[2026-08-21 07:45:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:45:52.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782834, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:45:49Z", message: nil, status_log_id: 77113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:45:51], updated_at: ~N[2026-08-21 07:45:51]}} [2026-08-21 07:46:06.286] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:45:46Z"} [2026-08-21 07:46:06.287] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:45:46Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 3, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:46:20.606] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:46:20.606] [INFO ] Incoming JSON payload: {"oid":"e3954ebf-99a1-4256-9449-5cc96be213e3","sn":"98251226730001","uploadTime":"2026-08-21T07:46:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"ram_free_mb","value":"881","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:46:19Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:46:20.607] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e3954ebf-99a1-4256-9449-5cc96be213e3", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:46:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:46:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:46:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:46:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:46:19Z", "value" => "881"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:46:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:46:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:46:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:46:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:46:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:46:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:46:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:46:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:46:19Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:46:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:46:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:46:19Z", "vendor" => "morefun"} [2026-08-21 07:46:20.607] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:46:20.607] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:46:20.607] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:46:20.609] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1659.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-08-21 07:46:20.609] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=658.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-08-21 07:46:20.609] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:46:20.611] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:46:20.611] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:46:20.688] [DEBUG] QUERY OK source="tms_terminals" db=34.5ms queue=42.2ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:46:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:46:20.688] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:46:20.689] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=77.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-08-21 07:46:20.737] [DEBUG] QUERY OK source="tms_terminals" db=47.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:46:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:46:20.775] [DEBUG] QUERY OK db=37.2ms idle=48.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e3954ebf-99a1-4256-9449-5cc96be213e3", "2026-08-21T07:46:19Z", ~N[2026-08-21 07:46:20], ~N[2026-08-21 07:46:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:46:20.775] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77114, oid: "e3954ebf-99a1-4256-9449-5cc96be213e3", upload_time: "2026-08-21T07:46:19Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:20], updated_at: ~N[2026-08-21 07:46:20]} [2026-08-21 07:46:20.775] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:46:19Z", "value" => "morefun"} [2026-08-21 07:46:20.828] [DEBUG] QUERY OK db=52.0ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "morefun", "vendor", 77114, ~N[2026-08-21 07:46:20], ~N[2026-08-21 07:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:20.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782835, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:20], updated_at: ~N[2026-08-21 07:46:20]}} [2026-08-21 07:46:20.828] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:46:19Z", "value" => "kiosk_launcher"} [2026-08-21 07:46:20.868] [DEBUG] QUERY OK db=38.7ms queue=0.1ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "kiosk_launcher", "model", 77114, ~N[2026-08-21 07:46:20], ~N[2026-08-21 07:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:20.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782836, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:20], updated_at: ~N[2026-08-21 07:46:20]}} [2026-08-21 07:46:20.868] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:46:19Z", "value" => "1.0"} [2026-08-21 07:46:20.895] [DEBUG] QUERY OK db=26.3ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "1.0", "app_version", 77114, ~N[2026-08-21 07:46:20], ~N[2026-08-21 07:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:20.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782837, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:20], updated_at: ~N[2026-08-21 07:46:20]}} [2026-08-21 07:46:20.895] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:46:19Z", "value" => "13"} [2026-08-21 07:46:20.942] [DEBUG] QUERY OK db=46.1ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "13", "android_version", 77114, ~N[2026-08-21 07:46:20], ~N[2026-08-21 07:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:20.942] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782838, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:20], updated_at: ~N[2026-08-21 07:46:20]}} [2026-08-21 07:46:20.942] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:46:19Z", "value" => "881"} [2026-08-21 07:46:20.980] [DEBUG] QUERY OK db=37.3ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "881", "ram_free_mb", 77114, ~N[2026-08-21 07:46:20], ~N[2026-08-21 07:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:20.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782839, itemkey: "ram_free_mb", value: "881", timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:20], updated_at: ~N[2026-08-21 07:46:20]}} [2026-08-21 07:46:20.981] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:46:19Z", "value" => "WIFI"} [2026-08-21 07:46:21.014] [DEBUG] QUERY OK db=33.5ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "WIFI", "network_type", 77114, ~N[2026-08-21 07:46:20], ~N[2026-08-21 07:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:21.015] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782840, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:20], updated_at: ~N[2026-08-21 07:46:20]}} [2026-08-21 07:46:21.015] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:46:19Z", "value" => "true"} [2026-08-21 07:46:21.053] [DEBUG] QUERY OK db=37.5ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "true", "kiosk_active", 77114, ~N[2026-08-21 07:46:21], ~N[2026-08-21 07:46:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:21.053] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782841, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:21], updated_at: ~N[2026-08-21 07:46:21]}} [2026-08-21 07:46:21.053] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:46:19Z", "value" => ""} [2026-08-21 07:46:21.077] [DEBUG] QUERY OK db=22.8ms queue=0.9ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:46:19Z", "sim_operator", 77114, ~N[2026-08-21 07:46:21], ~N[2026-08-21 07:46:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:21.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782842, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:21], updated_at: ~N[2026-08-21 07:46:21]}} [2026-08-21 07:46:21.078] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:46:19Z", "value" => "UNKNOWN"} [2026-08-21 07:46:21.139] [DEBUG] QUERY OK db=61.3ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "UNKNOWN", "sim_number", 77114, ~N[2026-08-21 07:46:21], ~N[2026-08-21 07:46:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:21.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782843, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:21], updated_at: ~N[2026-08-21 07:46:21]}} [2026-08-21 07:46:21.140] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:46:19Z", "value" => "UNKNOWN"} [2026-08-21 07:46:21.165] [DEBUG] QUERY OK db=23.4ms queue=0.1ms idle=63.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "UNKNOWN", "sim_iccid", 77114, ~N[2026-08-21 07:46:21], ~N[2026-08-21 07:46:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:21.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782844, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:21], updated_at: ~N[2026-08-21 07:46:21]}} [2026-08-21 07:46:21.166] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:46:19Z", "value" => "UNKNOWN"} [2026-08-21 07:46:21.225] [DEBUG] QUERY OK db=58.6ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "UNKNOWN", "sim_imsi", 77114, ~N[2026-08-21 07:46:21], ~N[2026-08-21 07:46:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:21.225] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782845, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:21], updated_at: ~N[2026-08-21 07:46:21]}} [2026-08-21 07:46:21.225] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:46:19Z", "value" => "UNKNOWN"} [2026-08-21 07:46:21.259] [DEBUG] QUERY OK db=33.7ms idle=61.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "UNKNOWN", "sim_iccid2", 77114, ~N[2026-08-21 07:46:21], ~N[2026-08-21 07:46:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:21.260] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782846, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:21], updated_at: ~N[2026-08-21 07:46:21]}} [2026-08-21 07:46:21.260] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:46:19Z", "value" => "UNKNOWN"} [2026-08-21 07:46:21.283] [DEBUG] QUERY OK db=22.8ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "UNKNOWN", "sim_imsi2", 77114, ~N[2026-08-21 07:46:21], ~N[2026-08-21 07:46:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:21.283] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782847, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:21], updated_at: ~N[2026-08-21 07:46:21]}} [2026-08-21 07:46:21.284] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:46:19Z", "value" => "26"} [2026-08-21 07:46:21.320] [DEBUG] QUERY OK db=35.6ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "26", "data_usage_mb", 77114, ~N[2026-08-21 07:46:21], ~N[2026-08-21 07:46:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:21.320] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782848, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:21], updated_at: ~N[2026-08-21 07:46:21]}} [2026-08-21 07:46:21.321] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:46:19Z", "value" => "0"} [2026-08-21 07:46:21.402] [DEBUG] QUERY OK db=80.9ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "0", "mobile_data_mb", 77114, ~N[2026-08-21 07:46:21], ~N[2026-08-21 07:46:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:21.403] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782849, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:21], updated_at: ~N[2026-08-21 07:46:21]}} [2026-08-21 07:46:21.404] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:46:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:46:21.442] [DEBUG] QUERY OK db=37.2ms idle=84.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:19Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77114, ~N[2026-08-21 07:46:21], ~N[2026-08-21 07:46:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:21.443] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782850, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:46:19Z", message: nil, status_log_id: 77114, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:21], updated_at: ~N[2026-08-21 07:46:21]}} [2026-08-21 07:46:36.652] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 07:46:36.652] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T11:46:34Z","org.device":[{"itemkey":"battery","value":81,"timestamp":"2026-08-21T11:46:34Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T11:46:34Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T11:46:34Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T11:46:34Z","message":""}]} [2026-08-21 07:46:36.652] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T11:46:34Z", "value" => 81}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T11:46:34Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T11:46:34Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T11:46:34Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T11:46:34Z"} [2026-08-21 07:46:36.652] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:46:36.653] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=657.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:46:36.653] [INFO ] Terminal updated: 61250415798001 [2026-08-21 07:46:36.700] [DEBUG] QUERY OK source="tms_terminals" db=45.6ms idle=12.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:46:36], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:46:36.701] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms 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` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:46:36.751] [DEBUG] QUERY OK source="tms_terminals" db=49.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:46:36], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:46:36.790] [DEBUG] QUERY OK db=38.4ms idle=50.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T11:46:34Z", ~N[2026-08-21 07:46:36], ~N[2026-08-21 07:46:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:46:36.790] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77115, oid: "org-id-placeholder", upload_time: "2026-08-21T11:46:34Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:36], updated_at: ~N[2026-08-21 07:46:36]} [2026-08-21 07:46:36.790] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T11:46:34Z", "value" => 81} [2026-08-21 07:46:36.836] [DEBUG] QUERY OK db=46.0ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:34Z", "81", "battery", 77115, ~N[2026-08-21 07:46:36], ~N[2026-08-21 07:46:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:36.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782851, itemkey: "battery", value: "81", timestamp: "2026-08-21T11:46:34Z", message: nil, status_log_id: 77115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:36], updated_at: ~N[2026-08-21 07:46:36]}} [2026-08-21 07:46:36.837] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T11:46:34Z", "value" => 50} [2026-08-21 07:46:36.876] [DEBUG] QUERY OK db=39.3ms queue=0.1ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T11:46:34Z", "50", "memory", 77115, ~N[2026-08-21 07:46:36], ~N[2026-08-21 07:46:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:36.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782852, itemkey: "memory", value: "50", timestamp: "2026-08-21T11:46:34Z", message: "Normal", status_log_id: 77115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:36], updated_at: ~N[2026-08-21 07:46:36]}} [2026-08-21 07:46:36.877] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T11:46:34Z", "value" => 50} [2026-08-21 07:46:36.897] [DEBUG] QUERY OK db=19.7ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:34Z", "50", "cpu", 77115, ~N[2026-08-21 07:46:36], ~N[2026-08-21 07:46:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:36.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782853, itemkey: "cpu", value: "50", timestamp: "2026-08-21T11:46:34Z", message: nil, status_log_id: 77115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:36], updated_at: ~N[2026-08-21 07:46:36]}} [2026-08-21 07:46:36.897] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T11:46:34Z", "value" => "online"} [2026-08-21 07:46:36.948] [DEBUG] QUERY OK db=50.2ms queue=0.1ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:34Z", "online", "network", 77115, ~N[2026-08-21 07:46:36], ~N[2026-08-21 07:46:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:36.948] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782854, itemkey: "network", value: "online", timestamp: "2026-08-21T11:46:34Z", message: nil, status_log_id: 77115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:36], updated_at: ~N[2026-08-21 07:46:36]}} [2026-08-21 07:46:36.948] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 07:46:50.727] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:46:50.727] [INFO ] Incoming JSON payload: {"oid":"18cf5ad9-cea8-4e4a-94c7-b480e17c863e","sn":"98251226730001","uploadTime":"2026-08-21T07:46:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"ram_free_mb","value":"876","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:46:50Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:46:50.729] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "18cf5ad9-cea8-4e4a-94c7-b480e17c863e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:46:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:46:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:46:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:46:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:46:50Z", "value" => "876"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:46:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:46:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:46:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:46:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:46:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:46:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:46:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:46:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:46:50Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:46:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:46:50Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:46:50Z", "vendor" => "morefun"} [2026-08-21 07:46:50.729] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:46:50.729] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:46:50.729] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:46:50.730] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms 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-08-21 07:46:50.734] [DEBUG] QUERY OK source="parameter_templates" db=3.6ms idle=89.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-08-21 07:46:50.735] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:46:50.736] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=4.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:46:50.736] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:46:50.784] [DEBUG] QUERY OK source="tms_terminals" db=47.1ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:46:50], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:46:50.784] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:46:50.785] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:46:50.809] [DEBUG] QUERY OK source="tms_terminals" db=23.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:46:50], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:46:50.866] [DEBUG] QUERY OK db=57.1ms idle=23.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "18cf5ad9-cea8-4e4a-94c7-b480e17c863e", "2026-08-21T07:46:50Z", ~N[2026-08-21 07:46:50], ~N[2026-08-21 07:46:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:46:50.867] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77116, oid: "18cf5ad9-cea8-4e4a-94c7-b480e17c863e", upload_time: "2026-08-21T07:46:50Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:50], updated_at: ~N[2026-08-21 07:46:50]} [2026-08-21 07:46:50.867] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:46:50Z", "value" => "morefun"} [2026-08-21 07:46:50.910] [DEBUG] QUERY OK db=42.9ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "morefun", "vendor", 77116, ~N[2026-08-21 07:46:50], ~N[2026-08-21 07:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:50.911] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782855, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:50], updated_at: ~N[2026-08-21 07:46:50]}} [2026-08-21 07:46:50.911] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:46:50Z", "value" => "kiosk_launcher"} [2026-08-21 07:46:50.944] [DEBUG] QUERY OK db=32.8ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "kiosk_launcher", "model", 77116, ~N[2026-08-21 07:46:50], ~N[2026-08-21 07:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:50.945] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782856, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:50], updated_at: ~N[2026-08-21 07:46:50]}} [2026-08-21 07:46:50.946] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:46:50Z", "value" => "1.0"} [2026-08-21 07:46:50.988] [DEBUG] QUERY OK db=41.6ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "1.0", "app_version", 77116, ~N[2026-08-21 07:46:50], ~N[2026-08-21 07:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:50.988] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782857, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:50], updated_at: ~N[2026-08-21 07:46:50]}} [2026-08-21 07:46:50.988] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:46:50Z", "value" => "13"} [2026-08-21 07:46:51.012] [DEBUG] QUERY OK db=23.1ms queue=0.1ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "13", "android_version", 77116, ~N[2026-08-21 07:46:50], ~N[2026-08-21 07:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:51.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782858, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:50], updated_at: ~N[2026-08-21 07:46:50]}} [2026-08-21 07:46:51.012] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:46:50Z", "value" => "876"} [2026-08-21 07:46:51.100] [DEBUG] QUERY OK db=88.0ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "876", "ram_free_mb", 77116, ~N[2026-08-21 07:46:51], ~N[2026-08-21 07:46:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:51.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782859, itemkey: "ram_free_mb", value: "876", timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:51], updated_at: ~N[2026-08-21 07:46:51]}} [2026-08-21 07:46:51.101] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:46:50Z", "value" => "WIFI"} [2026-08-21 07:46:51.135] [DEBUG] QUERY OK db=33.5ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "WIFI", "network_type", 77116, ~N[2026-08-21 07:46:51], ~N[2026-08-21 07:46:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:51.135] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782860, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:51], updated_at: ~N[2026-08-21 07:46:51]}} [2026-08-21 07:46:51.135] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:46:50Z", "value" => "true"} [2026-08-21 07:46:51.198] [DEBUG] QUERY OK db=61.9ms queue=0.5ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "true", "kiosk_active", 77116, ~N[2026-08-21 07:46:51], ~N[2026-08-21 07:46:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:51.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782861, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:51], updated_at: ~N[2026-08-21 07:46:51]}} [2026-08-21 07:46:51.198] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:46:50Z", "value" => ""} [2026-08-21 07:46:51.231] [DEBUG] QUERY OK db=32.1ms idle=63.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:46:50Z", "sim_operator", 77116, ~N[2026-08-21 07:46:51], ~N[2026-08-21 07:46:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:51.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782862, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:51], updated_at: ~N[2026-08-21 07:46:51]}} [2026-08-21 07:46:51.233] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:46:50Z", "value" => "UNKNOWN"} [2026-08-21 07:46:51.284] [DEBUG] QUERY OK db=49.7ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "UNKNOWN", "sim_number", 77116, ~N[2026-08-21 07:46:51], ~N[2026-08-21 07:46:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:51.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782863, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:51], updated_at: ~N[2026-08-21 07:46:51]}} [2026-08-21 07:46:51.285] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:46:50Z", "value" => "UNKNOWN"} [2026-08-21 07:46:51.318] [DEBUG] QUERY OK db=33.3ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "UNKNOWN", "sim_iccid", 77116, ~N[2026-08-21 07:46:51], ~N[2026-08-21 07:46:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:51.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782864, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:51], updated_at: ~N[2026-08-21 07:46:51]}} [2026-08-21 07:46:51.319] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:46:50Z", "value" => "UNKNOWN"} [2026-08-21 07:46:51.382] [DEBUG] QUERY OK db=63.1ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "UNKNOWN", "sim_imsi", 77116, ~N[2026-08-21 07:46:51], ~N[2026-08-21 07:46:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:51.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782865, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:51], updated_at: ~N[2026-08-21 07:46:51]}} [2026-08-21 07:46:51.383] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:46:50Z", "value" => "UNKNOWN"} [2026-08-21 07:46:51.416] [DEBUG] QUERY OK db=32.8ms idle=64.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "UNKNOWN", "sim_iccid2", 77116, ~N[2026-08-21 07:46:51], ~N[2026-08-21 07:46:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:51.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782866, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:51], updated_at: ~N[2026-08-21 07:46:51]}} [2026-08-21 07:46:51.417] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:46:50Z", "value" => "UNKNOWN"} [2026-08-21 07:46:51.452] [DEBUG] QUERY OK db=35.0ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "UNKNOWN", "sim_imsi2", 77116, ~N[2026-08-21 07:46:51], ~N[2026-08-21 07:46:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:51.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782867, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:51], updated_at: ~N[2026-08-21 07:46:51]}} [2026-08-21 07:46:51.452] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:46:50Z", "value" => "26"} [2026-08-21 07:46:51.479] [DEBUG] QUERY OK db=26.7ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "26", "data_usage_mb", 77116, ~N[2026-08-21 07:46:51], ~N[2026-08-21 07:46:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:51.480] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782868, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:51], updated_at: ~N[2026-08-21 07:46:51]}} [2026-08-21 07:46:51.480] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:46:50Z", "value" => "0"} [2026-08-21 07:46:51.516] [DEBUG] QUERY OK db=35.3ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "0", "mobile_data_mb", 77116, ~N[2026-08-21 07:46:51], ~N[2026-08-21 07:46:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:51.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782869, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:51], updated_at: ~N[2026-08-21 07:46:51]}} [2026-08-21 07:46:51.517] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:46:50Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:46:51.608] [DEBUG] QUERY OK db=89.6ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:46:50Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77116, ~N[2026-08-21 07:46:51], ~N[2026-08-21 07:46:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:46:51.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782870, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:46:50Z", message: nil, status_log_id: 77116, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:46:51], updated_at: ~N[2026-08-21 07:46:51]}} [2026-08-21 07:47:20.826] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:47:20.827] [INFO ] Incoming JSON payload: {"oid":"fe91f32e-c7c7-4e88-9394-9558c657669f","sn":"98251226730001","uploadTime":"2026-08-21T07:47:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"ram_free_mb","value":"874","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:47:20Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:47:20.829] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "fe91f32e-c7c7-4e88-9394-9558c657669f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:47:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:47:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:47:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:47:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:47:20Z", "value" => "874"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:47:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:47:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:47:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:47:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:47:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:47:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:47:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:47:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:47:20Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:47:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:47:20Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:47:20Z", "vendor" => "morefun"} [2026-08-21 07:47:20.829] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:47:20.829] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:47:20.829] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:47:20.831] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=692.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-08-21 07:47:20.832] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=188.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-08-21 07:47:20.832] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:47:20.837] [DEBUG] QUERY OK source="tms_terminals" db=4.8ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:47:20.837] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:47:20.876] [DEBUG] QUERY OK source="tms_terminals" db=38.6ms idle=5.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:47:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:47:20.876] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:47:20.877] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=39.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:47:20.923] [DEBUG] QUERY OK source="tms_terminals" db=45.6ms queue=0.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:47:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:47:20.944] [DEBUG] QUERY OK db=20.1ms queue=0.1ms idle=46.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "fe91f32e-c7c7-4e88-9394-9558c657669f", "2026-08-21T07:47:20Z", ~N[2026-08-21 07:47:20], ~N[2026-08-21 07:47:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:47:20.944] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77117, oid: "fe91f32e-c7c7-4e88-9394-9558c657669f", upload_time: "2026-08-21T07:47:20Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:20], updated_at: ~N[2026-08-21 07:47:20]} [2026-08-21 07:47:20.944] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:47:20Z", "value" => "morefun"} [2026-08-21 07:47:20.994] [DEBUG] QUERY OK db=48.9ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "morefun", "vendor", 77117, ~N[2026-08-21 07:47:20], ~N[2026-08-21 07:47:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:20.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782871, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:20], updated_at: ~N[2026-08-21 07:47:20]}} [2026-08-21 07:47:20.994] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:47:20Z", "value" => "kiosk_launcher"} [2026-08-21 07:47:21.053] [DEBUG] QUERY OK db=58.7ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "kiosk_launcher", "model", 77117, ~N[2026-08-21 07:47:20], ~N[2026-08-21 07:47:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.054] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782872, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:20], updated_at: ~N[2026-08-21 07:47:20]}} [2026-08-21 07:47:21.054] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:47:20Z", "value" => "1.0"} [2026-08-21 07:47:21.079] [DEBUG] QUERY OK db=24.5ms idle=60.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "1.0", "app_version", 77117, ~N[2026-08-21 07:47:21], ~N[2026-08-21 07:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.079] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782873, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:21], updated_at: ~N[2026-08-21 07:47:21]}} [2026-08-21 07:47:21.079] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:47:20Z", "value" => "13"} [2026-08-21 07:47:21.118] [DEBUG] QUERY OK db=37.0ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "13", "android_version", 77117, ~N[2026-08-21 07:47:21], ~N[2026-08-21 07:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782874, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:21], updated_at: ~N[2026-08-21 07:47:21]}} [2026-08-21 07:47:21.119] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:47:20Z", "value" => "874"} [2026-08-21 07:47:21.163] [DEBUG] QUERY OK db=44.0ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "874", "ram_free_mb", 77117, ~N[2026-08-21 07:47:21], ~N[2026-08-21 07:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.163] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782875, itemkey: "ram_free_mb", value: "874", timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:21], updated_at: ~N[2026-08-21 07:47:21]}} [2026-08-21 07:47:21.164] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:47:20Z", "value" => "WIFI"} [2026-08-21 07:47:21.261] [DEBUG] QUERY OK db=97.0ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "WIFI", "network_type", 77117, ~N[2026-08-21 07:47:21], ~N[2026-08-21 07:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.261] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782876, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:21], updated_at: ~N[2026-08-21 07:47:21]}} [2026-08-21 07:47:21.261] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:47:20Z", "value" => "true"} [2026-08-21 07:47:21.290] [DEBUG] QUERY OK db=28.0ms queue=0.1ms idle=98.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "true", "kiosk_active", 77117, ~N[2026-08-21 07:47:21], ~N[2026-08-21 07:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782877, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:21], updated_at: ~N[2026-08-21 07:47:21]}} [2026-08-21 07:47:21.290] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:47:20Z", "value" => ""} [2026-08-21 07:47:21.327] [DEBUG] QUERY OK db=36.1ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:47:20Z", "sim_operator", 77117, ~N[2026-08-21 07:47:21], ~N[2026-08-21 07:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.327] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782878, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:21], updated_at: ~N[2026-08-21 07:47:21]}} [2026-08-21 07:47:21.327] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:47:20Z", "value" => "UNKNOWN"} [2026-08-21 07:47:21.378] [DEBUG] QUERY OK db=50.9ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "UNKNOWN", "sim_number", 77117, ~N[2026-08-21 07:47:21], ~N[2026-08-21 07:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782879, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:21], updated_at: ~N[2026-08-21 07:47:21]}} [2026-08-21 07:47:21.379] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:47:20Z", "value" => "UNKNOWN"} [2026-08-21 07:47:21.420] [DEBUG] QUERY OK db=40.9ms queue=0.1ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "UNKNOWN", "sim_iccid", 77117, ~N[2026-08-21 07:47:21], ~N[2026-08-21 07:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782880, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:21], updated_at: ~N[2026-08-21 07:47:21]}} [2026-08-21 07:47:21.420] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:47:20Z", "value" => "UNKNOWN"} [2026-08-21 07:47:21.482] [DEBUG] QUERY OK db=60.9ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "UNKNOWN", "sim_imsi", 77117, ~N[2026-08-21 07:47:21], ~N[2026-08-21 07:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782881, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:21], updated_at: ~N[2026-08-21 07:47:21]}} [2026-08-21 07:47:21.482] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:47:20Z", "value" => "UNKNOWN"} [2026-08-21 07:47:21.774] [DEBUG] QUERY OK db=291.1ms queue=0.1ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "UNKNOWN", "sim_iccid2", 77117, ~N[2026-08-21 07:47:21], ~N[2026-08-21 07:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782882, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:21], updated_at: ~N[2026-08-21 07:47:21]}} [2026-08-21 07:47:21.774] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:47:20Z", "value" => "UNKNOWN"} [2026-08-21 07:47:21.829] [DEBUG] QUERY OK db=54.1ms idle=292.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "UNKNOWN", "sim_imsi2", 77117, ~N[2026-08-21 07:47:21], ~N[2026-08-21 07:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782883, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:21], updated_at: ~N[2026-08-21 07:47:21]}} [2026-08-21 07:47:21.830] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:47:20Z", "value" => "26"} [2026-08-21 07:47:21.855] [DEBUG] QUERY OK db=24.3ms idle=56.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "26", "data_usage_mb", 77117, ~N[2026-08-21 07:47:21], ~N[2026-08-21 07:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782884, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:21], updated_at: ~N[2026-08-21 07:47:21]}} [2026-08-21 07:47:21.857] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:47:20Z", "value" => "0"} [2026-08-21 07:47:21.906] [DEBUG] QUERY OK db=49.0ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "0", "mobile_data_mb", 77117, ~N[2026-08-21 07:47:21], ~N[2026-08-21 07:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782885, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:21], updated_at: ~N[2026-08-21 07:47:21]}} [2026-08-21 07:47:21.908] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:47:20Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:47:21.949] [DEBUG] QUERY OK db=39.9ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:20Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77117, ~N[2026-08-21 07:47:21], ~N[2026-08-21 07:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:21.950] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782886, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:47:20Z", message: nil, status_log_id: 77117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:21], updated_at: ~N[2026-08-21 07:47:21]}} [2026-08-21 07:47:50.927] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:47:50.927] [INFO ] Incoming JSON payload: {"oid":"d0da35a8-f7cc-4372-b829-791d1921d93a","sn":"98251226730001","uploadTime":"2026-08-21T07:47:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"ram_free_mb","value":"873","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"data_usage_mb","value":"26","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:47:50Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:47:50.928] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d0da35a8-f7cc-4372-b829-791d1921d93a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:47:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:47:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:47:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:47:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:47:50Z", "value" => "873"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:47:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:47:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:47:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:47:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:47:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:47:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:47:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:47:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:47:50Z", "value" => "26"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:47:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:47:50Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:47:50Z", "vendor" => "morefun"} [2026-08-21 07:47:50.928] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:47:50.928] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:47:50.928] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:47:50.932] [DEBUG] QUERY OK source="parameter_templates" db=3.2ms idle=662.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-08-21 07:47:50.933] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=290.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-08-21 07:47:50.933] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:47:50.936] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:47:50.936] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:47:50.971] [DEBUG] QUERY OK source="tms_terminals" db=34.8ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:47:50], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:47:50.971] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:47:50.973] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.2ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:47:51.009] [DEBUG] QUERY OK source="tms_terminals" db=33.3ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:47:50], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:47:51.033] [DEBUG] QUERY OK db=23.4ms queue=0.1ms idle=35.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "d0da35a8-f7cc-4372-b829-791d1921d93a", "2026-08-21T07:47:50Z", ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:47:51.033] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77118, oid: "d0da35a8-f7cc-4372-b829-791d1921d93a", upload_time: "2026-08-21T07:47:50Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]} [2026-08-21 07:47:51.034] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:47:50Z", "value" => "morefun"} [2026-08-21 07:47:51.081] [DEBUG] QUERY OK db=45.7ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:50Z", "morefun", "vendor", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782887, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.081] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:47:50Z", "value" => "kiosk_launcher"} [2026-08-21 07:47:51.114] [DEBUG] QUERY OK db=32.3ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:50Z", "kiosk_launcher", "model", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782888, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.115] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:47:50Z", "value" => "1.0"} [2026-08-21 07:47:51.161] [DEBUG] QUERY OK db=40.8ms queue=0.5ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:50Z", "1.0", "app_version", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782889, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.162] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:47:50Z", "value" => "13"} [2026-08-21 07:47:51.207] [DEBUG] QUERY OK db=44.7ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:50Z", "13", "android_version", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.207] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782890, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.208] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:47:50Z", "value" => "873"} [2026-08-21 07:47:51.237] [DEBUG] QUERY OK db=28.8ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:50Z", "873", "ram_free_mb", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782891, itemkey: "ram_free_mb", value: "873", timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.237] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:47:50Z", "value" => "WIFI"} [2026-08-21 07:47:51.270] [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-08-21T07:47:50Z", "WIFI", "network_type", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782892, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.271] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:47:50Z", "value" => "true"} [2026-08-21 07:47:51.300] [DEBUG] QUERY OK db=28.6ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:50Z", "true", "kiosk_active", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.301] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782893, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.301] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:47:50Z", "value" => ""} [2026-08-21 07:47:51.345] [DEBUG] QUERY OK db=42.8ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:47:50Z", "sim_operator", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782894, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.345] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:47:50Z", "value" => "UNKNOWN"} [2026-08-21 07:47:51.382] [DEBUG] QUERY OK db=35.5ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:50Z", "UNKNOWN", "sim_number", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782895, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.384] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:47:50Z", "value" => "UNKNOWN"} [2026-08-21 07:47:51.429] [DEBUG] QUERY OK db=44.4ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:50Z", "UNKNOWN", "sim_iccid", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782896, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.429] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:47:50Z", "value" => "UNKNOWN"} [2026-08-21 07:47:51.504] [DEBUG] QUERY OK db=73.9ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:50Z", "UNKNOWN", "sim_imsi", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782897, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.504] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:47:50Z", "value" => "UNKNOWN"} [2026-08-21 07:47:51.566] [DEBUG] QUERY OK db=54.7ms idle=82.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:50Z", "UNKNOWN", "sim_iccid2", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782898, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.566] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:47:50Z", "value" => "UNKNOWN"} [2026-08-21 07:47:51.600] [DEBUG] QUERY OK db=32.2ms queue=0.6ms idle=62.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:50Z", "UNKNOWN", "sim_imsi2", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782899, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.600] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:47:50Z", "value" => "26"} [2026-08-21 07:47:51.625] [DEBUG] QUERY OK db=24.0ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:50Z", "26", "data_usage_mb", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782900, itemkey: "data_usage_mb", value: "26", timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.625] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:47:50Z", "value" => "0"} [2026-08-21 07:47:51.682] [DEBUG] QUERY OK db=54.1ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:50Z", "0", "mobile_data_mb", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.683] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782901, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:51.691] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:47:50Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:47:51.733] [DEBUG] QUERY OK db=36.9ms queue=3.8ms idle=66.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:47:50Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77118, ~N[2026-08-21 07:47:51], ~N[2026-08-21 07:47:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:47:51.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782902, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:47:50Z", message: nil, status_log_id: 77118, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:47:51], updated_at: ~N[2026-08-21 07:47:51]}} [2026-08-21 07:47:58.321] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch980308009433_20260821074757683","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T07:47:57Z"} [2026-08-21 07:47:58.321] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch980308009433_20260821074757683", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:47:57Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 9, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 57, 56, 48, 51, 48, 56, 48, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:48:17.740] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch980308009433_20260821074817386","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T07:48:17Z"} [2026-08-21 07:48:17.740] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch980308009433_20260821074817386", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:48:17Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 10, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 57, 56, 48, 51, 48, 56, 48, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:48:21.318] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:48:21.318] [INFO ] Incoming JSON payload: {"oid":"033a062a-45d1-4360-9e61-ff9fb0e4ee0e","sn":"98251226730001","uploadTime":"2026-08-21T07:48:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"ram_free_mb","value":"876","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:48:20Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:48:21.319] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "033a062a-45d1-4360-9e61-ff9fb0e4ee0e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:48:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:48:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:48:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:48:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:48:20Z", "value" => "876"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:48:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:48:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:48:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:48:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:48:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:48:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:48:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:48:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:48:20Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:48:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:48:20Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:48:20Z", "vendor" => "morefun"} [2026-08-21 07:48:21.319] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:48:21.319] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:48:21.319] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:48:21.322] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms idle=886.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 07:48:21.325] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=673.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-08-21 07:48:21.326] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:48:21.331] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms queue=1.0ms idle=4.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:48:21.332] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:48:21.388] [DEBUG] QUERY OK source="tms_terminals" db=55.7ms idle=6.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:48:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:48:21.388] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:48:21.392] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=1.4ms idle=58.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:48:21.442] [DEBUG] QUERY OK source="tms_terminals" db=49.9ms queue=0.1ms idle=4.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:48:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:48:21.503] [DEBUG] QUERY OK db=60.4ms queue=0.1ms idle=4.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "033a062a-45d1-4360-9e61-ff9fb0e4ee0e", "2026-08-21T07:48:20Z", ~N[2026-08-21 07:48:21], ~N[2026-08-21 07:48:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:48:21.504] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77119, oid: "033a062a-45d1-4360-9e61-ff9fb0e4ee0e", upload_time: "2026-08-21T07:48:20Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:21], updated_at: ~N[2026-08-21 07:48:21]} [2026-08-21 07:48:21.504] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:48:20Z", "value" => "morefun"} [2026-08-21 07:48:21.564] [DEBUG] QUERY OK db=59.0ms queue=0.6ms idle=62.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "morefun", "vendor", 77119, ~N[2026-08-21 07:48:21], ~N[2026-08-21 07:48:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:21.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782903, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:21], updated_at: ~N[2026-08-21 07:48:21]}} [2026-08-21 07:48:21.565] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:48:20Z", "value" => "kiosk_launcher"} [2026-08-21 07:48:21.626] [DEBUG] QUERY OK db=61.4ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "kiosk_launcher", "model", 77119, ~N[2026-08-21 07:48:21], ~N[2026-08-21 07:48:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:21.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782904, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:21], updated_at: ~N[2026-08-21 07:48:21]}} [2026-08-21 07:48:21.628] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:48:20Z", "value" => "1.0"} [2026-08-21 07:48:21.679] [DEBUG] QUERY OK db=50.9ms idle=63.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "1.0", "app_version", 77119, ~N[2026-08-21 07:48:21], ~N[2026-08-21 07:48:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:21.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782905, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:21], updated_at: ~N[2026-08-21 07:48:21]}} [2026-08-21 07:48:21.679] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:48:20Z", "value" => "13"} [2026-08-21 07:48:21.723] [DEBUG] QUERY OK db=42.4ms queue=0.5ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "13", "android_version", 77119, ~N[2026-08-21 07:48:21], ~N[2026-08-21 07:48:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:21.724] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782906, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:21], updated_at: ~N[2026-08-21 07:48:21]}} [2026-08-21 07:48:21.724] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:48:20Z", "value" => "876"} [2026-08-21 07:48:21.773] [DEBUG] QUERY OK db=49.3ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "876", "ram_free_mb", 77119, ~N[2026-08-21 07:48:21], ~N[2026-08-21 07:48:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:21.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782907, itemkey: "ram_free_mb", value: "876", timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:21], updated_at: ~N[2026-08-21 07:48:21]}} [2026-08-21 07:48:21.774] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:48:20Z", "value" => "WIFI"} [2026-08-21 07:48:21.831] [DEBUG] QUERY OK db=56.6ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "WIFI", "network_type", 77119, ~N[2026-08-21 07:48:21], ~N[2026-08-21 07:48:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:21.831] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782908, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:21], updated_at: ~N[2026-08-21 07:48:21]}} [2026-08-21 07:48:21.831] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:48:20Z", "value" => "true"} [2026-08-21 07:48:21.902] [DEBUG] QUERY OK db=70.5ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "true", "kiosk_active", 77119, ~N[2026-08-21 07:48:21], ~N[2026-08-21 07:48:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:21.904] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782909, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:21], updated_at: ~N[2026-08-21 07:48:21]}} [2026-08-21 07:48:21.906] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:48:20Z", "value" => ""} [2026-08-21 07:48:21.936] [DEBUG] QUERY OK db=30.3ms idle=75.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:48:20Z", "sim_operator", 77119, ~N[2026-08-21 07:48:21], ~N[2026-08-21 07:48:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:21.937] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782910, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:21], updated_at: ~N[2026-08-21 07:48:21]}} [2026-08-21 07:48:21.937] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:48:20Z", "value" => "UNKNOWN"} [2026-08-21 07:48:21.999] [DEBUG] QUERY OK db=61.5ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "UNKNOWN", "sim_number", 77119, ~N[2026-08-21 07:48:21], ~N[2026-08-21 07:48:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:21.999] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782911, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:21], updated_at: ~N[2026-08-21 07:48:21]}} [2026-08-21 07:48:22.000] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:48:20Z", "value" => "UNKNOWN"} [2026-08-21 07:48:22.050] [DEBUG] QUERY OK db=50.4ms idle=63.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "UNKNOWN", "sim_iccid", 77119, ~N[2026-08-21 07:48:22], ~N[2026-08-21 07:48:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:22.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782912, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:22], updated_at: ~N[2026-08-21 07:48:22]}} [2026-08-21 07:48:22.051] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:48:20Z", "value" => "UNKNOWN"} [2026-08-21 07:48:22.067] [DEBUG] QUERY OK db=16.0ms idle=51.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "UNKNOWN", "sim_imsi", 77119, ~N[2026-08-21 07:48:22], ~N[2026-08-21 07:48:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:22.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782913, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:22], updated_at: ~N[2026-08-21 07:48:22]}} [2026-08-21 07:48:22.068] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:48:20Z", "value" => "UNKNOWN"} [2026-08-21 07:48:22.110] [DEBUG] QUERY OK db=42.0ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "UNKNOWN", "sim_iccid2", 77119, ~N[2026-08-21 07:48:22], ~N[2026-08-21 07:48:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:22.112] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782914, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:22], updated_at: ~N[2026-08-21 07:48:22]}} [2026-08-21 07:48:22.112] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:48:20Z", "value" => "UNKNOWN"} [2026-08-21 07:48:22.209] [DEBUG] QUERY OK db=96.3ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "UNKNOWN", "sim_imsi2", 77119, ~N[2026-08-21 07:48:22], ~N[2026-08-21 07:48:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:22.209] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782915, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:22], updated_at: ~N[2026-08-21 07:48:22]}} [2026-08-21 07:48:22.209] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:48:20Z", "value" => "27"} [2026-08-21 07:48:22.278] [DEBUG] QUERY OK db=68.9ms idle=99.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "27", "data_usage_mb", 77119, ~N[2026-08-21 07:48:22], ~N[2026-08-21 07:48:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:22.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782916, itemkey: "data_usage_mb", value: "27", timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:22], updated_at: ~N[2026-08-21 07:48:22]}} [2026-08-21 07:48:22.279] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:48:20Z", "value" => "0"} [2026-08-21 07:48:22.338] [DEBUG] QUERY OK db=58.3ms queue=0.7ms idle=70.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "0", "mobile_data_mb", 77119, ~N[2026-08-21 07:48:22], ~N[2026-08-21 07:48:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:22.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782917, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:22], updated_at: ~N[2026-08-21 07:48:22]}} [2026-08-21 07:48:22.342] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:48:20Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:48:22.394] [DEBUG] QUERY OK db=50.9ms idle=64.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:20Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77119, ~N[2026-08-21 07:48:22], ~N[2026-08-21 07:48:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:22.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782918, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:48:20Z", message: nil, status_log_id: 77119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:22], updated_at: ~N[2026-08-21 07:48:22]}} [2026-08-21 07:48:22.456] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch980308009433_20260821074822108","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T07:48:22Z"} [2026-08-21 07:48:22.456] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch980308009433_20260821074822108", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:48:22Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 12, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 57, 56, 48, 51, 48, 56, 48, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:48:27.642] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:48:27.642] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T07:48:27Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T07:48:27Z","value":"19"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T07:48:27Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T07:48:27Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T07:48:27Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T07:48:27Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T07:48:27Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T07:48:27Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T07:48:27Z","vendor":"MoreFun"} [2026-08-21 07:48:27.642] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:48:27Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:48:27Z", "value" => "19"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:48:27Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:48:27Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:48:27Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:48:27Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:48:27Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:48:27Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:48:27Z", "vendor" => "MoreFun"} [2026-08-21 07:48:27.643] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 07:48:27.643] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:48:27.643] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 07:48:27.645] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=994.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-08-21 07:48:27.646] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=181.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:48:27.648] [DEBUG] QUERY OK source="parameter_template_values" db=1.3ms 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-08-21 07:48:27.652] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=2.3ms idle=1.8ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 07:48:27.654] [DEBUG] QUERY OK source="pos_terminal" db=1.2ms idle=4.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-08-21 07:48:27.693] [DEBUG] QUERY OK source="pos_merchant" db=39.6ms idle=2.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 07:48:27.695] [DEBUG] QUERY OK db=0.5ms queue=0.8ms idle=1044.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 ["626165170000000"] [2026-08-21 07:48:27.695] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 07:48:27.696] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms 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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 07:48:27.697] [DEBUG] QUERY OK source="address" db=0.3ms idle=3.1ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 07:48:27.697] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 07:48:27.698] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 07:48:27.741] [DEBUG] QUERY OK db=41.2ms idle=2.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8e2a7419a6670cb321ba233e1ba35a4ddcf5c74cc691f89823f04b7b3bc15a98", 5794, 938, ~U[2026-08-21 07:48:27Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 07:48:27], ~N[2026-08-21 07:48:27]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 07:48:27.741] [INFO ] AutoPushService: Created push log 48401 for MF919 params.zip [2026-08-21 07:48:27.743] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 5794, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 07:48:27.743] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:48:27.743] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 07:48:27.746] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms idle=46.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 07:48:27.752] [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-08-21 07:48:27.807] [DEBUG] QUERY OK db=54.0ms idle=12.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "a5d62f736060589c725b4713027b44c2af19fdd068406bb870f75d13fd3d792c", 291, 17947, ~U[2026-08-21 07:48:27Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 07:48:27], ~N[2026-08-21 07:48:27]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 07:48:27.808] [INFO ] AutoPushService: Created push log 48402 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 07:48:27.808] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 291, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 07:48:27.808] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:48:27.808] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 07:48:27.813] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms idle=65.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-08-21 07:48:27.814] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 07:48:27.814] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=6.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 07:48:27.815] [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-08-21 07:48:27.815] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 07:48:27.816] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:48:27.816] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:48:27.816] [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.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 07:48:27.817] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:48:27.817] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 07:48:27.817] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:48:27.882] [DEBUG] QUERY OK source="tms_terminals" db=23.5ms queue=40.5ms idle=1.4ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 07:48:27], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:48:27.882] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:48:27.882] [INFO ] Event published: terminal_updated [2026-08-21 07:48:27.883] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:48:27.883] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:48:27.884] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.8ms idle=65.1ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:48:27], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:48:27.884] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:48:27.888] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=2.0ms idle=0.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:48:27.891] [DEBUG] QUERY OK source="terminal_group_rules" db=1.6ms idle=1.8ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:48:27.891] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:48:27.954] [DEBUG] QUERY OK source="tms_terminals" db=26.9ms queue=42.6ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 07:48:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:48:27.956] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms queue=0.1ms idle=63.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`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-08-21 07:48:27.958] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.9ms idle=2.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:48:27.961] [DEBUG] QUERY OK source="config_file_versions" db=2.2ms queue=0.1ms idle=2.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:48:27.961] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 07:48:28.030] [DEBUG] QUERY OK source="parameter_push_logs" db=68.2ms idle=3.2ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-08-21 07:18:27]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 07:48:28.030] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 07:48:28.030] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 07:48:28.032] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=70.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-08-21 07:48:28.033] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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-08-21 07:48:28.034] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:48:28.035] [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-08-21 07:48:28.106] [DEBUG] QUERY OK source="tms_terminals" db=28.3ms queue=42.6ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:48:28], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:48:28.138] [DEBUG] QUERY OK db=31.7ms idle=71.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T07:48:27Z", ~N[2026-08-21 07:48:28], ~N[2026-08-21 07:48:28]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:48:28.138] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77120, oid: "organization_id", upload_time: "2026-08-21T07:48:27Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:28], updated_at: ~N[2026-08-21 07:48:28]} [2026-08-21 07:48:28.138] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:48:27Z", "value" => "online"} [2026-08-21 07:48:28.175] [DEBUG] QUERY OK db=35.8ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T07:48:27Z", "online", "status", 77120, ~N[2026-08-21 07:48:28], ~N[2026-08-21 07:48:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:28.176] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782919, itemkey: "status", value: "online", timestamp: "2026-08-21T07:48:27Z", message: "Terminal status update", status_log_id: 77120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:28], updated_at: ~N[2026-08-21 07:48:28]}} [2026-08-21 07:48:28.176] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 07:48:28.176] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:48:27Z", "value" => "19"} [2026-08-21 07:48:28.213] [DEBUG] QUERY OK db=36.7ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T07:48:27Z", "19", "battery", 77120, ~N[2026-08-21 07:48:28], ~N[2026-08-21 07:48:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:28.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782920, itemkey: "battery", value: "19", timestamp: "2026-08-21T07:48:27Z", message: "Battery level", status_log_id: 77120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:28], updated_at: ~N[2026-08-21 07:48:28]}} [2026-08-21 07:48:28.214] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:48:27Z", "value" => "online"} [2026-08-21 07:48:28.281] [DEBUG] QUERY OK db=66.2ms queue=0.1ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T07:48:27Z", "online", "network", 77120, ~N[2026-08-21 07:48:28], ~N[2026-08-21 07:48:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:28.281] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782921, itemkey: "network", value: "online", timestamp: "2026-08-21T07:48:27Z", message: "Network connectivity", status_log_id: 77120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:28], updated_at: ~N[2026-08-21 07:48:28]}} [2026-08-21 07:48:28.281] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 07:48:28.282] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:48:27Z", "value" => "0"} [2026-08-21 07:48:28.335] [DEBUG] QUERY OK db=52.8ms idle=69.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T07:48:27Z", "0", "cpu", 77120, ~N[2026-08-21 07:48:28], ~N[2026-08-21 07:48:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:28.335] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782922, itemkey: "cpu", value: "0", timestamp: "2026-08-21T07:48:27Z", message: "CPU usage percentage", status_log_id: 77120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:28], updated_at: ~N[2026-08-21 07:48:28]}} [2026-08-21 07:48:28.336] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:48:27Z", "value" => "1.0.0"} [2026-08-21 07:48:28.365] [DEBUG] QUERY OK db=29.0ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T07:48:27Z", "1.0.0", "parameter_config", 77120, ~N[2026-08-21 07:48:28], ~N[2026-08-21 07:48:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:28.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782923, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T07:48:27Z", message: "Current parameters version", status_log_id: 77120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:28], updated_at: ~N[2026-08-21 07:48:28]}} [2026-08-21 07:48:28.365] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:48:27Z", "value" => "1.0.1"} [2026-08-21 07:48:28.408] [DEBUG] QUERY OK db=42.3ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T07:48:27Z", "1.0.1", "emv_config", 77120, ~N[2026-08-21 07:48:28], ~N[2026-08-21 07:48:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:28.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782924, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T07:48:27Z", message: "Current EMV config version", status_log_id: 77120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:28], updated_at: ~N[2026-08-21 07:48:28]}} [2026-08-21 07:48:28.408] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:48:27Z", "value" => ""} [2026-08-21 07:48:28.507] [DEBUG] QUERY OK db=55.3ms queue=41.3ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T07:48:27Z", "keys_config", 77120, ~N[2026-08-21 07:48:28], ~N[2026-08-21 07:48:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:28.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782925, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T07:48:27Z", message: "Current keys config version", status_log_id: 77120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:28], updated_at: ~N[2026-08-21 07:48:28]}} [2026-08-21 07:48:28.511] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:48:27Z", "value" => "3.8.7.3"} [2026-08-21 07:48:28.561] [DEBUG] QUERY OK db=50.2ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T07:48:27Z", "3.8.7.3", "application", 77120, ~N[2026-08-21 07:48:28], ~N[2026-08-21 07:48:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:28.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782926, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T07:48:27Z", message: "Current application version", status_log_id: 77120, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:28], updated_at: ~N[2026-08-21 07:48:28]}} [2026-08-21 07:48:28.562] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:48:27Z"} [2026-08-21 07:48:28.562] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:48:27Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 14, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:48:29.175] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:48:29.175] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T07:48:28Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T07:48:28Z","value":"19"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T07:48:28Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T07:48:28Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T07:48:28Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T07:48:28Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T07:48:28Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T07:48:28Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T07:48:28Z","vendor":"MoreFun"} [2026-08-21 07:48:29.176] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:48:28Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:48:28Z", "value" => "19"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:48:28Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:48:28Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:48:28Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:48:28Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:48:28Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:48:28Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:48:28Z", "vendor" => "MoreFun"} [2026-08-21 07:48:29.177] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 07:48:29.177] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:48:29.177] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 07:48:29.181] [DEBUG] QUERY OK source="parameter_templates" db=3.2ms idle=670.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-08-21 07:48:29.184] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=619.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:48:29.187] [DEBUG] QUERY OK source="parameter_template_values" db=2.0ms idle=3.8ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 07:48:29.192] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=3.1ms idle=3.3ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 07:48:29.194] [DEBUG] QUERY OK source="pos_terminal" db=1.6ms idle=5.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-08-21 07:48:29.233] [DEBUG] QUERY OK source="pos_merchant" db=37.9ms queue=0.1ms idle=2.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 07:48:29.235] [DEBUG] QUERY OK db=1.7ms queue=0.3ms idle=1583.9ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["626165170000000"] [2026-08-21 07:48:29.235] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 07:48:29.237] [DEBUG] QUERY OK source="pos_terminal_data" db=1.0ms idle=41.0ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 07:48:29.244] [DEBUG] QUERY OK source="address" db=7.5ms idle=4.0ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 07:48:29.245] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 07:48:29.248] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 07:48:29.294] [DEBUG] QUERY OK db=42.7ms queue=0.5ms idle=14.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "48092fef9fbdbab425d59716d5082f6269274dc5b832eb494a703c3c7018118a", 6050, 938, ~U[2026-08-21 07:48:29Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 07:48:29], ~N[2026-08-21 07:48:29]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 07:48:29.294] [INFO ] AutoPushService: Created push log 48403 for MF919 params.zip [2026-08-21 07:48:29.295] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 6050, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 07:48:29.295] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:48:29.295] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 07:48:29.301] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=4.9ms idle=50.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-08-21 07:48:29.307] [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-08-21 07:48:29.393] [DEBUG] QUERY OK db=82.4ms queue=1.6ms idle=14.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b5d0b3d9175b8aadcad7469f07ceb9561c7583907218d2508c8d90f6be776064", 451, 17947, ~U[2026-08-21 07:48:29Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 07:48:29], ~N[2026-08-21 07:48:29]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 07:48:29.393] [INFO ] AutoPushService: Created push log 48404 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 07:48:29.394] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 451, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 07:48:29.394] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:48:29.394] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 07:48:29.397] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms idle=93.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-08-21 07:48:29.397] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 07:48:29.398] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 07:48:29.402] [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-08-21 07:48:29.404] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 07:48:29.404] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:48:29.404] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:48:29.407] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms queue=0.3ms idle=7.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 07:48:29.407] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:48:29.407] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 07:48:29.408] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=8.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:48:29.408] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:48:29.450] [DEBUG] QUERY OK source="tms_terminals" db=41.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:48:29], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:48:29.451] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms 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.`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-08-21 07:48:29.452] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=2.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:48:29.453] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=1.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:48:29.454] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 07:48:29.476] [DEBUG] QUERY OK source="parameter_push_logs" db=21.5ms 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-08-21 07:18:29]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 07:48:29.476] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 07:48:29.476] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 07:48:29.478] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=3.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 07:48:29.479] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=2.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 07:48:29.479] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:48:29.479] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms 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-08-21 07:48:29.541] [DEBUG] QUERY OK source="tms_terminals" db=60.9ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:48:29], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:48:29.575] [DEBUG] QUERY OK db=33.4ms queue=0.7ms idle=61.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T07:48:28Z", ~N[2026-08-21 07:48:29], ~N[2026-08-21 07:48:29]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:48:29.575] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77121, oid: "organization_id", upload_time: "2026-08-21T07:48:28Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:29], updated_at: ~N[2026-08-21 07:48:29]} [2026-08-21 07:48:29.580] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:48:28Z", "value" => "online"} [2026-08-21 07:48:29.632] [DEBUG] QUERY OK db=51.3ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T07:48:28Z", "online", "status", 77121, ~N[2026-08-21 07:48:29], ~N[2026-08-21 07:48:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:29.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782927, itemkey: "status", value: "online", timestamp: "2026-08-21T07:48:28Z", message: "Terminal status update", status_log_id: 77121, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:29], updated_at: ~N[2026-08-21 07:48:29]}} [2026-08-21 07:48:29.633] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 07:48:29.633] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:48:28Z", "value" => "19"} [2026-08-21 07:48:29.700] [DEBUG] QUERY OK db=66.5ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T07:48:28Z", "19", "battery", 77121, ~N[2026-08-21 07:48:29], ~N[2026-08-21 07:48:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:29.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782928, itemkey: "battery", value: "19", timestamp: "2026-08-21T07:48:28Z", message: "Battery level", status_log_id: 77121, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:29], updated_at: ~N[2026-08-21 07:48:29]}} [2026-08-21 07:48:29.701] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:48:28Z", "value" => "online"} [2026-08-21 07:48:29.725] [DEBUG] QUERY OK db=23.7ms idle=69.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T07:48:28Z", "online", "network", 77121, ~N[2026-08-21 07:48:29], ~N[2026-08-21 07:48:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:29.726] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782929, itemkey: "network", value: "online", timestamp: "2026-08-21T07:48:28Z", message: "Network connectivity", status_log_id: 77121, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:29], updated_at: ~N[2026-08-21 07:48:29]}} [2026-08-21 07:48:29.726] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 07:48:29.726] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:48:28Z", "value" => "0"} [2026-08-21 07:48:29.760] [DEBUG] QUERY OK db=33.7ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T07:48:28Z", "0", "cpu", 77121, ~N[2026-08-21 07:48:29], ~N[2026-08-21 07:48:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:29.760] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782930, itemkey: "cpu", value: "0", timestamp: "2026-08-21T07:48:28Z", message: "CPU usage percentage", status_log_id: 77121, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:29], updated_at: ~N[2026-08-21 07:48:29]}} [2026-08-21 07:48:29.760] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:48:28Z", "value" => "1.0.0"} [2026-08-21 07:48:29.792] [DEBUG] QUERY OK db=30.1ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T07:48:28Z", "1.0.0", "parameter_config", 77121, ~N[2026-08-21 07:48:29], ~N[2026-08-21 07:48:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:29.792] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782931, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T07:48:28Z", message: "Current parameters version", status_log_id: 77121, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:29], updated_at: ~N[2026-08-21 07:48:29]}} [2026-08-21 07:48:29.792] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:48:28Z", "value" => "1.0.1"} [2026-08-21 07:48:29.832] [DEBUG] QUERY OK db=39.3ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T07:48:28Z", "1.0.1", "emv_config", 77121, ~N[2026-08-21 07:48:29], ~N[2026-08-21 07:48:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:29.832] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782932, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T07:48:28Z", message: "Current EMV config version", status_log_id: 77121, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:29], updated_at: ~N[2026-08-21 07:48:29]}} [2026-08-21 07:48:29.832] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:48:28Z", "value" => ""} [2026-08-21 07:48:29.905] [DEBUG] QUERY OK db=30.8ms queue=41.3ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T07:48:28Z", "keys_config", 77121, ~N[2026-08-21 07:48:29], ~N[2026-08-21 07:48:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:29.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782933, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T07:48:28Z", message: "Current keys config version", status_log_id: 77121, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:29], updated_at: ~N[2026-08-21 07:48:29]}} [2026-08-21 07:48:29.906] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:48:28Z", "value" => "3.8.7.3"} [2026-08-21 07:48:29.944] [DEBUG] QUERY OK db=38.3ms idle=74.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T07:48:28Z", "3.8.7.3", "application", 77121, ~N[2026-08-21 07:48:29], ~N[2026-08-21 07:48:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:29.945] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782934, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T07:48:28Z", message: "Current application version", status_log_id: 77121, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:29], updated_at: ~N[2026-08-21 07:48:29]}} [2026-08-21 07:48:29.945] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:48:29Z"} [2026-08-21 07:48:29.945] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:48:29Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 17, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:48:36.176] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:48:36.177] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T07:48:35Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T07:48:35Z","value":"19"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T07:48:35Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T07:48:35Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T07:48:35Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T07:48:35Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T07:48:35Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T07:48:35Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T07:48:35Z","vendor":"MoreFun"} [2026-08-21 07:48:36.177] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:48:35Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:48:35Z", "value" => "19"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:48:35Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:48:35Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:48:35Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:48:35Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:48:35Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:48:35Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:48:35Z", "vendor" => "MoreFun"} [2026-08-21 07:48:36.177] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 07:48:36.177] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:48:36.179] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 07:48:36.179] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=664.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 07:48:36.181] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=530.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-08-21 07:48:36.182] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms idle=2.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-08-21 07:48:36.188] [DEBUG] QUERY OK source="parameter_definitions" db=3.6ms queue=1.8ms idle=1.1ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 07:48:36.191] [DEBUG] QUERY OK source="pos_terminal" db=2.4ms idle=6.3ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 07:48:36.227] [DEBUG] QUERY OK source="pos_merchant" db=32.0ms queue=1.0ms idle=6.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 07:48:36.231] [DEBUG] QUERY OK db=1.3ms queue=2.4ms idle=1577.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 ["626165170000000"] [2026-08-21 07:48:36.232] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 07:48:36.233] [DEBUG] QUERY OK source="pos_terminal_data" db=1.2ms 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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 07:48:36.234] [DEBUG] QUERY OK source="address" db=0.3ms queue=0.1ms idle=5.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 07:48:36.234] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 07:48:36.235] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 07:48:36.270] [DEBUG] QUERY OK db=33.6ms idle=2.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "fbbc2c6a0ad808477f1043670942aabdf2a4d90c6a9efeefd6163946a73f7e55", 643, 938, ~U[2026-08-21 07:48:36Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 07:48:36], ~N[2026-08-21 07:48:36]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 07:48:36.270] [INFO ] AutoPushService: Created push log 48405 for MF919 params.zip [2026-08-21 07:48:36.270] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 643, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 07:48:36.270] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:48:36.272] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 07:48:36.274] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=38.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 07:48:36.281] [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-08-21 07:48:36.330] [DEBUG] QUERY OK db=44.8ms idle=14.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "998ef09e9719a0d817e3c05d8f0d0d588c16ecef9111c6d3574e7f56407d4e01", 739, 17947, ~U[2026-08-21 07:48:36Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 07:48:36], ~N[2026-08-21 07:48:36]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 07:48:36.330] [INFO ] AutoPushService: Created push log 48406 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 07:48:36.330] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 739, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 07:48:36.331] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:48:36.331] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 07:48:36.336] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms queue=2.4ms idle=58.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-08-21 07:48:36.339] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 07:48:36.342] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=10.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 07:48:36.342] [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-08-21 07:48:36.348] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 07:48:36.350] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:48:36.350] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:48:36.354] [DEBUG] QUERY OK source="config_file_versions" db=3.3ms idle=14.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-08-21 07:48:36.355] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:48:36.355] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 07:48:36.360] [DEBUG] QUERY OK source="tms_terminals" db=4.2ms idle=13.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:48:36.360] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:48:36.411] [DEBUG] QUERY OK source="tms_terminals" db=50.0ms queue=0.1ms idle=6.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:48:36], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:48:36.414] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=52.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-08-21 07:48:36.417] [DEBUG] QUERY OK source="config_file_versions" db=3.1ms idle=3.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:48:36.420] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms queue=0.3ms idle=3.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:48:36.420] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 07:48:36.449] [DEBUG] QUERY OK source="parameter_push_logs" db=25.9ms idle=5.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-08-21 07:18:36]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 07:48:36.449] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 07:48:36.450] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 07:48:36.455] [DEBUG] QUERY OK source="tms_terminals" db=4.4ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 07:48:36.457] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms 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-08-21 07:48:36.460] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:48:36.464] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms idle=5.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:48:36.519] [DEBUG] QUERY OK source="tms_terminals" db=51.9ms idle=9.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:48:36], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:48:36.554] [DEBUG] QUERY OK db=33.7ms queue=0.1ms idle=2.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T07:48:35Z", ~N[2026-08-21 07:48:36], ~N[2026-08-21 07:48:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:48:36.554] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77122, oid: "organization_id", upload_time: "2026-08-21T07:48:35Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:36], updated_at: ~N[2026-08-21 07:48:36]} [2026-08-21 07:48:36.554] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:48:35Z", "value" => "online"} [2026-08-21 07:48:36.585] [DEBUG] QUERY OK db=30.2ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T07:48:35Z", "online", "status", 77122, ~N[2026-08-21 07:48:36], ~N[2026-08-21 07:48:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:36.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782935, itemkey: "status", value: "online", timestamp: "2026-08-21T07:48:35Z", message: "Terminal status update", status_log_id: 77122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:36], updated_at: ~N[2026-08-21 07:48:36]}} [2026-08-21 07:48:36.585] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 07:48:36.585] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:48:35Z", "value" => "19"} [2026-08-21 07:48:36.655] [DEBUG] QUERY OK db=69.9ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T07:48:35Z", "19", "battery", 77122, ~N[2026-08-21 07:48:36], ~N[2026-08-21 07:48:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:36.656] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782936, itemkey: "battery", value: "19", timestamp: "2026-08-21T07:48:35Z", message: "Battery level", status_log_id: 77122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:36], updated_at: ~N[2026-08-21 07:48:36]}} [2026-08-21 07:48:36.656] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:48:35Z", "value" => "online"} [2026-08-21 07:48:36.684] [DEBUG] QUERY OK db=26.1ms idle=72.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T07:48:35Z", "online", "network", 77122, ~N[2026-08-21 07:48:36], ~N[2026-08-21 07:48:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:36.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782937, itemkey: "network", value: "online", timestamp: "2026-08-21T07:48:35Z", message: "Network connectivity", status_log_id: 77122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:36], updated_at: ~N[2026-08-21 07:48:36]}} [2026-08-21 07:48:36.685] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 07:48:36.687] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:48:35Z", "value" => "0"} [2026-08-21 07:48:36.745] [DEBUG] QUERY OK db=55.6ms queue=1.4ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T07:48:35Z", "0", "cpu", 77122, ~N[2026-08-21 07:48:36], ~N[2026-08-21 07:48:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:36.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782938, itemkey: "cpu", value: "0", timestamp: "2026-08-21T07:48:35Z", message: "CPU usage percentage", status_log_id: 77122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:36], updated_at: ~N[2026-08-21 07:48:36]}} [2026-08-21 07:48:36.745] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:48:35Z", "value" => "1.0.0"} [2026-08-21 07:48:36.777] [DEBUG] QUERY OK db=32.2ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T07:48:35Z", "1.0.0", "parameter_config", 77122, ~N[2026-08-21 07:48:36], ~N[2026-08-21 07:48:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:36.778] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782939, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T07:48:35Z", message: "Current parameters version", status_log_id: 77122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:36], updated_at: ~N[2026-08-21 07:48:36]}} [2026-08-21 07:48:36.779] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:48:35Z", "value" => "1.0.1"} [2026-08-21 07:48:36.823] [DEBUG] QUERY OK db=44.0ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T07:48:35Z", "1.0.1", "emv_config", 77122, ~N[2026-08-21 07:48:36], ~N[2026-08-21 07:48:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:36.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782940, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T07:48:35Z", message: "Current EMV config version", status_log_id: 77122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:36], updated_at: ~N[2026-08-21 07:48:36]}} [2026-08-21 07:48:36.823] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:48:35Z", "value" => ""} [2026-08-21 07:48:36.917] [DEBUG] QUERY OK db=93.1ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T07:48:35Z", "keys_config", 77122, ~N[2026-08-21 07:48:36], ~N[2026-08-21 07:48:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:36.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782941, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T07:48:35Z", message: "Current keys config version", status_log_id: 77122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:36], updated_at: ~N[2026-08-21 07:48:36]}} [2026-08-21 07:48:36.918] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:48:35Z", "value" => "3.8.7.3"} [2026-08-21 07:48:36.968] [DEBUG] QUERY OK db=48.8ms queue=1.3ms idle=95.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T07:48:35Z", "3.8.7.3", "application", 77122, ~N[2026-08-21 07:48:36], ~N[2026-08-21 07:48:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:36.968] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782942, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T07:48:35Z", message: "Current application version", status_log_id: 77122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:36], updated_at: ~N[2026-08-21 07:48:36]}} [2026-08-21 07:48:36.973] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:48:36Z"} [2026-08-21 07:48:36.973] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:48:36Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 20, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:48:37.722] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:48:37.722] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T07:48:37Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T07:48:37Z","value":"19"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T07:48:37Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T07:48:37Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T07:48:37Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T07:48:37Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T07:48:37Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T07:48:37Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T07:48:37Z","vendor":"MoreFun"} [2026-08-21 07:48:37.723] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:48:37Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:48:37Z", "value" => "19"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:48:37Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:48:37Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:48:37Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:48:37Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:48:37Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:48:37Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:48:37Z", "vendor" => "MoreFun"} [2026-08-21 07:48:37.723] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 07:48:37.723] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:48:37.724] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 07:48:37.727] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms idle=378.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-08-21 07:48:37.730] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=196.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:48:37.731] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms queue=0.3ms idle=3.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-08-21 07:48:37.738] [DEBUG] QUERY OK source="parameter_definitions" db=1.5ms queue=4.3ms 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-08-21 07:48:37.745] [DEBUG] QUERY OK source="pos_terminal" db=2.4ms idle=10.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-08-21 07:48:37.782] [DEBUG] QUERY OK source="pos_merchant" db=36.9ms idle=7.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 07:48:37.784] [DEBUG] QUERY OK db=0.7ms queue=1.1ms idle=133.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 ["626165170000000"] [2026-08-21 07:48:37.785] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 07:48:37.785] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms 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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 07:48:37.786] [DEBUG] QUERY OK source="address" db=0.4ms queue=0.1ms 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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 07:48:37.786] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 07:48:37.790] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 07:48:37.831] [DEBUG] QUERY OK db=40.4ms idle=5.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b6d7e83525e01de45b51f8d2a6663dcda672e45a100729656ee0d7f0694ad30f", 835, 938, ~U[2026-08-21 07:48:37Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 07:48:37], ~N[2026-08-21 07:48:37]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 07:48:37.831] [INFO ] AutoPushService: Created push log 48407 for MF919 params.zip [2026-08-21 07:48:37.831] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 835, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 07:48:37.832] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:48:37.832] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 07:48:37.833] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 07:48:37.837] [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-08-21 07:48:37.876] [DEBUG] QUERY OK db=38.2ms idle=7.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3800d9840b89e91c3e2c56df16fc986d52e58993dd97a782d8e0c38394357456", 931, 17947, ~U[2026-08-21 07:48:37Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 07:48:37], ~N[2026-08-21 07:48:37]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 07:48:37.877] [INFO ] AutoPushService: Created push log 48408 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 07:48:37.877] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 931, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 07:48:37.877] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:48:37.877] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 07:48:37.880] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=46.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-08-21 07:48:37.880] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 07:48:37.883] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms idle=4.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 07:48:37.884] [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-08-21 07:48:37.886] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 07:48:37.886] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:48:37.886] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:48:37.890] [DEBUG] QUERY OK source="config_file_versions" db=4.0ms idle=6.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 07:48:37.891] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:48:37.891] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 07:48:37.892] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=7.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 07:48:37.892] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:48:37.941] [DEBUG] QUERY OK source="tms_terminals" db=48.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:48:37], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:48:37.942] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=49.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 07:48:37.943] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=2.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:48:37.944] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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-08-21 07:48:37.945] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 07:48:37.973] [DEBUG] QUERY OK source="parameter_push_logs" db=27.8ms 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-08-21 07:18:37]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 07:48:37.973] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 07:48:37.973] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 07:48:37.975] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=30.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 07:48:37.978] [DEBUG] QUERY OK source="config_file_versions" db=2.1ms queue=0.5ms idle=2.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 07:48:37.979] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:48:37.981] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=4.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:48:38.032] [DEBUG] QUERY OK source="tms_terminals" db=50.4ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:48:37], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:48:38.075] [DEBUG] QUERY OK db=42.0ms idle=51.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T07:48:37Z", ~N[2026-08-21 07:48:38], ~N[2026-08-21 07:48:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:48:38.077] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77123, oid: "organization_id", upload_time: "2026-08-21T07:48:37Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:38], updated_at: ~N[2026-08-21 07:48:38]} [2026-08-21 07:48:38.077] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:48:37Z", "value" => "online"} [2026-08-21 07:48:38.120] [DEBUG] QUERY OK db=41.4ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T07:48:37Z", "online", "status", 77123, ~N[2026-08-21 07:48:38], ~N[2026-08-21 07:48:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:38.120] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782943, itemkey: "status", value: "online", timestamp: "2026-08-21T07:48:37Z", message: "Terminal status update", status_log_id: 77123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:38], updated_at: ~N[2026-08-21 07:48:38]}} [2026-08-21 07:48:38.120] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 07:48:38.120] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:48:37Z", "value" => "19"} [2026-08-21 07:48:38.157] [DEBUG] QUERY OK db=36.1ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T07:48:37Z", "19", "battery", 77123, ~N[2026-08-21 07:48:38], ~N[2026-08-21 07:48:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:38.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782944, itemkey: "battery", value: "19", timestamp: "2026-08-21T07:48:37Z", message: "Battery level", status_log_id: 77123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:38], updated_at: ~N[2026-08-21 07:48:38]}} [2026-08-21 07:48:38.157] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:48:37Z", "value" => "online"} [2026-08-21 07:48:38.182] [DEBUG] QUERY OK db=24.3ms queue=0.1ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T07:48:37Z", "online", "network", 77123, ~N[2026-08-21 07:48:38], ~N[2026-08-21 07:48:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:38.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782945, itemkey: "network", value: "online", timestamp: "2026-08-21T07:48:37Z", message: "Network connectivity", status_log_id: 77123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:38], updated_at: ~N[2026-08-21 07:48:38]}} [2026-08-21 07:48:38.186] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 07:48:38.186] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:48:37Z", "value" => "0"} [2026-08-21 07:48:38.241] [DEBUG] QUERY OK db=54.3ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T07:48:37Z", "0", "cpu", 77123, ~N[2026-08-21 07:48:38], ~N[2026-08-21 07:48:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:38.241] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782946, itemkey: "cpu", value: "0", timestamp: "2026-08-21T07:48:37Z", message: "CPU usage percentage", status_log_id: 77123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:38], updated_at: ~N[2026-08-21 07:48:38]}} [2026-08-21 07:48:38.241] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:48:37Z", "value" => "1.0.0"} [2026-08-21 07:48:38.298] [DEBUG] QUERY OK db=54.5ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T07:48:37Z", "1.0.0", "parameter_config", 77123, ~N[2026-08-21 07:48:38], ~N[2026-08-21 07:48:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:38.298] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782947, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T07:48:37Z", message: "Current parameters version", status_log_id: 77123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:38], updated_at: ~N[2026-08-21 07:48:38]}} [2026-08-21 07:48:38.298] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:48:37Z", "value" => "1.0.1"} [2026-08-21 07:48:38.318] [DEBUG] QUERY OK db=19.1ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T07:48:37Z", "1.0.1", "emv_config", 77123, ~N[2026-08-21 07:48:38], ~N[2026-08-21 07:48:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:38.318] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782948, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T07:48:37Z", message: "Current EMV config version", status_log_id: 77123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:38], updated_at: ~N[2026-08-21 07:48:38]}} [2026-08-21 07:48:38.318] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:48:37Z", "value" => ""} [2026-08-21 07:48:38.377] [DEBUG] QUERY OK db=57.4ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T07:48:37Z", "keys_config", 77123, ~N[2026-08-21 07:48:38], ~N[2026-08-21 07:48:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:38.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782949, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T07:48:37Z", message: "Current keys config version", status_log_id: 77123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:38], updated_at: ~N[2026-08-21 07:48:38]}} [2026-08-21 07:48:38.377] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:48:37Z", "value" => "3.8.7.3"} [2026-08-21 07:48:38.412] [DEBUG] QUERY OK db=35.1ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T07:48:37Z", "3.8.7.3", "application", 77123, ~N[2026-08-21 07:48:38], ~N[2026-08-21 07:48:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:38.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782950, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T07:48:37Z", message: "Current application version", status_log_id: 77123, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:38], updated_at: ~N[2026-08-21 07:48:38]}} [2026-08-21 07:48:38.413] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:48:38Z"} [2026-08-21 07:48:38.413] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:48:38Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 23, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:48:41.707] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch980308009433_20260821074841354","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T07:48:41Z"} [2026-08-21 07:48:41.708] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch980308009433_20260821074841354", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:48:41Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 25, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 57, 56, 48, 51, 48, 56, 48, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:48:48.140] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:48:27Z"} [2026-08-21 07:48:48.140] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:48:27Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 15, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:48:49.709] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:48:29Z"} [2026-08-21 07:48:49.710] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:48:29Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 18, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:48:51.375] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:48:51.377] [INFO ] Incoming JSON payload: {"oid":"8a68a386-d386-4fee-8786-3cc2758ac82a","sn":"98251226730001","uploadTime":"2026-08-21T07:48:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"ram_free_mb","value":"864","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:48:50Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:48:51.380] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8a68a386-d386-4fee-8786-3cc2758ac82a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:48:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:48:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:48:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:48:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:48:50Z", "value" => "864"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:48:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:48:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:48:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:48:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:48:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:48:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:48:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:48:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:48:50Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:48:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:48:50Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:48:50Z", "vendor" => "morefun"} [2026-08-21 07:48:51.380] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:48:51.381] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:48:51.381] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:48:51.382] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=734.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-08-21 07:48:51.383] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=723.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-08-21 07:48:51.383] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:48:51.386] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:48:51.476] [DEBUG] QUERY OK source="tms_terminals" db=44.4ms queue=44.5ms idle=3.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 07:48:51], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:48:51.476] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:48:51.476] [INFO ] Event published: terminal_updated [2026-08-21 07:48:51.477] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:48:51.477] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:48:51.477] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:48:51.481] [DEBUG] QUERY OK source="terminal_group_memberships" db=4.4ms idle=89.9ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:48:51], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:48:51.483] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=5.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:48:51.485] [DEBUG] QUERY OK source="terminal_group_rules" db=1.9ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:48:51.486] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:48:51.781] [DEBUG] QUERY OK source="tms_terminals" db=257.4ms queue=42.3ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 07:48:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:48:51.781] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:48:51.782] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms idle=130.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-08-21 07:48:51.935] [DEBUG] QUERY OK source="tms_terminals" db=151.6ms queue=0.8ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:48:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:48:52.082] [DEBUG] QUERY OK db=144.5ms queue=2.3ms idle=153.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "8a68a386-d386-4fee-8786-3cc2758ac82a", "2026-08-21T07:48:50Z", ~N[2026-08-21 07:48:51], ~N[2026-08-21 07:48:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:48:52.083] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77124, oid: "8a68a386-d386-4fee-8786-3cc2758ac82a", upload_time: "2026-08-21T07:48:50Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:51], updated_at: ~N[2026-08-21 07:48:51]} [2026-08-21 07:48:52.083] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:48:50Z", "value" => "morefun"} [2026-08-21 07:48:52.132] [DEBUG] QUERY OK db=46.2ms queue=0.8ms idle=148.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "morefun", "vendor", 77124, ~N[2026-08-21 07:48:52], ~N[2026-08-21 07:48:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:52.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782951, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:52], updated_at: ~N[2026-08-21 07:48:52]}} [2026-08-21 07:48:52.134] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:48:50Z", "value" => "kiosk_launcher"} [2026-08-21 07:48:52.176] [DEBUG] QUERY OK db=39.1ms queue=2.5ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "kiosk_launcher", "model", 77124, ~N[2026-08-21 07:48:52], ~N[2026-08-21 07:48:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:52.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782952, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:52], updated_at: ~N[2026-08-21 07:48:52]}} [2026-08-21 07:48:52.178] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:48:50Z", "value" => "1.0"} [2026-08-21 07:48:52.390] [DEBUG] QUERY OK db=209.0ms queue=0.1ms idle=48.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "1.0", "app_version", 77124, ~N[2026-08-21 07:48:52], ~N[2026-08-21 07:48:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:52.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782953, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:52], updated_at: ~N[2026-08-21 07:48:52]}} [2026-08-21 07:48:52.390] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:48:50Z", "value" => "13"} [2026-08-21 07:48:52.493] [DEBUG] QUERY OK db=102.0ms idle=2.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "13", "android_version", 77124, ~N[2026-08-21 07:48:52], ~N[2026-08-21 07:48:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:52.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782954, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:52], updated_at: ~N[2026-08-21 07:48:52]}} [2026-08-21 07:48:52.493] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:48:50Z", "value" => "864"} [2026-08-21 07:48:52.569] [DEBUG] QUERY OK db=75.9ms idle=105.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "864", "ram_free_mb", 77124, ~N[2026-08-21 07:48:52], ~N[2026-08-21 07:48:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:52.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782955, itemkey: "ram_free_mb", value: "864", timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:52], updated_at: ~N[2026-08-21 07:48:52]}} [2026-08-21 07:48:52.570] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:48:50Z", "value" => "WIFI"} [2026-08-21 07:48:52.645] [DEBUG] QUERY OK db=75.2ms idle=77.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "WIFI", "network_type", 77124, ~N[2026-08-21 07:48:52], ~N[2026-08-21 07:48:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:52.647] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782956, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:52], updated_at: ~N[2026-08-21 07:48:52]}} [2026-08-21 07:48:52.647] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:48:50Z", "value" => "true"} [2026-08-21 07:48:52.691] [DEBUG] QUERY OK db=43.0ms idle=78.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "true", "kiosk_active", 77124, ~N[2026-08-21 07:48:52], ~N[2026-08-21 07:48:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:52.691] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782957, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:52], updated_at: ~N[2026-08-21 07:48:52]}} [2026-08-21 07:48:52.691] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:48:50Z", "value" => ""} [2026-08-21 07:48:52.776] [DEBUG] QUERY OK db=84.3ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:48:50Z", "sim_operator", 77124, ~N[2026-08-21 07:48:52], ~N[2026-08-21 07:48:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:52.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782958, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:52], updated_at: ~N[2026-08-21 07:48:52]}} [2026-08-21 07:48:52.776] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:48:50Z", "value" => "UNKNOWN"} [2026-08-21 07:48:52.797] [DEBUG] QUERY OK db=17.8ms idle=88.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "UNKNOWN", "sim_number", 77124, ~N[2026-08-21 07:48:52], ~N[2026-08-21 07:48:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:52.800] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782959, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:52], updated_at: ~N[2026-08-21 07:48:52]}} [2026-08-21 07:48:52.800] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:48:50Z", "value" => "UNKNOWN"} [2026-08-21 07:48:52.868] [DEBUG] QUERY OK db=67.2ms queue=0.2ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "UNKNOWN", "sim_iccid", 77124, ~N[2026-08-21 07:48:52], ~N[2026-08-21 07:48:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:52.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782960, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:52], updated_at: ~N[2026-08-21 07:48:52]}} [2026-08-21 07:48:52.868] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:48:50Z", "value" => "UNKNOWN"} [2026-08-21 07:48:52.914] [DEBUG] QUERY OK db=44.1ms idle=72.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "UNKNOWN", "sim_imsi", 77124, ~N[2026-08-21 07:48:52], ~N[2026-08-21 07:48:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:52.915] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782961, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:52], updated_at: ~N[2026-08-21 07:48:52]}} [2026-08-21 07:48:52.915] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:48:50Z", "value" => "UNKNOWN"} [2026-08-21 07:48:52.973] [DEBUG] QUERY OK db=54.0ms queue=1.0ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "UNKNOWN", "sim_iccid2", 77124, ~N[2026-08-21 07:48:52], ~N[2026-08-21 07:48:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:52.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782962, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:52], updated_at: ~N[2026-08-21 07:48:52]}} [2026-08-21 07:48:52.974] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:48:50Z", "value" => "UNKNOWN"} [2026-08-21 07:48:52.997] [DEBUG] QUERY OK db=22.9ms idle=60.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "UNKNOWN", "sim_imsi2", 77124, ~N[2026-08-21 07:48:52], ~N[2026-08-21 07:48:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:52.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782963, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:52], updated_at: ~N[2026-08-21 07:48:52]}} [2026-08-21 07:48:52.997] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:48:50Z", "value" => "27"} [2026-08-21 07:48:53.051] [DEBUG] QUERY OK db=49.0ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "27", "data_usage_mb", 77124, ~N[2026-08-21 07:48:53], ~N[2026-08-21 07:48:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:53.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782964, itemkey: "data_usage_mb", value: "27", timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:53], updated_at: ~N[2026-08-21 07:48:53]}} [2026-08-21 07:48:53.051] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:48:50Z", "value" => "0"} [2026-08-21 07:48:53.087] [DEBUG] QUERY OK db=31.2ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "0", "mobile_data_mb", 77124, ~N[2026-08-21 07:48:53], ~N[2026-08-21 07:48:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:53.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782965, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:53], updated_at: ~N[2026-08-21 07:48:53]}} [2026-08-21 07:48:53.089] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:48:50Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:48:53.139] [DEBUG] QUERY OK db=50.0ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:48:50Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77124, ~N[2026-08-21 07:48:53], ~N[2026-08-21 07:48:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:48:53.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782966, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:48:50Z", message: nil, status_log_id: 77124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:48:53], updated_at: ~N[2026-08-21 07:48:53]}} [2026-08-21 07:48:56.791] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:48:36Z"} [2026-08-21 07:48:56.792] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:48:36Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 21, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:48:58.414] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:48:38Z"} [2026-08-21 07:48:58.414] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:48:38Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 24, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:49:21.463] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:49:21.464] [INFO ] Incoming JSON payload: {"oid":"6dc2b679-28fc-4631-8120-cbf9b85837b7","sn":"98251226730001","uploadTime":"2026-08-21T07:49:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:49:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:49:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:49:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:49:21Z"},{"itemkey":"ram_free_mb","value":"862","timestamp":"2026-08-21T07:49:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:49:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:49:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:49:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:49:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:49:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:49:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:49:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:49:21Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-08-21T07:49:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:49: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:49:21.465] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6dc2b679-28fc-4631-8120-cbf9b85837b7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:49:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:49:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:49:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:49:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:49:21Z", "value" => "862"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:49:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:49:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:49:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:49:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:49:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:49:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:49:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:49:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:49:21Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:49:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:49: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:49:21Z", "vendor" => "morefun"} [2026-08-21 07:49:21.465] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:49:21.465] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:49:21.465] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:49:21.467] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1186.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 07:49:21.469] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=681.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-08-21 07:49:21.469] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:49:21.470] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:49:21.473] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:49:21.553] [DEBUG] QUERY OK source="tms_terminals" db=37.3ms queue=42.5ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:49:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:49:21.553] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:49:21.555] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms decode=0.1ms queue=0.9ms idle=83.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:49:21.582] [DEBUG] QUERY OK source="tms_terminals" db=25.6ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:49:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:49:21.633] [DEBUG] QUERY OK db=51.5ms idle=26.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6dc2b679-28fc-4631-8120-cbf9b85837b7", "2026-08-21T07:49:21Z", ~N[2026-08-21 07:49:21], ~N[2026-08-21 07:49:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:49:21.634] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77125, oid: "6dc2b679-28fc-4631-8120-cbf9b85837b7", upload_time: "2026-08-21T07:49:21Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:21], updated_at: ~N[2026-08-21 07:49:21]} [2026-08-21 07:49:21.634] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:49:21Z", "value" => "morefun"} [2026-08-21 07:49:21.656] [DEBUG] QUERY OK db=21.5ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:21Z", "morefun", "vendor", 77125, ~N[2026-08-21 07:49:21], ~N[2026-08-21 07:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:21.656] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782967, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:21], updated_at: ~N[2026-08-21 07:49:21]}} [2026-08-21 07:49:21.656] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:49:21Z", "value" => "kiosk_launcher"} [2026-08-21 07:49:21.705] [DEBUG] QUERY OK db=48.0ms idle=23.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:21Z", "kiosk_launcher", "model", 77125, ~N[2026-08-21 07:49:21], ~N[2026-08-21 07:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:21.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782968, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:21], updated_at: ~N[2026-08-21 07:49:21]}} [2026-08-21 07:49:21.705] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:49:21Z", "value" => "1.0"} [2026-08-21 07:49:21.751] [DEBUG] QUERY OK db=45.3ms queue=0.1ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:21Z", "1.0", "app_version", 77125, ~N[2026-08-21 07:49:21], ~N[2026-08-21 07:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:21.751] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782969, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:21], updated_at: ~N[2026-08-21 07:49:21]}} [2026-08-21 07:49:21.751] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:49:21Z", "value" => "13"} [2026-08-21 07:49:21.776] [DEBUG] QUERY OK db=24.4ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:21Z", "13", "android_version", 77125, ~N[2026-08-21 07:49:21], ~N[2026-08-21 07:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:21.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782970, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:21], updated_at: ~N[2026-08-21 07:49:21]}} [2026-08-21 07:49:21.777] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:49:21Z", "value" => "862"} [2026-08-21 07:49:21.824] [DEBUG] QUERY OK db=46.9ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:21Z", "862", "ram_free_mb", 77125, ~N[2026-08-21 07:49:21], ~N[2026-08-21 07:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:21.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782971, itemkey: "ram_free_mb", value: "862", timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:21], updated_at: ~N[2026-08-21 07:49:21]}} [2026-08-21 07:49:21.825] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:49:21Z", "value" => "WIFI"} [2026-08-21 07:49:21.856] [DEBUG] QUERY OK db=31.4ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:21Z", "WIFI", "network_type", 77125, ~N[2026-08-21 07:49:21], ~N[2026-08-21 07:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:21.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782972, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:21], updated_at: ~N[2026-08-21 07:49:21]}} [2026-08-21 07:49:21.857] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:49:21Z", "value" => "true"} [2026-08-21 07:49:21.891] [DEBUG] QUERY OK db=34.0ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:21Z", "true", "kiosk_active", 77125, ~N[2026-08-21 07:49:21], ~N[2026-08-21 07:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:21.891] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782973, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:21], updated_at: ~N[2026-08-21 07:49:21]}} [2026-08-21 07:49:21.892] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:49:21Z", "value" => ""} [2026-08-21 07:49:21.925] [DEBUG] QUERY OK db=32.4ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:49:21Z", "sim_operator", 77125, ~N[2026-08-21 07:49:21], ~N[2026-08-21 07:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:21.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782974, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:21], updated_at: ~N[2026-08-21 07:49:21]}} [2026-08-21 07:49:21.925] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:49:21Z", "value" => "UNKNOWN"} [2026-08-21 07:49:21.962] [DEBUG] QUERY OK db=36.5ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:21Z", "UNKNOWN", "sim_number", 77125, ~N[2026-08-21 07:49:21], ~N[2026-08-21 07:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:21.962] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782975, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:21], updated_at: ~N[2026-08-21 07:49:21]}} [2026-08-21 07:49:21.962] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:49:21Z", "value" => "UNKNOWN"} [2026-08-21 07:49:21.997] [DEBUG] QUERY OK db=34.0ms queue=0.1ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:21Z", "UNKNOWN", "sim_iccid", 77125, ~N[2026-08-21 07:49:21], ~N[2026-08-21 07:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:21.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782976, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:21], updated_at: ~N[2026-08-21 07:49:21]}} [2026-08-21 07:49:21.997] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:49:21Z", "value" => "UNKNOWN"} [2026-08-21 07:49:22.041] [DEBUG] QUERY OK db=42.7ms queue=0.8ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:21Z", "UNKNOWN", "sim_imsi", 77125, ~N[2026-08-21 07:49:21], ~N[2026-08-21 07:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:22.041] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782977, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:21], updated_at: ~N[2026-08-21 07:49:21]}} [2026-08-21 07:49:22.042] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:49:21Z", "value" => "UNKNOWN"} [2026-08-21 07:49:22.078] [DEBUG] QUERY OK db=36.3ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:21Z", "UNKNOWN", "sim_iccid2", 77125, ~N[2026-08-21 07:49:22], ~N[2026-08-21 07:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:22.079] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782978, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:22], updated_at: ~N[2026-08-21 07:49:22]}} [2026-08-21 07:49:22.079] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:49:21Z", "value" => "UNKNOWN"} [2026-08-21 07:49:22.128] [DEBUG] QUERY OK db=48.0ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:21Z", "UNKNOWN", "sim_imsi2", 77125, ~N[2026-08-21 07:49:22], ~N[2026-08-21 07:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:22.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782979, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:22], updated_at: ~N[2026-08-21 07:49:22]}} [2026-08-21 07:49:22.128] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:49:21Z", "value" => "27"} [2026-08-21 07:49:22.163] [DEBUG] QUERY OK db=34.0ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:21Z", "27", "data_usage_mb", 77125, ~N[2026-08-21 07:49:22], ~N[2026-08-21 07:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:22.163] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782980, itemkey: "data_usage_mb", value: "27", timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:22], updated_at: ~N[2026-08-21 07:49:22]}} [2026-08-21 07:49:22.163] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:49:21Z", "value" => "0"} [2026-08-21 07:49:22.213] [DEBUG] QUERY OK db=49.3ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:21Z", "0", "mobile_data_mb", 77125, ~N[2026-08-21 07:49:22], ~N[2026-08-21 07:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:22.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782981, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:22], updated_at: ~N[2026-08-21 07:49:22]}} [2026-08-21 07:49:22.214] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:49: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:49:22.247] [DEBUG] QUERY OK db=31.6ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77125, ~N[2026-08-21 07:49:22], ~N[2026-08-21 07:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:22.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782982, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:49:21Z", message: nil, status_log_id: 77125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:22], updated_at: ~N[2026-08-21 07:49:22]}} [2026-08-21 07:49:36.529] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:49:36.529] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T07:49:36Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T07:49:36Z","value":"19"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T07:49:36Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T07:49:36Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T07:49:36Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T07:49:36Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T07:49:36Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T07:49:36Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T07:49:36Z","vendor":"MoreFun"} [2026-08-21 07:49:36.531] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:49:36Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:49:36Z", "value" => "19"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:49:36Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:49:36Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:49:36Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:49:36Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:49:36Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:49:36Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:49:36Z", "vendor" => "MoreFun"} [2026-08-21 07:49:36.531] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 07:49:36.531] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:49:36.531] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 07:49:36.532] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=1347.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-08-21 07:49:36.535] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=700.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-08-21 07:49:36.536] [DEBUG] QUERY OK source="parameter_template_values" db=1.2ms idle=2.9ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 07:49:36.539] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms 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-08-21 07:49:36.540] [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-08-21 07:49:36.581] [DEBUG] QUERY OK source="pos_merchant" db=40.1ms idle=2.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 07:49:36.582] [DEBUG] QUERY OK db=0.4ms queue=0.4ms idle=924.9ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["626165170000000"] [2026-08-21 07:49:36.582] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 07:49:36.582] [DEBUG] QUERY OK source="pos_terminal_data" db=0.2ms 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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 07:49:36.583] [DEBUG] QUERY OK source="address" db=0.2ms idle=1.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 07:49:36.583] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 07:49:36.585] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 07:49:36.611] [DEBUG] QUERY OK db=25.0ms idle=2.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "59304213738c3573c6f64ab54f48a91621551f6fd7872579d4152a523ec06d72", 1381, 938, ~U[2026-08-21 07:49:36Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 07:49:36], ~N[2026-08-21 07:49:36]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 07:49:36.611] [INFO ] AutoPushService: Created push log 48409 for MF919 params.zip [2026-08-21 07:49:36.611] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1381, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 07:49:36.611] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:49:36.611] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 07:49:36.613] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=28.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 07:49:36.618] [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-08-21 07:49:36.671] [DEBUG] QUERY OK db=52.7ms idle=8.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "66a24dc29275ea1b8acbf314760a28b7dd042fe8b794ecc55e5f38c55d8e69c0", 228, 17947, ~U[2026-08-21 07:49:36Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 07:49:36], ~N[2026-08-21 07:49:36]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 07:49:36.672] [INFO ] AutoPushService: Created push log 48410 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 07:49:36.672] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 228, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 07:49:36.672] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:49:36.672] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 07:49:36.678] [DEBUG] QUERY OK source="config_file_versions" db=6.0ms idle=59.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-08-21 07:49:36.679] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 07:49:36.683] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=8.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 07:49:36.685] [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-08-21 07:49:36.686] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 07:49:36.686] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:49:36.687] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:49:36.690] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms queue=2.1ms idle=8.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-08-21 07:49:36.691] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:49:36.691] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 07:49:36.695] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=8.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:49:36.810] [DEBUG] QUERY OK source="tms_terminals" db=72.4ms queue=41.6ms idle=5.6ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 07:49:36], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:49:36.810] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:49:36.811] [INFO ] Event published: terminal_updated [2026-08-21 07:49:36.811] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:49:36.811] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:49:36.811] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:49:36.813] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.2ms idle=116.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-08-21 07:49:36], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:49:36.814] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=3.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:49:36.815] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms idle=0.1ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:49:36.815] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:49:36.898] [DEBUG] QUERY OK source="tms_terminals" db=43.2ms queue=40.9ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 07:49:36], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:49:36.899] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=63.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) 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-08-21 07:49:36.900] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.1ms idle=1.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:49:36.901] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms 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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:49:36.901] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 07:49:36.966] [DEBUG] QUERY OK source="parameter_push_logs" db=65.1ms 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-08-21 07:19:36]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 07:49:36.967] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 07:49:36.967] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 07:49:36.970] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=66.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-08-21 07:49:36.970] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=3.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 07:49:36.971] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:49:36.972] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:49:37.051] [DEBUG] QUERY OK source="tms_terminals" db=37.4ms queue=41.1ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:49:36], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:49:37.105] [DEBUG] QUERY OK db=52.0ms idle=81.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T07:49:36Z", ~N[2026-08-21 07:49:37], ~N[2026-08-21 07:49:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:49:37.105] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77126, oid: "organization_id", upload_time: "2026-08-21T07:49:36Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:37], updated_at: ~N[2026-08-21 07:49:37]} [2026-08-21 07:49:37.105] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:49:36Z", "value" => "online"} [2026-08-21 07:49:37.156] [DEBUG] QUERY OK db=50.0ms queue=0.6ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T07:49:36Z", "online", "status", 77126, ~N[2026-08-21 07:49:37], ~N[2026-08-21 07:49:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:37.156] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782983, itemkey: "status", value: "online", timestamp: "2026-08-21T07:49:36Z", message: "Terminal status update", status_log_id: 77126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:37], updated_at: ~N[2026-08-21 07:49:37]}} [2026-08-21 07:49:37.157] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 07:49:37.157] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:49:36Z", "value" => "19"} [2026-08-21 07:49:37.175] [DEBUG] QUERY OK db=18.2ms idle=52.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T07:49:36Z", "19", "battery", 77126, ~N[2026-08-21 07:49:37], ~N[2026-08-21 07:49:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:37.178] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782984, itemkey: "battery", value: "19", timestamp: "2026-08-21T07:49:36Z", message: "Battery level", status_log_id: 77126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:37], updated_at: ~N[2026-08-21 07:49:37]}} [2026-08-21 07:49:37.179] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:49:36Z", "value" => "online"} [2026-08-21 07:49:37.234] [DEBUG] QUERY OK db=54.2ms queue=0.1ms idle=23.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T07:49:36Z", "online", "network", 77126, ~N[2026-08-21 07:49:37], ~N[2026-08-21 07:49:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:37.234] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782985, itemkey: "network", value: "online", timestamp: "2026-08-21T07:49:36Z", message: "Network connectivity", status_log_id: 77126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:37], updated_at: ~N[2026-08-21 07:49:37]}} [2026-08-21 07:49:37.234] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 07:49:37.234] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:49:36Z", "value" => "0"} [2026-08-21 07:49:37.283] [DEBUG] QUERY OK db=47.1ms idle=60.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T07:49:36Z", "0", "cpu", 77126, ~N[2026-08-21 07:49:37], ~N[2026-08-21 07:49:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:37.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782986, itemkey: "cpu", value: "0", timestamp: "2026-08-21T07:49:36Z", message: "CPU usage percentage", status_log_id: 77126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:37], updated_at: ~N[2026-08-21 07:49:37]}} [2026-08-21 07:49:37.284] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:49:36Z", "value" => "1.0.0"} [2026-08-21 07:49:37.309] [DEBUG] QUERY OK db=24.9ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T07:49:36Z", "1.0.0", "parameter_config", 77126, ~N[2026-08-21 07:49:37], ~N[2026-08-21 07:49:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:37.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782987, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T07:49:36Z", message: "Current parameters version", status_log_id: 77126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:37], updated_at: ~N[2026-08-21 07:49:37]}} [2026-08-21 07:49:37.309] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:49:36Z", "value" => "1.0.1"} [2026-08-21 07:49:37.352] [DEBUG] QUERY OK db=42.5ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T07:49:36Z", "1.0.1", "emv_config", 77126, ~N[2026-08-21 07:49:37], ~N[2026-08-21 07:49:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:37.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782988, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T07:49:36Z", message: "Current EMV config version", status_log_id: 77126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:37], updated_at: ~N[2026-08-21 07:49:37]}} [2026-08-21 07:49:37.353] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:49:36Z", "value" => ""} [2026-08-21 07:49:37.430] [DEBUG] QUERY OK db=35.0ms queue=41.1ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T07:49:36Z", "keys_config", 77126, ~N[2026-08-21 07:49:37], ~N[2026-08-21 07:49:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:37.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782989, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T07:49:36Z", message: "Current keys config version", status_log_id: 77126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:37], updated_at: ~N[2026-08-21 07:49:37]}} [2026-08-21 07:49:37.430] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:49:36Z", "value" => "3.8.7.3"} [2026-08-21 07:49:37.481] [DEBUG] QUERY OK db=49.9ms 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-08-21T07:49:36Z", "3.8.7.3", "application", 77126, ~N[2026-08-21 07:49:37], ~N[2026-08-21 07:49:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:37.481] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782990, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T07:49:36Z", message: "Current application version", status_log_id: 77126, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:37], updated_at: ~N[2026-08-21 07:49:37]}} [2026-08-21 07:49:37.481] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:49:36Z"} [2026-08-21 07:49:37.481] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:49:36Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 29, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:49:45.077] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 46µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "GwF-DjU2Dj83WBMQUQRCAh4aKCtvciwyuXFLAwWUM3esdu0SoNNyWAVV", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 07:49:45.670] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "nY8BtAYjzkvc5qrQqTfR83zd", "live_socket_id" => "users_sessions:_gyWJnb72cBNLoly6C0mOch11oXZNsn0EVBfto7MVeo=", "user_token" => <<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>} [2026-08-21 07:49:45.692] [DEBUG] QUERY OK source="users_tokens" db=0.6ms queue=0.7ms idle=994.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)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:49:45.689188Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 07:49:45.711] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=0.4ms idle=1043.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:49:45.718] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.5ms idle=854.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:49:45.730] [DEBUG] QUERY OK source="core_transactions" db=7.6ms queue=0.4ms idle=14.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:49:45.760] [DEBUG] QUERY OK source="core_transactions" db=29.7ms idle=12.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:49:45.772] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=10.9ms idle=30.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:49:45.777] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms queue=0.4ms idle=15.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:49:45.781] [DEBUG] Replied in 115ms [2026-08-21 07:49:46.932] [INFO ] GET /admin/settlements/summary [2026-08-21 07:49:46.961] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 07:49:46.971] [DEBUG] QUERY OK source="users_tokens" db=1.8ms idle=271.7ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:49:46.969212Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 07:49:46.976] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=1109.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:49:46.977] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.5ms idle=108.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:49:46.979] [DEBUG] QUERY OK source="core_transactions" db=0.6ms queue=0.5ms idle=1.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:49:47.019] [DEBUG] QUERY OK source="core_transactions" db=39.6ms queue=0.1ms idle=1.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:49:47.020] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.8ms idle=40.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:49:47.022] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=0.4ms idle=2.0ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:49:47.031] [INFO ] Sent 200 in 99ms [2026-08-21 07:49:51.559] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:49:51.559] [INFO ] Incoming JSON payload: {"oid":"d91fff9f-cc2e-4848-966f-acaa3ecb7b3f","sn":"98251226730001","uploadTime":"2026-08-21T07:49:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:49:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:49:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:49:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:49:51Z"},{"itemkey":"ram_free_mb","value":"871","timestamp":"2026-08-21T07:49:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:49:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:49:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:49:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:49:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:49:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:49:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:49:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:49:51Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-08-21T07:49:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:49: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:49:51.561] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d91fff9f-cc2e-4848-966f-acaa3ecb7b3f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:49:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:49:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:49:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:49:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:49:51Z", "value" => "871"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:49:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:49:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:49:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:49:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:49:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:49:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:49:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:49:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:49:51Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:49:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:49: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:49:51Z", "vendor" => "morefun"} [2026-08-21 07:49:51.561] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:49:51.561] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:49:51.562] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:49:51.563] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1554.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-08-21 07:49:51.563] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=673.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-08-21 07:49:51.564] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:49:51.564] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:49:51.656] [DEBUG] QUERY OK source="tms_terminals" db=49.5ms queue=40.7ms idle=2.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 07:49:51], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:49:51.656] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:49:51.657] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:49:51.657] [INFO ] Event published: terminal_updated [2026-08-21 07:49:51.657] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:49:51.657] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:49:51.658] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.0ms idle=92.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:49:51], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:49:51.660] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=0.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:49:51.660] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:49:51.660] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:49:51.730] [DEBUG] QUERY OK source="tms_terminals" db=70.5ms queue=0.9ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 07:49:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:49:51.730] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:49:51.733] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=70.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:49:51.800] [DEBUG] QUERY OK source="tms_terminals" db=66.2ms queue=0.4ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:49:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:49:51.843] [DEBUG] QUERY OK db=42.8ms queue=0.1ms idle=67.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "d91fff9f-cc2e-4848-966f-acaa3ecb7b3f", "2026-08-21T07:49:51Z", ~N[2026-08-21 07:49:51], ~N[2026-08-21 07:49:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:49:51.844] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77127, oid: "d91fff9f-cc2e-4848-966f-acaa3ecb7b3f", upload_time: "2026-08-21T07:49:51Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:51], updated_at: ~N[2026-08-21 07:49:51]} [2026-08-21 07:49:51.844] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:49:51Z", "value" => "morefun"} [2026-08-21 07:49:51.872] [DEBUG] QUERY OK db=27.2ms queue=0.7ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:51Z", "morefun", "vendor", 77127, ~N[2026-08-21 07:49:51], ~N[2026-08-21 07:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:51.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782991, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:51], updated_at: ~N[2026-08-21 07:49:51]}} [2026-08-21 07:49:51.872] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:49:51Z", "value" => "kiosk_launcher"} [2026-08-21 07:49:51.907] [DEBUG] QUERY OK db=33.3ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:51Z", "kiosk_launcher", "model", 77127, ~N[2026-08-21 07:49:51], ~N[2026-08-21 07:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:51.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782992, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:51], updated_at: ~N[2026-08-21 07:49:51]}} [2026-08-21 07:49:51.907] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:49:51Z", "value" => "1.0"} [2026-08-21 07:49:51.943] [DEBUG] QUERY OK db=35.4ms idle=15.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:51Z", "1.0", "app_version", 77127, ~N[2026-08-21 07:49:51], ~N[2026-08-21 07:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:51.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782993, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:51], updated_at: ~N[2026-08-21 07:49:51]}} [2026-08-21 07:49:51.943] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:49:51Z", "value" => "13"} [2026-08-21 07:49:51.979] [DEBUG] QUERY OK db=35.6ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:51Z", "13", "android_version", 77127, ~N[2026-08-21 07:49:51], ~N[2026-08-21 07:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:51.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782994, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:51], updated_at: ~N[2026-08-21 07:49:51]}} [2026-08-21 07:49:51.980] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:49:51Z", "value" => "871"} [2026-08-21 07:49:52.003] [DEBUG] QUERY OK db=22.9ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:51Z", "871", "ram_free_mb", 77127, ~N[2026-08-21 07:49:51], ~N[2026-08-21 07:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:52.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782995, itemkey: "ram_free_mb", value: "871", timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:51], updated_at: ~N[2026-08-21 07:49:51]}} [2026-08-21 07:49:52.003] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:49:51Z", "value" => "WIFI"} [2026-08-21 07:49:52.063] [DEBUG] QUERY OK db=59.5ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:51Z", "WIFI", "network_type", 77127, ~N[2026-08-21 07:49:52], ~N[2026-08-21 07:49:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:52.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782996, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:52], updated_at: ~N[2026-08-21 07:49:52]}} [2026-08-21 07:49:52.063] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:49:51Z", "value" => "true"} [2026-08-21 07:49:52.122] [DEBUG] QUERY OK db=58.0ms idle=60.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:51Z", "true", "kiosk_active", 77127, ~N[2026-08-21 07:49:52], ~N[2026-08-21 07:49:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:52.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782997, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:52], updated_at: ~N[2026-08-21 07:49:52]}} [2026-08-21 07:49:52.122] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:49:51Z", "value" => ""} [2026-08-21 07:49:52.159] [DEBUG] QUERY OK db=36.4ms idle=59.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:49:51Z", "sim_operator", 77127, ~N[2026-08-21 07:49:52], ~N[2026-08-21 07:49:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:52.159] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782998, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:52], updated_at: ~N[2026-08-21 07:49:52]}} [2026-08-21 07:49:52.160] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:49:51Z", "value" => "UNKNOWN"} [2026-08-21 07:49:52.188] [DEBUG] QUERY OK db=27.8ms queue=0.1ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:51Z", "UNKNOWN", "sim_number", 77127, ~N[2026-08-21 07:49:52], ~N[2026-08-21 07:49:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:52.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 782999, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:52], updated_at: ~N[2026-08-21 07:49:52]}} [2026-08-21 07:49:52.189] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:49:51Z", "value" => "UNKNOWN"} [2026-08-21 07:49:52.246] [DEBUG] QUERY OK db=56.6ms queue=0.1ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:51Z", "UNKNOWN", "sim_iccid", 77127, ~N[2026-08-21 07:49:52], ~N[2026-08-21 07:49:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:52.246] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783000, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:52], updated_at: ~N[2026-08-21 07:49:52]}} [2026-08-21 07:49:52.246] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:49:51Z", "value" => "UNKNOWN"} [2026-08-21 07:49:52.270] [DEBUG] QUERY OK db=23.1ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:51Z", "UNKNOWN", "sim_imsi", 77127, ~N[2026-08-21 07:49:52], ~N[2026-08-21 07:49:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:52.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783001, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:52], updated_at: ~N[2026-08-21 07:49:52]}} [2026-08-21 07:49:52.270] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:49:51Z", "value" => "UNKNOWN"} [2026-08-21 07:49:52.320] [DEBUG] QUERY OK db=49.9ms queue=0.1ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:51Z", "UNKNOWN", "sim_iccid2", 77127, ~N[2026-08-21 07:49:52], ~N[2026-08-21 07:49:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:52.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783002, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:52], updated_at: ~N[2026-08-21 07:49:52]}} [2026-08-21 07:49:52.321] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:49:51Z", "value" => "UNKNOWN"} [2026-08-21 07:49:52.350] [DEBUG] QUERY OK db=28.2ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:51Z", "UNKNOWN", "sim_imsi2", 77127, ~N[2026-08-21 07:49:52], ~N[2026-08-21 07:49:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:52.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783003, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:52], updated_at: ~N[2026-08-21 07:49:52]}} [2026-08-21 07:49:52.350] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:49:51Z", "value" => "27"} [2026-08-21 07:49:52.392] [DEBUG] QUERY OK db=41.8ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:51Z", "27", "data_usage_mb", 77127, ~N[2026-08-21 07:49:52], ~N[2026-08-21 07:49:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:52.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783004, itemkey: "data_usage_mb", value: "27", timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:52], updated_at: ~N[2026-08-21 07:49:52]}} [2026-08-21 07:49:52.393] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:49:51Z", "value" => "0"} [2026-08-21 07:49:52.417] [DEBUG] QUERY OK db=23.5ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49:51Z", "0", "mobile_data_mb", 77127, ~N[2026-08-21 07:49:52], ~N[2026-08-21 07:49:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:52.417] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783005, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:52], updated_at: ~N[2026-08-21 07:49:52]}} [2026-08-21 07:49:52.418] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:49: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:49:52.462] [DEBUG] QUERY OK db=42.8ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:49: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77127, ~N[2026-08-21 07:49:52], ~N[2026-08-21 07:49:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:49:52.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783006, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:49:51Z", message: nil, status_log_id: 77127, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:49:52], updated_at: ~N[2026-08-21 07:49:52]}} [2026-08-21 07:49:57.015] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:49:36Z"} [2026-08-21 07:49:57.016] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:49:36Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 30, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:50:04.077] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "HhdyFjAPaQtKCDsFeD4gIBU6VmsKdTcIpNJTDN0a0cMfMORqdn092FMl", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 07:50:04.341] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "nY8BtAYjzkvc5qrQqTfR83zd", "live_socket_id" => "users_sessions:_gyWJnb72cBNLoly6C0mOch11oXZNsn0EVBfto7MVeo=", "user_token" => <<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>} [2026-08-21 07:50:04.343] [DEBUG] QUERY OK source="users_tokens" db=0.9ms queue=0.5ms idle=1637.3ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:50:04.341937Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 07:50:04.347] [DEBUG] QUERY OK source="core_transactions" db=3.4ms queue=0.2ms idle=1399.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:50:04.349] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=1.3ms idle=391.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:50:04.354] [DEBUG] QUERY OK source="core_transactions" db=1.6ms queue=2.3ms idle=2.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:50:04.392] [DEBUG] QUERY OK source="core_transactions" db=37.1ms idle=4.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:50:04.399] [DEBUG] QUERY OK source="tid_masters" db=2.5ms queue=4.3ms idle=38.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:50:04.404] [DEBUG] QUERY OK source="merchant_adjustments" db=2.0ms queue=2.5ms idle=7.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:50:04.404] [DEBUG] Replied in 64ms [2026-08-21 07:50:05.989] [DEBUG] HANDLE EVENT "toggle_merchant_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:05.989] [DEBUG] Replied in 202µs [2026-08-21 07:50:11.250] [DEBUG] HANDLE EVENT "close_merchant_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:11.250] [DEBUG] Replied in 222µs [2026-08-21 07:50:13.953] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mids" => ["", ""], "_unused_scheme_names" => ["", "", "", "", "", "", "", ""], "_unused_transaction_types" => ["", "", ""], "date_from" => "2026-06-22", "date_to" => "2026-08-21", "merchant_mids" => ["425590250000000", "419926360000000"], "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:50:13.954] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.2ms idle=958.4ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-06-22], ~D[2026-08-21], ~D[2026-06-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:50:13.955] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=0.4ms idle=760.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:50:13.957] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=0.5ms idle=1.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-06-22], ~D[2026-08-21], ~D[2026-06-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:50:13.997] [DEBUG] QUERY OK source="core_transactions" db=39.3ms idle=1.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-06-22], ~D[2026-08-21], ~D[2026-06-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:50:13.998] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.3ms idle=0.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:50:14.040] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms queue=40.7ms idle=0.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-06-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:50:14.040] [DEBUG] Replied in 87ms [2026-08-21 07:50:14.279] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mids" => ["", ""], "_unused_scheme_names" => ["", "", "", "", "", "", "", ""], "_unused_transaction_types" => ["", "", ""], "date_from" => "2026-05-22", "date_to" => "2026-08-21", "merchant_mids" => ["425590250000000", "419926360000000"], "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:50:14.281] [DEBUG] QUERY OK source="core_transactions" db=1.5ms idle=279.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-22], ~D[2026-08-21], ~D[2026-05-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:50:14.282] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.4ms idle=240.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:50:14.283] [DEBUG] QUERY OK source="core_transactions" db=0.6ms queue=0.3ms idle=1.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-05-22], ~D[2026-08-21], ~D[2026-05-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:50:14.323] [DEBUG] QUERY OK source="core_transactions" db=39.4ms idle=1.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-22], ~D[2026-08-21], ~D[2026-05-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:50:14.326] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=1.9ms idle=40.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:50:14.328] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=0.5ms idle=3.7ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-05-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:50:14.328] [DEBUG] Replied in 49ms [2026-08-21 07:50:14.501] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mids" => ["", ""], "_unused_scheme_names" => ["", "", "", "", "", "", "", ""], "_unused_transaction_types" => ["", "", ""], "date_from" => "2026-04-22", "date_to" => "2026-08-21", "merchant_mids" => ["425590250000000", "419926360000000"], "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:50:14.503] [DEBUG] QUERY OK source="core_transactions" db=0.9ms idle=175.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-04-22], ~D[2026-08-21], ~D[2026-04-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:50:14.505] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.8ms idle=175.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?,?,?)) ["TESTMID_FULL", "TESTMID_SEED", "419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:50:14.506] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=0.4ms idle=1.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?,?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-04-22], ~D[2026-08-21], ~D[2026-04-22], ~D[2026-08-21], "425590250000000", "419926360000000", "TESTMID_FULL", "TESTMID_SEED", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:50:14.547] [DEBUG] QUERY OK source="core_transactions" db=40.2ms idle=2.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-04-22], ~D[2026-08-21], ~D[2026-04-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:50:14.549] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.8ms idle=41.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?,?,?)) ["TESTMID_FULL", "TESTMID_SEED", "419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:50:14.551] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms queue=0.3ms idle=2.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?,?,?)) [~D[2026-04-22], ~D[2026-08-21], "425590250000000", "419926360000000", "TESTMID_FULL", "TESTMID_SEED"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:50:14.551] [DEBUG] Replied in 50ms [2026-08-21 07:50:16.317] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mids" => ["", "", "", ""], "_unused_scheme_names" => ["", "", "", "", "", "", "", ""], "_unused_transaction_types" => ["", "", ""], "date_from" => "2026-05-22", "date_to" => "2026-08-21", "merchant_mids" => ["425590250000000", "419926360000000", "TESTMID_FULL", "TESTMID_SEED"], "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:50:16.318] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=0.1ms idle=654.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-22], ~D[2026-08-21], ~D[2026-05-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:50:16.320] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.6ms idle=311.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:50:16.322] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=0.6ms idle=2.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-05-22], ~D[2026-08-21], ~D[2026-05-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:50:16.363] [DEBUG] QUERY OK source="core_transactions" db=40.1ms idle=2.5ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-22], ~D[2026-08-21], ~D[2026-05-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:50:16.365] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.8ms idle=41.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:50:16.366] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=0.2ms idle=2.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-05-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:50:16.366] [DEBUG] Replied in 49ms [2026-08-21 07:50:18.032] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mids" => ["", ""], "_unused_scheme_names" => ["", "", "", "", "", "", "", ""], "_unused_transaction_types" => ["", "", ""], "date_from" => "2026-05-01", "date_to" => "2026-08-21", "merchant_mids" => ["425590250000000", "419926360000000"], "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:50:18.033] [DEBUG] QUERY OK source="core_transactions" db=0.9ms idle=369.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:50:18.034] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.4ms idle=19.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?,?,?)) ["TESTMID_FULL", "TESTMID_SEED", "419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:50:18.036] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.3ms idle=1.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?,?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21], "425590250000000", "419926360000000", "TESTMID_FULL", "TESTMID_SEED", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:50:18.076] [DEBUG] QUERY OK source="core_transactions" db=40.0ms idle=1.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:50:18.079] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=1.4ms idle=40.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?,?,?)) ["TESTMID_FULL", "TESTMID_SEED", "419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:50:18.080] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=0.3ms idle=2.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?,?,?)) [~D[2026-05-01], ~D[2026-08-21], "425590250000000", "419926360000000", "TESTMID_FULL", "TESTMID_SEED"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:50:18.080] [DEBUG] Replied in 48ms [2026-08-21 07:50:21.672] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:50:21.672] [INFO ] Incoming JSON payload: {"oid":"47aeeec1-d4e9-45ae-9be8-11fab6cc7db9","sn":"98251226730001","uploadTime":"2026-08-21T07:50:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:50:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:50:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:50:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:50:21Z"},{"itemkey":"ram_free_mb","value":"872","timestamp":"2026-08-21T07:50:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:50:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:50:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:50:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:50:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:50:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:50:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:50:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:50:21Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-08-21T07:50:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:50: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:50:21.674] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "47aeeec1-d4e9-45ae-9be8-11fab6cc7db9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:50:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:50:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:50:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:50:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:50:21Z", "value" => "872"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:50:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:50:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:50:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:50:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:50:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:50:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:50:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:50:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:50:21Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:50:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:50: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:50:21Z", "vendor" => "morefun"} [2026-08-21 07:50:21.674] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:50:21.674] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:50:21.674] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:50:21.675] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1010.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-08-21 07:50:21.676] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=652.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-08-21 07:50:21.677] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:50:21.678] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:50:21.679] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:50:21.745] [DEBUG] QUERY OK source="tms_terminals" db=24.7ms queue=41.1ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:50:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:50:21.745] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:50:21.746] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=67.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:50:21.801] [DEBUG] QUERY OK source="tms_terminals" db=54.0ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:50:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:50:21.824] [DEBUG] QUERY OK db=22.6ms idle=54.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "47aeeec1-d4e9-45ae-9be8-11fab6cc7db9", "2026-08-21T07:50:21Z", ~N[2026-08-21 07:50:21], ~N[2026-08-21 07:50:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:50:21.825] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77128, oid: "47aeeec1-d4e9-45ae-9be8-11fab6cc7db9", upload_time: "2026-08-21T07:50:21Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:21], updated_at: ~N[2026-08-21 07:50:21]} [2026-08-21 07:50:21.825] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:50:21Z", "value" => "morefun"} [2026-08-21 07:50:21.865] [DEBUG] QUERY OK db=39.1ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:21Z", "morefun", "vendor", 77128, ~N[2026-08-21 07:50:21], ~N[2026-08-21 07:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:21.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783007, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:21], updated_at: ~N[2026-08-21 07:50:21]}} [2026-08-21 07:50:21.866] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:50:21Z", "value" => "kiosk_launcher"} [2026-08-21 07:50:21.895] [DEBUG] QUERY OK db=29.1ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:21Z", "kiosk_launcher", "model", 77128, ~N[2026-08-21 07:50:21], ~N[2026-08-21 07:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:21.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783008, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:21], updated_at: ~N[2026-08-21 07:50:21]}} [2026-08-21 07:50:21.895] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:50:21Z", "value" => "1.0"} [2026-08-21 07:50:21.937] [DEBUG] QUERY OK db=40.1ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:21Z", "1.0", "app_version", 77128, ~N[2026-08-21 07:50:21], ~N[2026-08-21 07:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:21.937] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783009, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:21], updated_at: ~N[2026-08-21 07:50:21]}} [2026-08-21 07:50:21.938] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:50:21Z", "value" => "13"} [2026-08-21 07:50:22.003] [DEBUG] QUERY OK db=63.9ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:21Z", "13", "android_version", 77128, ~N[2026-08-21 07:50:21], ~N[2026-08-21 07:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:22.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783010, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:21], updated_at: ~N[2026-08-21 07:50:21]}} [2026-08-21 07:50:22.003] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:50:21Z", "value" => "872"} [2026-08-21 07:50:22.225] [DEBUG] QUERY OK db=219.1ms queue=2.4ms idle=67.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:21Z", "872", "ram_free_mb", 77128, ~N[2026-08-21 07:50:22], ~N[2026-08-21 07:50:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:22.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783011, itemkey: "ram_free_mb", value: "872", timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:22], updated_at: ~N[2026-08-21 07:50:22]}} [2026-08-21 07:50:22.226] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:50:21Z", "value" => "WIFI"} [2026-08-21 07:50:22.273] [DEBUG] QUERY OK db=46.5ms queue=0.1ms idle=83.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:21Z", "WIFI", "network_type", 77128, ~N[2026-08-21 07:50:22], ~N[2026-08-21 07:50:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:22.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783012, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:22], updated_at: ~N[2026-08-21 07:50:22]}} [2026-08-21 07:50:22.273] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:50:21Z", "value" => "true"} [2026-08-21 07:50:22.316] [DEBUG] QUERY OK db=42.0ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:21Z", "true", "kiosk_active", 77128, ~N[2026-08-21 07:50:22], ~N[2026-08-21 07:50:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:22.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783013, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:22], updated_at: ~N[2026-08-21 07:50:22]}} [2026-08-21 07:50:22.316] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:50:21Z", "value" => ""} [2026-08-21 07:50:22.346] [DEBUG] QUERY OK db=30.0ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:50:21Z", "sim_operator", 77128, ~N[2026-08-21 07:50:22], ~N[2026-08-21 07:50:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:22.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783014, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:22], updated_at: ~N[2026-08-21 07:50:22]}} [2026-08-21 07:50:22.347] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:50:21Z", "value" => "UNKNOWN"} [2026-08-21 07:50:22.385] [DEBUG] QUERY OK db=37.7ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:21Z", "UNKNOWN", "sim_number", 77128, ~N[2026-08-21 07:50:22], ~N[2026-08-21 07:50:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:22.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783015, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:22], updated_at: ~N[2026-08-21 07:50:22]}} [2026-08-21 07:50:22.385] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:50:21Z", "value" => "UNKNOWN"} [2026-08-21 07:50:22.445] [DEBUG] QUERY OK db=59.0ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:21Z", "UNKNOWN", "sim_iccid", 77128, ~N[2026-08-21 07:50:22], ~N[2026-08-21 07:50:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:22.445] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783016, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:22], updated_at: ~N[2026-08-21 07:50:22]}} [2026-08-21 07:50:22.445] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:50:21Z", "value" => "UNKNOWN"} [2026-08-21 07:50:22.713] [DEBUG] QUERY OK db=265.4ms idle=61.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:21Z", "UNKNOWN", "sim_imsi", 77128, ~N[2026-08-21 07:50:22], ~N[2026-08-21 07:50:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:22.713] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783017, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:22], updated_at: ~N[2026-08-21 07:50:22]}} [2026-08-21 07:50:22.713] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:50:21Z", "value" => "UNKNOWN"} [2026-08-21 07:50:22.772] [DEBUG] QUERY OK db=56.9ms idle=269.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:21Z", "UNKNOWN", "sim_iccid2", 77128, ~N[2026-08-21 07:50:22], ~N[2026-08-21 07:50:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:22.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783018, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:22], updated_at: ~N[2026-08-21 07:50:22]}} [2026-08-21 07:50:22.772] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:50:21Z", "value" => "UNKNOWN"} [2026-08-21 07:50:22.809] [DEBUG] QUERY OK db=36.8ms idle=60.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:21Z", "UNKNOWN", "sim_imsi2", 77128, ~N[2026-08-21 07:50:22], ~N[2026-08-21 07:50:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:22.810] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783019, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:22], updated_at: ~N[2026-08-21 07:50:22]}} [2026-08-21 07:50:22.810] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:50:21Z", "value" => "27"} [2026-08-21 07:50:22.855] [DEBUG] QUERY OK db=45.0ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:21Z", "27", "data_usage_mb", 77128, ~N[2026-08-21 07:50:22], ~N[2026-08-21 07:50:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:22.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783020, itemkey: "data_usage_mb", value: "27", timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:22], updated_at: ~N[2026-08-21 07:50:22]}} [2026-08-21 07:50:22.855] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:50:21Z", "value" => "0"} [2026-08-21 07:50:22.897] [DEBUG] QUERY OK db=40.4ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:21Z", "0", "mobile_data_mb", 77128, ~N[2026-08-21 07:50:22], ~N[2026-08-21 07:50:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:22.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783021, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:22], updated_at: ~N[2026-08-21 07:50:22]}} [2026-08-21 07:50:22.902] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:50: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:50:23.000] [DEBUG] QUERY OK db=97.3ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77128, ~N[2026-08-21 07:50:22], ~N[2026-08-21 07:50:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:23.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783022, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:50:21Z", message: nil, status_log_id: 77128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:22], updated_at: ~N[2026-08-21 07:50:22]}} [2026-08-21 07:50:26.100] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:26.100] [DEBUG] Replied in 166µs [2026-08-21 07:50:27.127] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:27.127] [DEBUG] Replied in 248µs [2026-08-21 07:50:27.327] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:27.327] [DEBUG] Replied in 187µs [2026-08-21 07:50:28.986] [DEBUG] HANDLE EVENT "close_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:28.986] [DEBUG] Replied in 173µs [2026-08-21 07:50:30.437] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:30.437] [DEBUG] Replied in 257µs [2026-08-21 07:50:32.540] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 07:50:32.783] [DEBUG] HANDLE EVENT "close_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:32.785] [DEBUG] Replied in 1ms [2026-08-21 07:50:34.117] [DEBUG] HANDLE EVENT "toggle_type_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:34.117] [DEBUG] Replied in 179µs [2026-08-21 07:50:35.339] [DEBUG] HANDLE EVENT "close_type_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:35.339] [DEBUG] Replied in 217µs [2026-08-21 07:50:37.019] [DEBUG] HANDLE EVENT "toggle_merchant_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:37.019] [DEBUG] Replied in 197µs [2026-08-21 07:50:38.643] [DEBUG] HANDLE EVENT "close_merchant_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:38.643] [DEBUG] Replied in 219µs [2026-08-21 07:50:41.277] [DEBUG] HANDLE EVENT "toggle_merchant_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:41.277] [DEBUG] Replied in 181µs [2026-08-21 07:50:42.637] [DEBUG] HANDLE EVENT "close_merchant_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:42.637] [DEBUG] Replied in 182µs [2026-08-21 07:50:44.081] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:44.081] [DEBUG] Replied in 172µs [2026-08-21 07:50:44.722] [INFO ] Running offline device check... [2026-08-21 07:50:44.722] [INFO ] Starting offline device check... [2026-08-21 07:50:44.724] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.7ms idle=496.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-08-21 07:50:44.731] [INFO ] Starting scheduled rule validation [2026-08-21 07:50:44.731] [DEBUG] Validating missing assignments [2026-08-21 07:50:44.733] [DEBUG] QUERY OK source="terminal_group_rules" db=1.5ms idle=6.7ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-08-21 07:50:44.734] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=0.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-08-21 07:50:44.735] [DEBUG] Re-applied 0 rules during validation [2026-08-21 07:50:44.735] [DEBUG] Validating invalid assignments [2026-08-21 07:50:44.735] [DEBUG] Validating rule consistency [2026-08-21 07:50:44.735] [DEBUG] Updating group terminal counts [2026-08-21 07:50:44.736] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.8ms queue=0.3ms idle=57.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:50:44.741] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms queue=0.9ms idle=4.1ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-08-21 07:50:44.743] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms queue=1.4ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:249 [2026-08-21 07:50:44.743] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.745] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms queue=0.5ms idle=0.4ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-08-21 07:50:44.746] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.746] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms queue=0.4ms idle=0.1ms 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-08-21 07:50:44.747] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms queue=0.3ms idle=0.5ms 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-08-21 07:50:44.748] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.749] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms queue=0.9ms 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-08-21 07:50:44.749] [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-08-21 07:50:44.750] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms queue=0.6ms idle=0.6ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:262 [2026-08-21 07:50:44.751] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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-08-21 07:50:44.752] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.3ms 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-08-21 07:50:44.753] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-08-21 07:50:44.753] [INFO ] Rule validation completed - applied 0 fixes [2026-08-21 07:50:44.753] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=1.0ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.756] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.759] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.761] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.766] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.767] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=5.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.781] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.786] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=13.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.789] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.793] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.794] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.818] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=23.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.819] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.821] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.822] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.823] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.824] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.864] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=40.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=40.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:50:44.866] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.876] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.877] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=10.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.879] [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-08-21 07:50:44.880] [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-08-21 07:50:44.881] [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-08-21 07:50:44.885] [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-08-21 07:50:44.886] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.886] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.888] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.888] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.891] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.892] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.893] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.894] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.895] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.896] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.897] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.898] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.898] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.899] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.899] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.900] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.900] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.901] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.902] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.902] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:50:44.902] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 07:50:44.902] [INFO ] Offline device check completed successfully [2026-08-21 07:50:45.247] [DEBUG] HANDLE EVENT "close_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:45.250] [DEBUG] Replied in 180µs [2026-08-21 07:50:46.873] [DEBUG] HANDLE EVENT "toggle_type_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:46.874] [DEBUG] Replied in 168µs [2026-08-21 07:50:48.492] [DEBUG] HANDLE EVENT "close_type_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:50:48.492] [DEBUG] Replied in 221µs [2026-08-21 07:50:51.790] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:50:51.790] [INFO ] Incoming JSON payload: {"oid":"2f040ef9-5349-4b81-addb-4da70629e7eb","sn":"98251226730001","uploadTime":"2026-08-21T07:50:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:50:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:50:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:50:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:50:51Z"},{"itemkey":"ram_free_mb","value":"870","timestamp":"2026-08-21T07:50:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:50:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:50:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:50:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:50:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:50:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:50:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:50:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:50:51Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-08-21T07:50:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:50: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:50:51.798] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2f040ef9-5349-4b81-addb-4da70629e7eb", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:50:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:50:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:50:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:50:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:50:51Z", "value" => "870"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:50:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:50:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:50:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:50:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:50:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:50:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:50:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:50:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:50:51Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:50:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:50: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:50:51Z", "vendor" => "morefun"} [2026-08-21 07:50:51.798] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:50:51.798] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:50:51.798] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:50:51.802] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms queue=2.6ms idle=545.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-08-21 07:50:51.807] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms queue=0.7ms idle=136.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 07:50:51.807] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:50:51.808] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=5.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:50:51.809] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:50:51.840] [DEBUG] QUERY OK source="tms_terminals" db=31.3ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:50:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:50:51.840] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:50:51.842] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.3ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:50:51.911] [DEBUG] QUERY OK source="tms_terminals" db=67.4ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:50:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:50:51.944] [DEBUG] QUERY OK db=32.9ms idle=68.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2f040ef9-5349-4b81-addb-4da70629e7eb", "2026-08-21T07:50:51Z", ~N[2026-08-21 07:50:51], ~N[2026-08-21 07:50:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:50:51.944] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77129, oid: "2f040ef9-5349-4b81-addb-4da70629e7eb", upload_time: "2026-08-21T07:50:51Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:51], updated_at: ~N[2026-08-21 07:50:51]} [2026-08-21 07:50:51.944] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:50:51Z", "value" => "morefun"} [2026-08-21 07:50:52.007] [DEBUG] QUERY OK db=62.6ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:51Z", "morefun", "vendor", 77129, ~N[2026-08-21 07:50:51], ~N[2026-08-21 07:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783023, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:51], updated_at: ~N[2026-08-21 07:50:51]}} [2026-08-21 07:50:52.008] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:50:51Z", "value" => "kiosk_launcher"} [2026-08-21 07:50:52.099] [DEBUG] QUERY OK db=90.7ms idle=64.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:51Z", "kiosk_launcher", "model", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783024, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:50:52.100] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:50:51Z", "value" => "1.0"} [2026-08-21 07:50:52.216] [DEBUG] QUERY OK db=115.6ms idle=92.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:51Z", "1.0", "app_version", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783025, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:50:52.217] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:50:51Z", "value" => "13"} [2026-08-21 07:50:52.276] [DEBUG] QUERY OK db=57.0ms idle=118.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:51Z", "13", "android_version", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783026, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:50:52.276] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:50:51Z", "value" => "870"} [2026-08-21 07:50:52.317] [DEBUG] QUERY OK db=40.6ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:51Z", "870", "ram_free_mb", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783027, itemkey: "ram_free_mb", value: "870", timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:50:52.318] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:50:51Z", "value" => "WIFI"} [2026-08-21 07:50:52.382] [DEBUG] QUERY OK db=64.1ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:51Z", "WIFI", "network_type", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783028, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:50:52.383] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:50:51Z", "value" => "true"} [2026-08-21 07:50:52.427] [DEBUG] QUERY OK db=44.5ms idle=65.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:51Z", "true", "kiosk_active", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783029, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:50:52.428] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:50:51Z", "value" => ""} [2026-08-21 07:50:52.493] [DEBUG] QUERY OK db=64.8ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:50:51Z", "sim_operator", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783030, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:50:52.494] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:50:51Z", "value" => "UNKNOWN"} [2026-08-21 07:50:52.540] [DEBUG] QUERY OK db=46.1ms idle=66.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:51Z", "UNKNOWN", "sim_number", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783031, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:50:52.541] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:50:51Z", "value" => "UNKNOWN"} [2026-08-21 07:50:52.605] [DEBUG] QUERY OK db=63.6ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:51Z", "UNKNOWN", "sim_iccid", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.605] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783032, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:50:52.605] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:50:51Z", "value" => "UNKNOWN"} [2026-08-21 07:50:52.663] [DEBUG] QUERY OK db=57.3ms idle=65.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:51Z", "UNKNOWN", "sim_imsi", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.664] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783033, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:50:52.664] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:50:51Z", "value" => "UNKNOWN"} [2026-08-21 07:50:52.721] [DEBUG] QUERY OK db=48.8ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:51Z", "UNKNOWN", "sim_iccid2", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.721] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783034, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:50:52.721] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:50:51Z", "value" => "UNKNOWN"} [2026-08-21 07:50:52.785] [DEBUG] QUERY OK db=63.2ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:51Z", "UNKNOWN", "sim_imsi2", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.785] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783035, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:50:52.785] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:50:51Z", "value" => "27"} [2026-08-21 07:50:52.866] [DEBUG] QUERY OK db=80.2ms idle=64.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:51Z", "27", "data_usage_mb", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783036, itemkey: "data_usage_mb", value: "27", timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:50:52.866] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:50:51Z", "value" => "0"} [2026-08-21 07:50:52.907] [DEBUG] QUERY OK db=40.0ms queue=0.4ms idle=81.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50:51Z", "0", "mobile_data_mb", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.908] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783037, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:50:52.908] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:50: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:50:52.977] [DEBUG] QUERY OK db=67.4ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:50: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77129, ~N[2026-08-21 07:50:52], ~N[2026-08-21 07:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:50:52.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783038, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:50:51Z", message: nil, status_log_id: 77129, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:50:52], updated_at: ~N[2026-08-21 07:50:52]}} [2026-08-21 07:51:21.892] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:51:21.892] [INFO ] Incoming JSON payload: {"oid":"03319672-4b85-44be-a11c-72b69391ca4d","sn":"98251226730001","uploadTime":"2026-08-21T07:51:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:51:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:51:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:51:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:51:21Z"},{"itemkey":"ram_free_mb","value":"869","timestamp":"2026-08-21T07:51:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:51:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:51:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:51:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:51:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:51:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:51:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:51:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:51:21Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-08-21T07:51:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:51: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:51:21.895] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "03319672-4b85-44be-a11c-72b69391ca4d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:51:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:51:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:51:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:51:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:51:21Z", "value" => "869"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:51:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:51:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:51:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:51:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:51:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:51:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:51:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:51:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:51:21Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:51:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:51: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:51:21Z", "vendor" => "morefun"} [2026-08-21 07:51:21.895] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:51:21.895] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:51:21.895] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:51:21.897] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=1212.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-08-21 07:51:21.899] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.2ms idle=498.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-08-21 07:51:21.899] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:51:21.900] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=2.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:51:21.900] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:51:21.932] [DEBUG] QUERY OK source="tms_terminals" db=32.3ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:51:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:51:21.933] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:51:21.933] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=33.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:51:21.984] [DEBUG] QUERY OK source="tms_terminals" db=49.3ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:51:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:51:22.026] [DEBUG] QUERY OK db=41.9ms idle=50.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "03319672-4b85-44be-a11c-72b69391ca4d", "2026-08-21T07:51:21Z", ~N[2026-08-21 07:51:21], ~N[2026-08-21 07:51:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:51:22.027] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77130, oid: "03319672-4b85-44be-a11c-72b69391ca4d", upload_time: "2026-08-21T07:51:21Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:21], updated_at: ~N[2026-08-21 07:51:21]} [2026-08-21 07:51:22.027] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:51:21Z", "value" => "morefun"} [2026-08-21 07:51:22.068] [DEBUG] QUERY OK db=39.9ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:21Z", "morefun", "vendor", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783039, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.068] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:51:21Z", "value" => "kiosk_launcher"} [2026-08-21 07:51:22.105] [DEBUG] QUERY OK db=36.4ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:21Z", "kiosk_launcher", "model", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.105] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783040, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.105] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:51:21Z", "value" => "1.0"} [2026-08-21 07:51:22.129] [DEBUG] QUERY OK db=23.3ms queue=0.1ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:21Z", "1.0", "app_version", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.129] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783041, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.130] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:51:21Z", "value" => "13"} [2026-08-21 07:51:22.190] [DEBUG] QUERY OK db=59.1ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:21Z", "13", "android_version", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783042, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.190] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:51:21Z", "value" => "869"} [2026-08-21 07:51:22.235] [DEBUG] QUERY OK db=44.7ms queue=0.1ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:21Z", "869", "ram_free_mb", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783043, itemkey: "ram_free_mb", value: "869", timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.237] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:51:21Z", "value" => "WIFI"} [2026-08-21 07:51:22.296] [DEBUG] QUERY OK db=58.6ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:21Z", "WIFI", "network_type", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.296] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783044, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.297] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:51:21Z", "value" => "true"} [2026-08-21 07:51:22.366] [DEBUG] QUERY OK db=68.6ms idle=62.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:21Z", "true", "kiosk_active", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783045, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.367] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:51:21Z", "value" => ""} [2026-08-21 07:51:22.419] [DEBUG] QUERY OK db=51.1ms idle=72.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:51:21Z", "sim_operator", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783046, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.421] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:51:21Z", "value" => "UNKNOWN"} [2026-08-21 07:51:22.469] [DEBUG] QUERY OK db=47.8ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:21Z", "UNKNOWN", "sim_number", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783047, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.469] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:51:21Z", "value" => "UNKNOWN"} [2026-08-21 07:51:22.503] [DEBUG] QUERY OK db=33.3ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:21Z", "UNKNOWN", "sim_iccid", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783048, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.503] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:51:21Z", "value" => "UNKNOWN"} [2026-08-21 07:51:22.547] [DEBUG] QUERY OK db=43.4ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:21Z", "UNKNOWN", "sim_imsi", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783049, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.548] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:51:21Z", "value" => "UNKNOWN"} [2026-08-21 07:51:22.583] [DEBUG] QUERY OK db=34.3ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:21Z", "UNKNOWN", "sim_iccid2", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783050, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.583] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:51:21Z", "value" => "UNKNOWN"} [2026-08-21 07:51:22.637] [DEBUG] QUERY OK db=53.3ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:21Z", "UNKNOWN", "sim_imsi2", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783051, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.637] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:51:21Z", "value" => "27"} [2026-08-21 07:51:22.685] [DEBUG] QUERY OK db=47.3ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:21Z", "27", "data_usage_mb", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.687] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783052, itemkey: "data_usage_mb", value: "27", timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.688] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:51:21Z", "value" => "0"} [2026-08-21 07:51:22.729] [DEBUG] QUERY OK db=41.3ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:21Z", "0", "mobile_data_mb", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783053, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:22.730] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:51: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:51:22.762] [DEBUG] QUERY OK db=30.3ms queue=0.7ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77130, ~N[2026-08-21 07:51:22], ~N[2026-08-21 07:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:22.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783054, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:51:21Z", message: nil, status_log_id: 77130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:22], updated_at: ~N[2026-08-21 07:51:22]}} [2026-08-21 07:51:47.371] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mids" => ["", "", "", ""], "_unused_scheme_names" => ["", "", "", "", "", "", "", ""], "_unused_transaction_types" => ["", "", ""], "date_from" => "2026-06-01", "date_to" => "2026-08-21", "merchant_mids" => ["425590250000000", "419926360000000", "TESTMID_FULL", "TESTMID_SEED"], "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:51:47.372] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=877.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-06-01], ~D[2026-08-21], ~D[2026-06-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:51:47.374] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.7ms idle=689.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:51:47.376] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.5ms idle=2.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-06-01], ~D[2026-08-21], ~D[2026-06-01], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:51:47.416] [DEBUG] QUERY OK source="core_transactions" db=39.7ms idle=2.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-06-01], ~D[2026-08-21], ~D[2026-06-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:51:47.420] [DEBUG] QUERY OK source="tid_masters" db=2.1ms queue=1.5ms idle=40.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:51:47.425] [DEBUG] QUERY OK source="merchant_adjustments" db=2.5ms queue=0.5ms idle=6.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-06-01], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:51:47.425] [DEBUG] Replied in 55ms [2026-08-21 07:51:47.554] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mids" => ["", "", "", ""], "_unused_scheme_names" => ["", "", "", "", "", "", "", ""], "_unused_transaction_types" => ["", "", ""], "date_from" => "2026-07-01", "date_to" => "2026-08-21", "merchant_mids" => ["425590250000000", "419926360000000", "TESTMID_FULL", "TESTMID_SEED"], "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:51:47.556] [DEBUG] QUERY OK source="core_transactions" db=1.7ms idle=129.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-01], ~D[2026-08-21], ~D[2026-07-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:51:47.560] [DEBUG] QUERY OK source="tid_masters" db=1.0ms queue=2.3ms idle=58.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:51:47.565] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.8ms idle=5.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-01], ~D[2026-08-21], ~D[2026-07-01], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:51:47.601] [DEBUG] QUERY OK source="core_transactions" db=35.3ms idle=5.4ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-01], ~D[2026-08-21], ~D[2026-07-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:51:47.606] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=4.1ms idle=37.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:51:47.609] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=1.5ms idle=5.7ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-01], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:51:47.609] [DEBUG] Replied in 55ms [2026-08-21 07:51:47.777] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mids" => ["", "", "", ""], "_unused_scheme_names" => ["", "", "", "", "", "", "", ""], "_unused_transaction_types" => ["", "", ""], "date_from" => "2026-08-01", "date_to" => "2026-08-21", "merchant_mids" => ["425590250000000", "419926360000000", "TESTMID_FULL", "TESTMID_SEED"], "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:51:47.779] [DEBUG] QUERY OK source="core_transactions" db=0.9ms idle=171.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-01], ~D[2026-08-21], ~D[2026-08-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:51:47.780] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.4ms idle=170.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:51:47.785] [DEBUG] QUERY OK source="core_transactions" db=1.7ms queue=3.0ms idle=1.7ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-01], ~D[2026-08-21], ~D[2026-08-01], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:51:47.823] [DEBUG] QUERY OK source="core_transactions" db=36.9ms queue=0.1ms idle=5.5ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-01], ~D[2026-08-21], ~D[2026-08-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:51:47.829] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=5.0ms idle=37.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:51:47.835] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=5.3ms idle=6.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-08-01], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:51:47.836] [DEBUG] Replied in 58ms [2026-08-21 07:51:52.023] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:51:52.024] [INFO ] Incoming JSON payload: {"oid":"554ce05f-bd29-42d0-80e0-3c3584695a5c","sn":"98251226730001","uploadTime":"2026-08-21T07:51:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:51:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:51:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:51:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:51:51Z"},{"itemkey":"ram_free_mb","value":"867","timestamp":"2026-08-21T07:51:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:51:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:51:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:51:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:51:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:51:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:51:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:51:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:51:51Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-08-21T07:51:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:51: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:51:52.025] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "554ce05f-bd29-42d0-80e0-3c3584695a5c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:51:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:51:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:51:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:51:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:51:51Z", "value" => "867"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:51:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:51:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:51:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:51:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:51:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:51:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:51:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:51:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:51:51Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:51:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:51: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:51:51Z", "vendor" => "morefun"} [2026-08-21 07:51:52.025] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:51:52.025] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:51:52.026] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:51:52.035] [DEBUG] QUERY OK source="parameter_templates" db=9.1ms idle=516.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-08-21 07:51:52.038] [DEBUG] QUERY OK source="parameter_templates" db=3.1ms idle=352.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-08-21 07:51:52.039] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:51:52.046] [DEBUG] QUERY OK source="tms_terminals" db=7.4ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:51:52.046] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:51:52.175] [DEBUG] QUERY OK source="tms_terminals" db=128.3ms idle=8.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:51:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:51:52.175] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:51:52.177] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=129.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:51:52.201] [DEBUG] QUERY OK source="tms_terminals" db=23.0ms queue=0.1ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:51:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:51:52.229] [DEBUG] QUERY OK db=27.4ms idle=24.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "554ce05f-bd29-42d0-80e0-3c3584695a5c", "2026-08-21T07:51:51Z", ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:51:52.229] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77131, oid: "554ce05f-bd29-42d0-80e0-3c3584695a5c", upload_time: "2026-08-21T07:51:51Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]} [2026-08-21 07:51:52.229] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:51:51Z", "value" => "morefun"} [2026-08-21 07:51:52.309] [DEBUG] QUERY OK db=78.3ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:51Z", "morefun", "vendor", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:52.310] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783055, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:52.310] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:51:51Z", "value" => "kiosk_launcher"} [2026-08-21 07:51:52.349] [DEBUG] QUERY OK db=39.1ms idle=81.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:51Z", "kiosk_launcher", "model", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:52.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783056, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:52.350] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:51:51Z", "value" => "1.0"} [2026-08-21 07:51:52.396] [DEBUG] QUERY OK db=45.6ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:51Z", "1.0", "app_version", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:52.396] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783057, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:52.396] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:51:51Z", "value" => "13"} [2026-08-21 07:51:52.450] [DEBUG] QUERY OK db=52.4ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:51Z", "13", "android_version", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:52.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783058, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:52.451] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:51:51Z", "value" => "867"} [2026-08-21 07:51:52.499] [DEBUG] QUERY OK db=47.9ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:51Z", "867", "ram_free_mb", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:52.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783059, itemkey: "ram_free_mb", value: "867", timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:52.501] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:51:51Z", "value" => "WIFI"} [2026-08-21 07:51:52.531] [DEBUG] QUERY OK db=29.1ms idle=51.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:51Z", "WIFI", "network_type", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:52.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783060, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:52.533] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:51:51Z", "value" => "true"} [2026-08-21 07:51:52.670] [DEBUG] QUERY OK db=135.6ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:51Z", "true", "kiosk_active", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:52.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783061, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:52.671] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:51:51Z", "value" => ""} [2026-08-21 07:51:52.732] [DEBUG] QUERY OK db=59.1ms idle=142.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:51:51Z", "sim_operator", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:52.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783062, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:52.733] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:51:51Z", "value" => "UNKNOWN"} [2026-08-21 07:51:52.772] [DEBUG] QUERY OK db=38.9ms idle=63.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:51Z", "UNKNOWN", "sim_number", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:52.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783063, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:52.773] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:51:51Z", "value" => "UNKNOWN"} [2026-08-21 07:51:52.832] [DEBUG] QUERY OK db=58.3ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:51Z", "UNKNOWN", "sim_iccid", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:52.832] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783064, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:52.833] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:51:51Z", "value" => "UNKNOWN"} [2026-08-21 07:51:52.871] [DEBUG] QUERY OK db=38.0ms idle=61.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:51Z", "UNKNOWN", "sim_imsi", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:52.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783065, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:52.872] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:51:51Z", "value" => "UNKNOWN"} [2026-08-21 07:51:52.905] [DEBUG] QUERY OK db=32.7ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:51Z", "UNKNOWN", "sim_iccid2", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:52.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783066, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:52.906] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:51:51Z", "value" => "UNKNOWN"} [2026-08-21 07:51:52.939] [DEBUG] QUERY OK db=32.6ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:51Z", "UNKNOWN", "sim_imsi2", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:52.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783067, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:52.939] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:51:51Z", "value" => "27"} [2026-08-21 07:51:52.971] [DEBUG] QUERY OK db=31.0ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:51Z", "27", "data_usage_mb", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:52.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783068, itemkey: "data_usage_mb", value: "27", timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:52.971] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:51:51Z", "value" => "0"} [2026-08-21 07:51:53.032] [DEBUG] QUERY OK db=60.5ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51:51Z", "0", "mobile_data_mb", 77131, ~N[2026-08-21 07:51:52], ~N[2026-08-21 07:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:53.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783069, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:52], updated_at: ~N[2026-08-21 07:51:52]}} [2026-08-21 07:51:53.039] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:51: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:51:53.073] [DEBUG] QUERY OK db=29.9ms queue=2.5ms idle=68.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:51: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77131, ~N[2026-08-21 07:51:53], ~N[2026-08-21 07:51:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:51:53.075] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783070, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:51:51Z", message: nil, status_log_id: 77131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:51:53], updated_at: ~N[2026-08-21 07:51:53]}} [2026-08-21 07:51:54.714] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mids" => ["", ""], "_unused_scheme_names" => ["", "", "", "", "", "", "", ""], "_unused_transaction_types" => ["", "", ""], "date_from" => "2026-07-01", "date_to" => "2026-08-21", "merchant_mids" => ["425590250000000", "419926360000000"], "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:51:54.716] [DEBUG] QUERY OK source="core_transactions" db=1.9ms idle=194.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-01], ~D[2026-08-21], ~D[2026-07-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:51:54.717] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.3ms idle=33.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:51:54.719] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.4ms idle=1.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-01], ~D[2026-08-21], ~D[2026-07-01], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:51:54.759] [DEBUG] QUERY OK source="core_transactions" db=40.1ms idle=1.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-01], ~D[2026-08-21], ~D[2026-07-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:51:54.763] [DEBUG] QUERY OK source="tid_masters" db=0.9ms queue=2.3ms idle=40.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:51:54.768] [DEBUG] QUERY OK source="merchant_adjustments" db=2.4ms queue=1.3ms idle=5.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-01], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:51:54.768] [DEBUG] Replied in 54ms [2026-08-21 07:51:57.567] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mids" => ["", ""], "_unused_scheme_names" => ["", "", "", "", "", "", "", ""], "_unused_transaction_types" => ["", "", ""], "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mids" => ["425590250000000", "419926360000000"], "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:51:57.570] [DEBUG] QUERY OK source="core_transactions" db=1.8ms idle=885.5ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:51:57.573] [DEBUG] QUERY OK source="tid_masters" db=1.6ms queue=0.3ms idle=43.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:51:57.576] [DEBUG] QUERY OK source="core_transactions" db=1.5ms queue=0.8ms idle=3.7ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:51:57.614] [DEBUG] QUERY OK source="core_transactions" db=37.1ms idle=3.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:51:57.618] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=3.0ms idle=38.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:51:57.622] [DEBUG] QUERY OK source="merchant_adjustments" db=0.9ms queue=2.4ms idle=4.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:51:57.622] [DEBUG] Replied in 55ms [2026-08-21 07:52:02.076] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 07:52:09.592] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch980308009433_20260821075209231","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T07:52:09Z"} [2026-08-21 07:52:09.592] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch980308009433_20260821075209231", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:52:09Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 36, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 57, 56, 48, 51, 48, 56, 48, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:52:22.339] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:52:22.339] [INFO ] Incoming JSON payload: {"oid":"280b59e8-216a-4ad4-b147-6cf7c8f11660","sn":"98251226730001","uploadTime":"2026-08-21T07:52:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"ram_free_mb","value":"864","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:52:21Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:52:22.341] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "280b59e8-216a-4ad4-b147-6cf7c8f11660", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:52:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:52:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:52:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:52:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:52:21Z", "value" => "864"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:52:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:52:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:52:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:52:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:52:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:52:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:52:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:52:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:52:21Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:52:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:52:21Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:52:21Z", "vendor" => "morefun"} [2026-08-21 07:52:22.341] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:52:22.341] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:52:22.341] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:52:22.342] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=691.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-08-21 07:52:22.344] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=645.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 07:52:22.344] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:52:22.345] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:52:22.345] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:52:22.390] [DEBUG] QUERY OK source="tms_terminals" db=45.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:52:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:52:22.390] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:52:22.392] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=46.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:52:22.434] [DEBUG] QUERY OK source="tms_terminals" db=41.4ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:52:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:52:22.468] [DEBUG] QUERY OK db=32.4ms idle=42.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "280b59e8-216a-4ad4-b147-6cf7c8f11660", "2026-08-21T07:52:21Z", ~N[2026-08-21 07:52:22], ~N[2026-08-21 07:52:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:52:22.468] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77132, oid: "280b59e8-216a-4ad4-b147-6cf7c8f11660", upload_time: "2026-08-21T07:52:21Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:22], updated_at: ~N[2026-08-21 07:52:22]} [2026-08-21 07:52:22.468] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:52:21Z", "value" => "morefun"} [2026-08-21 07:52:22.487] [DEBUG] QUERY OK db=17.7ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "morefun", "vendor", 77132, ~N[2026-08-21 07:52:22], ~N[2026-08-21 07:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:22.487] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783071, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:22], updated_at: ~N[2026-08-21 07:52:22]}} [2026-08-21 07:52:22.487] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:52:21Z", "value" => "kiosk_launcher"} [2026-08-21 07:52:22.538] [DEBUG] QUERY OK db=50.2ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "kiosk_launcher", "model", 77132, ~N[2026-08-21 07:52:22], ~N[2026-08-21 07:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:22.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783072, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:22], updated_at: ~N[2026-08-21 07:52:22]}} [2026-08-21 07:52:22.538] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:52:21Z", "value" => "1.0"} [2026-08-21 07:52:22.570] [DEBUG] QUERY OK db=31.8ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "1.0", "app_version", 77132, ~N[2026-08-21 07:52:22], ~N[2026-08-21 07:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:22.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783073, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:22], updated_at: ~N[2026-08-21 07:52:22]}} [2026-08-21 07:52:22.571] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:52:21Z", "value" => "13"} [2026-08-21 07:52:22.597] [DEBUG] QUERY OK db=25.6ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "13", "android_version", 77132, ~N[2026-08-21 07:52:22], ~N[2026-08-21 07:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:22.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783074, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:22], updated_at: ~N[2026-08-21 07:52:22]}} [2026-08-21 07:52:22.598] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:52:21Z", "value" => "864"} [2026-08-21 07:52:22.673] [DEBUG] QUERY OK db=74.3ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "864", "ram_free_mb", 77132, ~N[2026-08-21 07:52:22], ~N[2026-08-21 07:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:22.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783075, itemkey: "ram_free_mb", value: "864", timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:22], updated_at: ~N[2026-08-21 07:52:22]}} [2026-08-21 07:52:22.673] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:52:21Z", "value" => "WIFI"} [2026-08-21 07:52:22.697] [DEBUG] QUERY OK db=23.8ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "WIFI", "network_type", 77132, ~N[2026-08-21 07:52:22], ~N[2026-08-21 07:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:22.698] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783076, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:22], updated_at: ~N[2026-08-21 07:52:22]}} [2026-08-21 07:52:22.698] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:52:21Z", "value" => "true"} [2026-08-21 07:52:22.740] [DEBUG] QUERY OK db=41.9ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "true", "kiosk_active", 77132, ~N[2026-08-21 07:52:22], ~N[2026-08-21 07:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:22.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783077, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:22], updated_at: ~N[2026-08-21 07:52:22]}} [2026-08-21 07:52:22.741] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:52:21Z", "value" => ""} [2026-08-21 07:52:22.794] [DEBUG] QUERY OK db=52.0ms idle=43.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:52:21Z", "sim_operator", 77132, ~N[2026-08-21 07:52:22], ~N[2026-08-21 07:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:22.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783078, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:22], updated_at: ~N[2026-08-21 07:52:22]}} [2026-08-21 07:52:22.794] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:52:21Z", "value" => "UNKNOWN"} [2026-08-21 07:52:22.853] [DEBUG] QUERY OK db=58.0ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "UNKNOWN", "sim_number", 77132, ~N[2026-08-21 07:52:22], ~N[2026-08-21 07:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:22.853] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783079, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:22], updated_at: ~N[2026-08-21 07:52:22]}} [2026-08-21 07:52:22.853] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:52:21Z", "value" => "UNKNOWN"} [2026-08-21 07:52:22.896] [DEBUG] QUERY OK db=41.8ms idle=61.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "UNKNOWN", "sim_iccid", 77132, ~N[2026-08-21 07:52:22], ~N[2026-08-21 07:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:22.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783080, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:22], updated_at: ~N[2026-08-21 07:52:22]}} [2026-08-21 07:52:22.897] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:52:21Z", "value" => "UNKNOWN"} [2026-08-21 07:52:22.930] [DEBUG] QUERY OK db=32.0ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "UNKNOWN", "sim_imsi", 77132, ~N[2026-08-21 07:52:22], ~N[2026-08-21 07:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:22.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783081, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:22], updated_at: ~N[2026-08-21 07:52:22]}} [2026-08-21 07:52:22.932] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:52:21Z", "value" => "UNKNOWN"} [2026-08-21 07:52:22.957] [DEBUG] QUERY OK db=24.6ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "UNKNOWN", "sim_iccid2", 77132, ~N[2026-08-21 07:52:22], ~N[2026-08-21 07:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:22.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783082, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:22], updated_at: ~N[2026-08-21 07:52:22]}} [2026-08-21 07:52:22.957] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:52:21Z", "value" => "UNKNOWN"} [2026-08-21 07:52:23.002] [DEBUG] QUERY OK db=44.8ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "UNKNOWN", "sim_imsi2", 77132, ~N[2026-08-21 07:52:22], ~N[2026-08-21 07:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:23.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783083, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:22], updated_at: ~N[2026-08-21 07:52:22]}} [2026-08-21 07:52:23.003] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:52:21Z", "value" => "27"} [2026-08-21 07:52:23.061] [DEBUG] QUERY OK db=57.3ms queue=0.1ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "27", "data_usage_mb", 77132, ~N[2026-08-21 07:52:23], ~N[2026-08-21 07:52:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:23.061] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783084, itemkey: "data_usage_mb", value: "27", timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:23], updated_at: ~N[2026-08-21 07:52:23]}} [2026-08-21 07:52:23.061] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:52:21Z", "value" => "0"} [2026-08-21 07:52:23.091] [DEBUG] QUERY OK db=29.1ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "0", "mobile_data_mb", 77132, ~N[2026-08-21 07:52:23], ~N[2026-08-21 07:52:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:23.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783085, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:23], updated_at: ~N[2026-08-21 07:52:23]}} [2026-08-21 07:52:23.096] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:52:21Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:52:23.160] [DEBUG] QUERY OK db=63.4ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:21Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77132, ~N[2026-08-21 07:52:23], ~N[2026-08-21 07:52:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:23.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783086, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:52:21Z", message: nil, status_log_id: 77132, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:23], updated_at: ~N[2026-08-21 07:52:23]}} [2026-08-21 07:52:52.407] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:52:52.408] [INFO ] Incoming JSON payload: {"oid":"884e7a54-e117-44e1-b450-3b82ede056ae","sn":"98251226730001","uploadTime":"2026-08-21T07:52:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:52:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:52:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:52:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:52:52Z"},{"itemkey":"ram_free_mb","value":"872","timestamp":"2026-08-21T07:52:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:52:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:52:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:52:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:52:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:52:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:52:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:52:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:52:52Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-08-21T07:52:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:52: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:52:52.414] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "884e7a54-e117-44e1-b450-3b82ede056ae", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:52:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:52:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:52:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:52:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:52:52Z", "value" => "872"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:52:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:52:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:52:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:52:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:52:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:52:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:52:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:52:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:52:52Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:52:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:52: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:52:52Z", "vendor" => "morefun"} [2026-08-21 07:52:52.414] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:52:52.414] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:52:52.414] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:52:52.423] [DEBUG] QUERY OK source="parameter_templates" db=8.4ms idle=1652.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-08-21 07:52:52.424] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=657.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-08-21 07:52:52.424] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:52:52.426] [DEBUG] QUERY OK source="tms_terminals" db=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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:52:52.426] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:52:52.454] [DEBUG] QUERY OK source="tms_terminals" db=27.5ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:52:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:52:52.454] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:52:52.456] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:52:52.495] [DEBUG] QUERY OK source="tms_terminals" db=38.3ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:52:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:52:52.542] [DEBUG] QUERY OK db=46.3ms queue=0.1ms idle=39.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "884e7a54-e117-44e1-b450-3b82ede056ae", "2026-08-21T07:52:52Z", ~N[2026-08-21 07:52:52], ~N[2026-08-21 07:52:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:52:52.542] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77133, oid: "884e7a54-e117-44e1-b450-3b82ede056ae", upload_time: "2026-08-21T07:52:52Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:52], updated_at: ~N[2026-08-21 07:52:52]} [2026-08-21 07:52:52.542] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:52:52Z", "value" => "morefun"} [2026-08-21 07:52:52.576] [DEBUG] QUERY OK db=32.8ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:52Z", "morefun", "vendor", 77133, ~N[2026-08-21 07:52:52], ~N[2026-08-21 07:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:52.577] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783087, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:52], updated_at: ~N[2026-08-21 07:52:52]}} [2026-08-21 07:52:52.577] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:52:52Z", "value" => "kiosk_launcher"} [2026-08-21 07:52:52.632] [DEBUG] QUERY OK db=54.9ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:52Z", "kiosk_launcher", "model", 77133, ~N[2026-08-21 07:52:52], ~N[2026-08-21 07:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:52.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783088, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:52], updated_at: ~N[2026-08-21 07:52:52]}} [2026-08-21 07:52:52.633] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:52:52Z", "value" => "1.0"} [2026-08-21 07:52:52.684] [DEBUG] QUERY OK db=49.2ms queue=0.6ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:52Z", "1.0", "app_version", 77133, ~N[2026-08-21 07:52:52], ~N[2026-08-21 07:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:52.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783089, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:52], updated_at: ~N[2026-08-21 07:52:52]}} [2026-08-21 07:52:52.684] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:52:52Z", "value" => "13"} [2026-08-21 07:52:52.723] [DEBUG] QUERY OK db=36.6ms queue=0.2ms idle=53.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:52Z", "13", "android_version", 77133, ~N[2026-08-21 07:52:52], ~N[2026-08-21 07:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:52.724] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783090, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:52], updated_at: ~N[2026-08-21 07:52:52]}} [2026-08-21 07:52:52.724] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:52:52Z", "value" => "872"} [2026-08-21 07:52:52.768] [DEBUG] QUERY OK db=43.9ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:52Z", "872", "ram_free_mb", 77133, ~N[2026-08-21 07:52:52], ~N[2026-08-21 07:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:52.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783091, itemkey: "ram_free_mb", value: "872", timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:52], updated_at: ~N[2026-08-21 07:52:52]}} [2026-08-21 07:52:52.769] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:52:52Z", "value" => "WIFI"} [2026-08-21 07:52:52.810] [DEBUG] QUERY OK db=38.4ms idle=3.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:52Z", "WIFI", "network_type", 77133, ~N[2026-08-21 07:52:52], ~N[2026-08-21 07:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:52.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783092, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:52], updated_at: ~N[2026-08-21 07:52:52]}} [2026-08-21 07:52:52.811] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:52:52Z", "value" => "true"} [2026-08-21 07:52:52.827] [DEBUG] QUERY OK db=15.8ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:52Z", "true", "kiosk_active", 77133, ~N[2026-08-21 07:52:52], ~N[2026-08-21 07:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:52.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783093, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:52], updated_at: ~N[2026-08-21 07:52:52]}} [2026-08-21 07:52:52.829] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:52:52Z", "value" => ""} [2026-08-21 07:52:52.894] [DEBUG] QUERY OK db=58.8ms queue=1.7ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:52:52Z", "sim_operator", 77133, ~N[2026-08-21 07:52:52], ~N[2026-08-21 07:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:52.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783094, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:52], updated_at: ~N[2026-08-21 07:52:52]}} [2026-08-21 07:52:52.895] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:52:52Z", "value" => "UNKNOWN"} [2026-08-21 07:52:52.938] [DEBUG] QUERY OK db=42.1ms idle=68.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:52Z", "UNKNOWN", "sim_number", 77133, ~N[2026-08-21 07:52:52], ~N[2026-08-21 07:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:52.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783095, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:52], updated_at: ~N[2026-08-21 07:52:52]}} [2026-08-21 07:52:52.938] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:52:52Z", "value" => "UNKNOWN"} [2026-08-21 07:52:52.977] [DEBUG] QUERY OK db=37.7ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:52Z", "UNKNOWN", "sim_iccid", 77133, ~N[2026-08-21 07:52:52], ~N[2026-08-21 07:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:52.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783096, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:52], updated_at: ~N[2026-08-21 07:52:52]}} [2026-08-21 07:52:52.977] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:52:52Z", "value" => "UNKNOWN"} [2026-08-21 07:52:53.025] [DEBUG] QUERY OK db=42.9ms idle=43.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:52Z", "UNKNOWN", "sim_imsi", 77133, ~N[2026-08-21 07:52:52], ~N[2026-08-21 07:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:53.026] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783097, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:52], updated_at: ~N[2026-08-21 07:52:52]}} [2026-08-21 07:52:53.026] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:52:52Z", "value" => "UNKNOWN"} [2026-08-21 07:52:53.075] [DEBUG] QUERY OK db=42.7ms queue=1.3ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:52Z", "UNKNOWN", "sim_iccid2", 77133, ~N[2026-08-21 07:52:53], ~N[2026-08-21 07:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:53.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783098, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:53], updated_at: ~N[2026-08-21 07:52:53]}} [2026-08-21 07:52:53.080] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:52:52Z", "value" => "UNKNOWN"} [2026-08-21 07:52:53.147] [DEBUG] QUERY OK db=52.6ms queue=13.9ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:52Z", "UNKNOWN", "sim_imsi2", 77133, ~N[2026-08-21 07:52:53], ~N[2026-08-21 07:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:53.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783099, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:53], updated_at: ~N[2026-08-21 07:52:53]}} [2026-08-21 07:52:53.148] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:52:52Z", "value" => "27"} [2026-08-21 07:52:53.191] [DEBUG] QUERY OK db=42.7ms idle=72.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:52Z", "27", "data_usage_mb", 77133, ~N[2026-08-21 07:52:53], ~N[2026-08-21 07:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:53.193] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783100, itemkey: "data_usage_mb", value: "27", timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:53], updated_at: ~N[2026-08-21 07:52:53]}} [2026-08-21 07:52:53.194] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:52:52Z", "value" => "0"} [2026-08-21 07:52:53.328] [DEBUG] QUERY OK db=129.6ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52:52Z", "0", "mobile_data_mb", 77133, ~N[2026-08-21 07:52:53], ~N[2026-08-21 07:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:53.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783101, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:53], updated_at: ~N[2026-08-21 07:52:53]}} [2026-08-21 07:52:53.331] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:52: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:52:53.388] [DEBUG] QUERY OK db=53.3ms idle=142.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:52: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77133, ~N[2026-08-21 07:52:53], ~N[2026-08-21 07:52:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:52:53.391] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783102, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:52:52Z", message: nil, status_log_id: 77133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:52:53], updated_at: ~N[2026-08-21 07:52:53]}} [2026-08-21 07:53:06.324] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch136320735881","sn":"98251226730001","status":"error","message":"Unknown command: card","timestamp":"2026-08-21T07:53:06Z"} [2026-08-21 07:53:06.324] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: card", "oid" => "ch136320735881", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:53:06Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 158, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 39, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 49, 51, 54, 51, 50, 48, 55, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:53:14.575] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:53:14.575] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T07:53:14Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T07:53:14Z","value":"22"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T07:53:14Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T07:53:14Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T07:53:14Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T07:53:14Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T07:53:14Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T07:53:14Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T07:53:14Z","vendor":"MoreFun"} [2026-08-21 07:53:14.576] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:53:14Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:53:14Z", "value" => "22"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:53:14Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:53:14Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:53:14Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:53:14Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:53:14Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:53:14Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:53:14Z", "vendor" => "MoreFun"} [2026-08-21 07:53:14.576] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 07:53:14.576] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:53:14.576] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 07:53:14.577] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1107.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-08-21 07:53:14.578] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=708.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:53:14.579] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms idle=1.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 07:53:14.581] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.6ms 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-08-21 07:53:14.583] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms idle=3.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 07:53:14.623] [DEBUG] QUERY OK source="pos_merchant" db=39.4ms idle=1.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 07:53:14.626] [DEBUG] QUERY OK db=1.7ms queue=1.0ms idle=939.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 ["626165170000000"] [2026-08-21 07:53:14.626] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 07:53:14.629] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=45.3ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 07:53:14.629] [DEBUG] QUERY OK source="address" db=0.3ms idle=6.3ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 07:53:14.630] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 07:53:14.633] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 07:53:14.685] [DEBUG] QUERY OK db=50.7ms idle=5.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "9494a1ca0367c9304fef59a6aceec0a02fdb55355b9348784f3aaa0cfcc90fa6", 2275, 938, ~U[2026-08-21 07:53:14Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 07:53:14], ~N[2026-08-21 07:53:14]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 07:53:14.685] [INFO ] AutoPushService: Created push log 48411 for MF919 params.zip [2026-08-21 07:53:14.686] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 2275, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 07:53:14.686] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:53:14.687] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 07:53:14.688] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=57.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-08-21 07:53:14.691] [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-08-21 07:53:14.761] [DEBUG] QUERY OK db=69.0ms idle=6.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ed39671d7a4f1069cb28550531eebd28ca8a883bc52b27d36cd7e500b56ad965", 580, 17947, ~U[2026-08-21 07:53:14Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 07:53:14], ~N[2026-08-21 07:53:14]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 07:53:14.761] [INFO ] AutoPushService: Created push log 48412 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 07:53:14.761] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 580, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 07:53:14.761] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:53:14.761] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 07:53:14.774] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms queue=0.9ms idle=83.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-08-21 07:53:14.774] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 07:53:14.783] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms queue=5.5ms idle=14.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:53:14.783] [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-08-21 07:53:14.788] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 07:53:14.789] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:53:14.789] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:53:14.791] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms idle=15.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 07:53:14.791] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:53:14.791] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 07:53:14.792] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=8.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:53:14.860] [DEBUG] QUERY OK source="tms_terminals" db=25.2ms queue=42.5ms idle=1.9ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 07:53:14], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:53:14.860] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:53:14.861] [INFO ] Event published: terminal_updated [2026-08-21 07:53:14.862] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:53:14.862] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:53:14.862] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:53:14.865] [DEBUG] QUERY OK source="terminal_group_memberships" db=3.8ms idle=68.6ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:53:14], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:53:14.868] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms queue=0.1ms idle=6.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:53:14.872] [DEBUG] QUERY OK source="terminal_group_rules" db=2.8ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:53:14.872] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:53:14.986] [DEBUG] QUERY OK source="tms_terminals" db=77.2ms queue=42.0ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 07:53:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:53:14.989] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=114.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-08-21 07:53:14.990] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=4.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:53:14.993] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms idle=0.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:53:14.994] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 07:53:15.111] [DEBUG] QUERY OK source="parameter_push_logs" db=116.1ms idle=4.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-08-21 07:23:14]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 07:53:15.111] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 07:53:15.111] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 07:53:15.113] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=118.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-08-21 07:53:15.114] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.2ms idle=2.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 07:53:15.115] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:53:15.116] [DEBUG] QUERY OK source="tms_terminals" db=0.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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:53:15.267] [DEBUG] QUERY OK source="tms_terminals" db=109.6ms queue=41.4ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:53:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:53:15.296] [DEBUG] QUERY OK db=28.5ms idle=152.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T07:53:14Z", ~N[2026-08-21 07:53:15], ~N[2026-08-21 07:53:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:53:15.297] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77134, oid: "organization_id", upload_time: "2026-08-21T07:53:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:15], updated_at: ~N[2026-08-21 07:53:15]} [2026-08-21 07:53:15.297] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:53:14Z", "value" => "online"} [2026-08-21 07:53:15.360] [DEBUG] QUERY OK db=62.7ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T07:53:14Z", "online", "status", 77134, ~N[2026-08-21 07:53:15], ~N[2026-08-21 07:53:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:15.360] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783103, itemkey: "status", value: "online", timestamp: "2026-08-21T07:53:14Z", message: "Terminal status update", status_log_id: 77134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:15], updated_at: ~N[2026-08-21 07:53:15]}} [2026-08-21 07:53:15.360] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 07:53:15.361] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:53:14Z", "value" => "22"} [2026-08-21 07:53:15.392] [DEBUG] QUERY OK db=31.5ms idle=64.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T07:53:14Z", "22", "battery", 77134, ~N[2026-08-21 07:53:15], ~N[2026-08-21 07:53:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:15.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783104, itemkey: "battery", value: "22", timestamp: "2026-08-21T07:53:14Z", message: "Battery level", status_log_id: 77134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:15], updated_at: ~N[2026-08-21 07:53:15]}} [2026-08-21 07:53:15.393] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:53:14Z", "value" => "online"} [2026-08-21 07:53:15.455] [DEBUG] QUERY OK db=61.4ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T07:53:14Z", "online", "network", 77134, ~N[2026-08-21 07:53:15], ~N[2026-08-21 07:53:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:15.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783105, itemkey: "network", value: "online", timestamp: "2026-08-21T07:53:14Z", message: "Network connectivity", status_log_id: 77134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:15], updated_at: ~N[2026-08-21 07:53:15]}} [2026-08-21 07:53:15.455] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 07:53:15.455] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:53:14Z", "value" => "0"} [2026-08-21 07:53:15.499] [DEBUG] QUERY OK db=42.9ms idle=64.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T07:53:14Z", "0", "cpu", 77134, ~N[2026-08-21 07:53:15], ~N[2026-08-21 07:53:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:15.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783106, itemkey: "cpu", value: "0", timestamp: "2026-08-21T07:53:14Z", message: "CPU usage percentage", status_log_id: 77134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:15], updated_at: ~N[2026-08-21 07:53:15]}} [2026-08-21 07:53:15.500] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:53:14Z", "value" => "1.0.0"} [2026-08-21 07:53:15.570] [DEBUG] QUERY OK db=69.9ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T07:53:14Z", "1.0.0", "parameter_config", 77134, ~N[2026-08-21 07:53:15], ~N[2026-08-21 07:53:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:15.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783107, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T07:53:14Z", message: "Current parameters version", status_log_id: 77134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:15], updated_at: ~N[2026-08-21 07:53:15]}} [2026-08-21 07:53:15.572] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:53:14Z", "value" => "1.0.1"} [2026-08-21 07:53:15.621] [DEBUG] QUERY OK db=48.4ms idle=73.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T07:53:14Z", "1.0.1", "emv_config", 77134, ~N[2026-08-21 07:53:15], ~N[2026-08-21 07:53:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:15.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783108, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T07:53:14Z", message: "Current EMV config version", status_log_id: 77134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:15], updated_at: ~N[2026-08-21 07:53:15]}} [2026-08-21 07:53:15.622] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:53:14Z", "value" => ""} [2026-08-21 07:53:15.710] [DEBUG] QUERY OK db=87.2ms queue=0.5ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T07:53:14Z", "keys_config", 77134, ~N[2026-08-21 07:53:15], ~N[2026-08-21 07:53:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:15.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783109, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T07:53:14Z", message: "Current keys config version", status_log_id: 77134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:15], updated_at: ~N[2026-08-21 07:53:15]}} [2026-08-21 07:53:15.711] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:53:14Z", "value" => "3.8.7.3"} [2026-08-21 07:53:15.812] [DEBUG] QUERY OK db=100.7ms idle=89.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T07:53:14Z", "3.8.7.3", "application", 77134, ~N[2026-08-21 07:53:15], ~N[2026-08-21 07:53:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:15.812] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783110, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T07:53:14Z", message: "Current application version", status_log_id: 77134, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:15], updated_at: ~N[2026-08-21 07:53:15]}} [2026-08-21 07:53:15.812] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:53:14Z"} [2026-08-21 07:53:15.812] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:53:14Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 41, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:53:22.467] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:53:22.467] [INFO ] Incoming JSON payload: {"oid":"6ad3235e-99ce-487f-893a-8fb4ac5a588d","sn":"98251226730001","uploadTime":"2026-08-21T07:53:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"ram_free_mb","value":"871","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:53:22Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:53:22.469] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6ad3235e-99ce-487f-893a-8fb4ac5a588d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:53:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:53:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:53:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:53:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:53:22Z", "value" => "871"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:53:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:53:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:53:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:53:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:53:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:53:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:53:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:53:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:53:22Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:53:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:53:22Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:53:22Z", "vendor" => "morefun"} [2026-08-21 07:53:22.469] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:53:22.469] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:53:22.469] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:53:22.470] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=761.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 07:53:22.471] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=573.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-08-21 07:53:22.471] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:53:22.472] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:53:22.521] [DEBUG] QUERY OK source="tms_terminals" db=48.1ms idle=1.1ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 07:53:22], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:53:22.521] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:53:22.521] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:53:22.521] [INFO ] Event published: terminal_updated [2026-08-21 07:53:22.521] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:53:22.521] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:53:22.523] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.3ms queue=0.1ms idle=49.2ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:53:22], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:53:22.524] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=2.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:53:22.525] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms queue=0.2ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:53:22.525] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:53:22.602] [DEBUG] QUERY OK source="tms_terminals" db=37.2ms queue=41.2ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 07:53:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:53:22.602] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:53:22.603] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=77.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:53:22.671] [DEBUG] QUERY OK source="tms_terminals" db=25.8ms queue=42.3ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:53:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:53:22.717] [DEBUG] QUERY OK db=44.5ms queue=1.0ms idle=68.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6ad3235e-99ce-487f-893a-8fb4ac5a588d", "2026-08-21T07:53:22Z", ~N[2026-08-21 07:53:22], ~N[2026-08-21 07:53:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:53:22.718] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77135, oid: "6ad3235e-99ce-487f-893a-8fb4ac5a588d", upload_time: "2026-08-21T07:53:22Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:22], updated_at: ~N[2026-08-21 07:53:22]} [2026-08-21 07:53:22.718] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:53:22Z", "value" => "morefun"} [2026-08-21 07:53:22.801] [DEBUG] QUERY OK db=41.5ms queue=41.7ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "morefun", "vendor", 77135, ~N[2026-08-21 07:53:22], ~N[2026-08-21 07:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:22.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783111, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:22], updated_at: ~N[2026-08-21 07:53:22]}} [2026-08-21 07:53:22.802] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:53:22Z", "value" => "kiosk_launcher"} [2026-08-21 07:53:22.863] [DEBUG] QUERY OK db=60.9ms queue=0.1ms idle=84.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "kiosk_launcher", "model", 77135, ~N[2026-08-21 07:53:22], ~N[2026-08-21 07:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:22.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783112, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:22], updated_at: ~N[2026-08-21 07:53:22]}} [2026-08-21 07:53:22.863] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:53:22Z", "value" => "1.0"} [2026-08-21 07:53:22.888] [DEBUG] QUERY OK db=23.9ms idle=62.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "1.0", "app_version", 77135, ~N[2026-08-21 07:53:22], ~N[2026-08-21 07:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:22.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783113, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:22], updated_at: ~N[2026-08-21 07:53:22]}} [2026-08-21 07:53:22.888] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:53:22Z", "value" => "13"} [2026-08-21 07:53:22.942] [DEBUG] QUERY OK db=53.7ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "13", "android_version", 77135, ~N[2026-08-21 07:53:22], ~N[2026-08-21 07:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:22.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783114, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:22], updated_at: ~N[2026-08-21 07:53:22]}} [2026-08-21 07:53:22.943] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:53:22Z", "value" => "871"} [2026-08-21 07:53:22.983] [DEBUG] QUERY OK db=39.3ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "871", "ram_free_mb", 77135, ~N[2026-08-21 07:53:22], ~N[2026-08-21 07:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:22.983] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783115, itemkey: "ram_free_mb", value: "871", timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:22], updated_at: ~N[2026-08-21 07:53:22]}} [2026-08-21 07:53:22.983] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:53:22Z", "value" => "WIFI"} [2026-08-21 07:53:23.017] [DEBUG] QUERY OK db=33.6ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "WIFI", "network_type", 77135, ~N[2026-08-21 07:53:22], ~N[2026-08-21 07:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:23.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783116, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:22], updated_at: ~N[2026-08-21 07:53:22]}} [2026-08-21 07:53:23.018] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:53:22Z", "value" => "true"} [2026-08-21 07:53:23.062] [DEBUG] QUERY OK db=42.3ms queue=1.2ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "true", "kiosk_active", 77135, ~N[2026-08-21 07:53:23], ~N[2026-08-21 07:53:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:23.062] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783117, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:23], updated_at: ~N[2026-08-21 07:53:23]}} [2026-08-21 07:53:23.063] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:53:22Z", "value" => ""} [2026-08-21 07:53:23.098] [DEBUG] QUERY OK db=34.9ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:53:22Z", "sim_operator", 77135, ~N[2026-08-21 07:53:23], ~N[2026-08-21 07:53:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:23.098] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783118, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:23], updated_at: ~N[2026-08-21 07:53:23]}} [2026-08-21 07:53:23.098] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:53:22Z", "value" => "UNKNOWN"} [2026-08-21 07:53:23.141] [DEBUG] QUERY OK db=42.2ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "UNKNOWN", "sim_number", 77135, ~N[2026-08-21 07:53:23], ~N[2026-08-21 07:53:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:23.141] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783119, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:23], updated_at: ~N[2026-08-21 07:53:23]}} [2026-08-21 07:53:23.142] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:53:22Z", "value" => "UNKNOWN"} [2026-08-21 07:53:23.180] [DEBUG] QUERY OK db=37.6ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "UNKNOWN", "sim_iccid", 77135, ~N[2026-08-21 07:53:23], ~N[2026-08-21 07:53:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:23.181] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783120, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:23], updated_at: ~N[2026-08-21 07:53:23]}} [2026-08-21 07:53:23.181] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:53:22Z", "value" => "UNKNOWN"} [2026-08-21 07:53:23.225] [DEBUG] QUERY OK db=43.7ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "UNKNOWN", "sim_imsi", 77135, ~N[2026-08-21 07:53:23], ~N[2026-08-21 07:53:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:23.225] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783121, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:23], updated_at: ~N[2026-08-21 07:53:23]}} [2026-08-21 07:53:23.225] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:53:22Z", "value" => "UNKNOWN"} [2026-08-21 07:53:23.267] [DEBUG] QUERY OK db=41.1ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "UNKNOWN", "sim_iccid2", 77135, ~N[2026-08-21 07:53:23], ~N[2026-08-21 07:53:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:23.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783122, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:23], updated_at: ~N[2026-08-21 07:53:23]}} [2026-08-21 07:53:23.268] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:53:22Z", "value" => "UNKNOWN"} [2026-08-21 07:53:23.303] [DEBUG] QUERY OK db=33.8ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "UNKNOWN", "sim_imsi2", 77135, ~N[2026-08-21 07:53:23], ~N[2026-08-21 07:53:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:23.303] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783123, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:23], updated_at: ~N[2026-08-21 07:53:23]}} [2026-08-21 07:53:23.303] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:53:22Z", "value" => "27"} [2026-08-21 07:53:23.327] [DEBUG] QUERY OK db=21.4ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "27", "data_usage_mb", 77135, ~N[2026-08-21 07:53:23], ~N[2026-08-21 07:53:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:23.332] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783124, itemkey: "data_usage_mb", value: "27", timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:23], updated_at: ~N[2026-08-21 07:53:23]}} [2026-08-21 07:53:23.334] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:53:22Z", "value" => "0"} [2026-08-21 07:53:23.400] [DEBUG] QUERY OK db=61.8ms queue=4.4ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "0", "mobile_data_mb", 77135, ~N[2026-08-21 07:53:23], ~N[2026-08-21 07:53:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:23.400] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783125, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:23], updated_at: ~N[2026-08-21 07:53:23]}} [2026-08-21 07:53:23.402] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:53:22Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:53:23.463] [DEBUG] QUERY OK db=56.8ms idle=75.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:53:22Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77135, ~N[2026-08-21 07:53:23], ~N[2026-08-21 07:53:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:53:23.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783126, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:53:22Z", message: nil, status_log_id: 77135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:53:23], updated_at: ~N[2026-08-21 07:53:23]}} [2026-08-21 07:53:33.325] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 6m, MIS in 0h 6m [2026-08-21 07:53:33.382] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 07:53:33.417] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 07:53:35.093] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T07:53:14Z"} [2026-08-21 07:53:35.094] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:53:14Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 42, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:53:35.476] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 07:53:35.477] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 07:53:35.479] [INFO ] Building initial filter cache... [2026-08-21 07:53:35.505] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=1.0ms idle=800.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-08-21 07:53:35.520] [DEBUG] QUERY OK source="filter_usage" db=0.5ms queue=4.6ms idle=583.6ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 07:53:35.520] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 07:53:35.581] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:53:35.649] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:53:35.651] [DEBUG] QUERY OK source="core_transactions" db=22.9ms queue=0.7ms idle=125.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21], "SALE", "REFUND", "REVERSAL"] ↳ :elixir_compiler_8.__FILE__/1, at: /tmp/claude-1019/-var-www-internaltesting-sunny-tmsapp-tmsuat-apps/0b057714-d918-43b8-ab72-71ab00b3d8de/scratchpad/debug_range.exs:6 [2026-08-21 07:53:35.670] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:53:35.671] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:53:35.691] [DEBUG] QUERY OK source="core_transactions" db=1.2ms queue=0.5ms idle=169.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21]] ↳ :elixir_compiler_8.__FILE__/1, at: /tmp/claude-1019/-var-www-internaltesting-sunny-tmsapp-tmsuat-apps/0b057714-d918-43b8-ab72-71ab00b3d8de/scratchpad/debug_range.exs:10 [2026-08-21 07:55:09.937] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 4m, MIS in 0h 4m [2026-08-21 07:55:10.057] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 07:55:10.129] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 07:55:13.132] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 07:55:13.133] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 07:55:13.138] [INFO ] Building initial filter cache... [2026-08-21 07:55:13.172] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=2.0ms idle=926.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-08-21 07:55:13.196] [DEBUG] QUERY OK source="filter_usage" db=0.4ms queue=1.0ms idle=451.7ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 07:55:13.197] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 07:55:13.365] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:13.375] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:13.444] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:13.459] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:13.459] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:18.481] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in DaProductApp.MQTT.Handler.connection/2 (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:13: DaProductApp.MQTT.Handler.connection(:terminated, %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => false}}) (tortoise 0.10.0) lib/tortoise/handler.ex:340: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:215: Tortoise.Connection.Controller.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {{Tortoise, "phoenix_client_tms_apps_1"}, :status, :terminated} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => false}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:18.482] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: :subscribe State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :up, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3292408276.3798204418.57571>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:18.538] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: {:EXIT, #PID<0.1439.0>, :subscription_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.1461.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1458.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1459.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460730], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:18.544] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:18.544] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:18.551] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:18.550] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:18.553] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Inflight, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:error, :closed} (tortoise 0.10.0) lib/tortoise/connection/inflight.ex:292: Tortoise.Connection.Inflight.handle_event/4 (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.22>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_1", pending: %{35576 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.1462.0>, #Reference<0.3292408276.3798728705.81636>}, identifier: 35576, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 35576, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 35576, acks: []}], [{:respond, {#PID<0.1462.0>, #Reference<0.3292408276.3798728705.81636>}}, :cleanup]]}}, order: [35576]}} Callback mode: :handle_event_function Postponed events: [] Last event: {:internal, {:execute, %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.1462.0>, #Reference<0.3292408276.3798728705.81636>}, identifier: 35576, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 35576, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 35576, acks: []}], [{:respond, {#PID<0.1462.0>, #Reference<0.3292408276.3798728705.81636>}}, :cleanup]]}}} Queued events: [] State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.22>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_1", pending: %{35576 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.1462.0>, #Reference<0.3292408276.3798728705.81636>}, identifier: 35576, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 35576, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 35576, acks: []}], [{:respond, {#PID<0.1462.0>, #Reference<0.3292408276.3798728705.81636>}}, :cleanup]]}}, order: [35576]}} [2026-08-21 07:55:23.548] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: :subscribe State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :up, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3292408276.3798728705.81635>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:23.561] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: {:EXIT, #PID<0.1462.0>, :subscription_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.1469.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1467.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1468.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460730], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:23.584] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.598] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.610] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.610] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.634] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.634] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.659] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.659] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.670] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.673] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.709] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.711] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.726] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.730] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.763] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.766] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.783] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.779] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.799] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.801] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.812] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.812] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.817] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.817] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.825] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.827] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.831] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.831] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.839] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.839] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.843] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.844] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.847] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.848] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.854] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.856] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.867] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.868] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.872] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.873] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.877] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.877] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.884] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.884] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.896] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.898] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.910] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.911] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.917] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.917] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.931] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.932] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.939] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.941] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.954] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.954] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.962] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.963] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.973] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.974] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.985] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:23.988] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.995] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:23.995] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.002] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.002] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.015] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.016] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.022] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.021] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.028] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.027] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.033] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.034] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.038] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.039] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.041] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.041] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.044] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.044] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.048] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.051] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.053] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.064] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.054] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.065] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.073] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.072] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.081] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.083] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.100] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.100] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.107] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.110] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.126] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.124] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.131] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.132] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.136] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.139] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.142] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.145] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.150] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.151] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.155] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.155] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.158] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.159] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.163] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.164] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.166] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.167] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.173] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.174] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.179] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.183] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.193] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.197] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.204] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.207] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.211] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.212] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.215] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.217] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.220] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.220] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.222] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.224] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.227] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.227] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.233] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.233] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.237] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.237] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.239] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.239] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.241] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.242] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.246] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.246] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.250] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.251] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.254] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.255] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.257] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.258] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.260] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.261] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.265] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.266] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.268] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.269] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.272] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.275] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.280] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.282] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.284] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.286] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.291] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.293] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.299] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.299] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.304] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.305] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.309] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.311] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.316] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.317] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.326] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.329] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.331] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.330] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.337] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.339] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.342] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.343] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.347] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.354] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.354] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:24.354] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.354] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.361] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.361] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1470.0>, #Reference<0.3292408276.3798204418.59028>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.68>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.67>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.67>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.1470.0>, #Reference<0.3292408276.3798204418.59028>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.68>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.67>, buffer: ""}} [2026-08-21 07:55:24.378] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.366] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.68>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1470.0>, #Reference<0.3292408276.3798204418.59028>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.68>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.67>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3292408276.3798204418.58993>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:24.382] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.68>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1470.0>, #Reference<0.3292408276.3798204418.59028>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.68>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.67>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.1470.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.1470.0>, #Reference<0.3292408276.3798204418.59028>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.68>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.67>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.68>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.1476.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1472.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1475.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460724], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:24.391] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.393] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.409] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.411] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.422] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.432] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.448] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.451] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.486] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.484] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.498] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.498] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.524] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.526] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.539] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.545] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.553] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.553] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.563] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.563] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.572] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.581] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.620] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.627] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.645] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.652] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.655] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.657] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.666] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.671] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.679] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.686] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.694] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.704] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.712] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.712] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.727] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.727] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.747] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.749] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.766] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.771] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.773] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.773] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.785] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.786] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.796] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.797] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.807] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.808] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.817] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.819] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.832] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.832] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.841] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.843] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.853] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.856] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.862] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.860] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.875] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.875] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.884] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.884] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.899] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.908] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.919] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.926] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.941] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.940] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.947] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.947] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.950] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.952] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.957] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.959] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.961] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.961] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.968] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.970] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.974] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.975] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.986] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.986] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.992] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:24.991] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.997] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:24.996] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.003] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.003] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.014] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.013] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.023] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.024] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.030] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.029] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.046] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.043] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.051] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.054] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.056] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.057] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.064] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.065] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.069] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.070] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.074] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.075] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.081] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.082] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.090] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.089] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.103] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.104] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.111] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.113] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.120] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.120] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.134] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.134] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.137] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.137] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.146] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.146] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.152] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.151] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.158] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.159] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.163] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.165] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.168] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.169] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.172] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.174] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.178] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.179] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.188] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.188] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.205] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.205] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.213] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.216] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.222] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.223] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.230] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.230] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.236] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.237] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.245] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.245] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.250] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.253] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.259] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.263] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.265] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.266] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.275] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.275] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.282] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.283] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.289] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.291] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.295] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.295] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.302] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.302] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.312] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.313] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.316] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.317] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.327] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.330] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.340] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.342] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.357] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.360] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.372] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.375] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.381] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.381] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.391] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.393] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.397] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.398] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.402] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.403] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.408] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.411] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.414] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.418] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:25.418] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.419] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.423] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.419] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.424] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1477.0>, #Reference<0.3292408276.3798728705.82917>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.117>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.116>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.116>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.1477.0>, #Reference<0.3292408276.3798728705.82917>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.117>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.116>, buffer: ""}} [2026-08-21 07:55:25.427] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.117>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1477.0>, #Reference<0.3292408276.3798728705.82917>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.117>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.116>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3292408276.3798728705.82891>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:25.431] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.433] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.117>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1477.0>, #Reference<0.3292408276.3798728705.82917>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.117>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.116>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.1477.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.1477.0>, #Reference<0.3292408276.3798728705.82917>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.117>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.116>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.117>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.1483.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1479.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1482.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460723], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:25.440] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:25.446] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.446] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:25.446] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:25.447] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:30.449] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: :subscribe State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :up, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3292408276.3798728705.82957>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:30.449] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in DaProductApp.MQTT.Handler.connection/2 (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:13: DaProductApp.MQTT.Handler.connection(:terminated, %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => false}}) (tortoise 0.10.0) lib/tortoise/handler.ex:340: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:215: Tortoise.Connection.Controller.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {{Tortoise, "phoenix_client_tms_apps_1"}, :status, :terminated} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => false}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:30.453] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: {:EXIT, #PID<0.1484.0>, :subscription_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.1488.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1486.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1487.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:30.462] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:30.481] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:30.481] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:30.482] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:30.481] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Inflight, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:error, :closed} (tortoise 0.10.0) lib/tortoise/connection/inflight.ex:292: Tortoise.Connection.Inflight.handle_event/4 (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.119>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_1", pending: %{48503 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.1489.0>, #Reference<0.3292408276.3798728705.83062>}, identifier: 48503, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 48503, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 48503, acks: []}], [{:respond, {#PID<0.1489.0>, #Reference<0.3292408276.3798728705.83062>}}, :cleanup]]}}, order: [48503]}} Callback mode: :handle_event_function Postponed events: [] Last event: {:internal, {:execute, %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.1489.0>, #Reference<0.3292408276.3798728705.83062>}, identifier: 48503, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 48503, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 48503, acks: []}], [{:respond, {#PID<0.1489.0>, #Reference<0.3292408276.3798728705.83062>}}, :cleanup]]}}} Queued events: [] State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.119>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_1", pending: %{48503 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.1489.0>, #Reference<0.3292408276.3798728705.83062>}, identifier: 48503, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 48503, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 48503, acks: []}], [{:respond, {#PID<0.1489.0>, #Reference<0.3292408276.3798728705.83062>}}, :cleanup]]}}, order: [48503]}} [2026-08-21 07:55:30.482] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.483] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: :subscribe State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :up, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3292408276.3798728705.83061>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:35.484] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: {:EXIT, #PID<0.1489.0>, :subscription_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.1496.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1494.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1495.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460718], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:35.487] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.489] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.494] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.494] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.501] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.499] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.504] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.506] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.510] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.508] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.514] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.513] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.518] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.519] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.523] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.522] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.526] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.527] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.530] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.532] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.535] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.537] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.547] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.548] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.553] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.554] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.563] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.565] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.569] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.569] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.575] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.576] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.581] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.581] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.584] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.585] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.589] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.589] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.592] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.594] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.599] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.600] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.605] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.606] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.609] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.610] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.617] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.620] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.619] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.620] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.631] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.635] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.634] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.640] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.649] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.649] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.654] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.654] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.662] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.664] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.666] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.666] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.673] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.673] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.679] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.679] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.686] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.686] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.693] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.693] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.702] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.703] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.710] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.710] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.723] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.723] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.734] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.734] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.741] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.743] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.751] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.757] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.761] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.763] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.767] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.767] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.772] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.773] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.783] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.784] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.792] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.795] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.803] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.808] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.817] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.816] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.823] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.824] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.827] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.829] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.839] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.840] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.847] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.849] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.857] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.859] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.872] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.873] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.881] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.882] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.889] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.892] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.893] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.894] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.899] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.900] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.903] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.905] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.910] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.910] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.914] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.914] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.920] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.919] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.924] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.924] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.929] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.929] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.933] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.934] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.943] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.942] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.948] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.948] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.954] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.954] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.964] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.965] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.973] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.977] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.973] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.983] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.978] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.984] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:35.995] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:35.995] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.000] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.002] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.006] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.008] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.013] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.014] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.018] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.017] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.027] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.029] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.032] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.032] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.035] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.035] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.040] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.041] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.044] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.045] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.049] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.049] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.052] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.053] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.057] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.058] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.065] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.065] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.073] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.079] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.082] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.081] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.089] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.089] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.098] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.098] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.109] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.111] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.115] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.115] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.121] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.125] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.136] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.132] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.143] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.145] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.148] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.149] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.151] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.152] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.156] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.157] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.167] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.165] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.172] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.174] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.177] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.178] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.183] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.185] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.190] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.191] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.194] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.195] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.200] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.200] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.206] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.205] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.211] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.210] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.213] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.214] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.217] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.219] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.235] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.236] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.248] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.250] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.257] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.257] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.261] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.262] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.266] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.267] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.275] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.276] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.283] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.285] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.291] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.295] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.297] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.298] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.304] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.301] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.308] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.308] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.314] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.315] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.321] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.323] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.328] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.332] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.336] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.337] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.346] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.347] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.353] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.354] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.363] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.365] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.369] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.369] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.375] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.375] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.383] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.384] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.390] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.391] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.397] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.398] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.406] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.407] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.418] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.420] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.422] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.423] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.427] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.430] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.433] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.433] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.439] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.439] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.443] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.445] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.447] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.450] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.454] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.455] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.472] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.474] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.478] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.478] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.482] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.484] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.488] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.488] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.495] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.496] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.505] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.505] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.515] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.516] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.521] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.521] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.524] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.527] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.531] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.531] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.536] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.535] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.545] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.545] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.555] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.556] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.563] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.561] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.572] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.575] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.580] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.580] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.583] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.585] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.591] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.593] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.596] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.600] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.604] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.605] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.623] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.623] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.627] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.630] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.632] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.632] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.638] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.639] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.645] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.645] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.649] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.650] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.654] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.654] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.660] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.661] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.667] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.671] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.677] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.677] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.688] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.689] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.691] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.693] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.697] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.697] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.702] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.704] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.709] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.708] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.715] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.725] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:36.726] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.725] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.725] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.735] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.736] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1497.0>, #Reference<0.3292408276.3798204418.61207>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.209>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.208>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.208>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.1497.0>, #Reference<0.3292408276.3798204418.61207>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.209>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.208>, buffer: ""}} [2026-08-21 07:55:36.742] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.739] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.209>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1497.0>, #Reference<0.3292408276.3798204418.61207>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.209>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.208>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3292408276.3798204418.61175>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:36.752] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.209>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1497.0>, #Reference<0.3292408276.3798204418.61207>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.209>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.208>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.1497.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.1497.0>, #Reference<0.3292408276.3798204418.61207>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.209>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.208>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.209>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.1503.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1499.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1502.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460712], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:36.761] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.766] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.771] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.775] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.780] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.782] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.784] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:36.784] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.785] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.790] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.790] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1504.0>, #Reference<0.3292408276.3798204418.61336>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.212>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.211>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.211>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.1504.0>, #Reference<0.3292408276.3798204418.61336>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.212>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.211>, buffer: ""}} [2026-08-21 07:55:36.791] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.212>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1504.0>, #Reference<0.3292408276.3798204418.61336>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.212>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.211>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3292408276.3798204418.61304>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:36.797] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.796] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.212>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1504.0>, #Reference<0.3292408276.3798204418.61336>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.212>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.211>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.1504.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.1504.0>, #Reference<0.3292408276.3798204418.61336>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.212>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.211>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.212>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.1510.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1506.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1509.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460712], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:36.799] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.802] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.805] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.807] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.810] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.805] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.815] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.807] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.817] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.810] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.815] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.818] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.825] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.828] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.832] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.825] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.829] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.832] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.835] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.836] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.837] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.838] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.839] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.839] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.841] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.841] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.843] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.843] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.845] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.846] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.848] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.849] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.860] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.859] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.872] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.871] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.885] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.886] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.890] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.890] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.895] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.899] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.903] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.904] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.911] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.912] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.917] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.918] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.924] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.924] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.930] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.930] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.935] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.936] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.944] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.949] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.954] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.955] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.961] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.962] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.967] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.967] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.971] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.972] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.977] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.977] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.980] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.980] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.985] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.985] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.989] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:36.990] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.997] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:36.996] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.005] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.005] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.012] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.011] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.015] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.020] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.026] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.026] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.030] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.031] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.033] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.034] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.039] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.041] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.043] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.044] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.048] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.051] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.058] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.058] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.068] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.070] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.072] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.072] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.076] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.077] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.083] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.083] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.089] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.089] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.100] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.100] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.110] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.111] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.116] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.116] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.120] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.121] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.124] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.123] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.131] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.132] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.134] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.134] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.141] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.142] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.146] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.147] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.147] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.148] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.149] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.149] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.152] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.152] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.155] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.156] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.159] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.159] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.164] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.163] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.168] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.168] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.172] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.171] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.175] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.175] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.183] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.183] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.188] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.189] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.193] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.193] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.196] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.198] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.199] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.200] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.205] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.205] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.208] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.208] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.211] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.212] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.214] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.215] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.217] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.218] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.221] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.222] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.224] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.224] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.231] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.234] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.238] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.240] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.244] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.245] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.251] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.254] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.255] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.260] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.262] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.266] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.255] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.257] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.262] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.266] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.272] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.272] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.275] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.276] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.278] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.279] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.280] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.281] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.283] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.285] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.288] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.291] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.299] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.301] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.303] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.303] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.309] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.311] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.314] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.315] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.319] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.319] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.324] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.325] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.328] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.328] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.334] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.333] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.336] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.337] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.339] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.339] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.341] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.341] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.346] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.345] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.350] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.350] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.352] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.352] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.354] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.354] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.356] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.356] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.358] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.358] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.361] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.362] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.367] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.367] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.371] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.372] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.374] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.375] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.376] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.377] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.378] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.379] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.380] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.381] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.382] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.383] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.384] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.384] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.387] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.388] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.391] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.392] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.395] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.394] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.397] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.397] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.400] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.400] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.403] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.403] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.406] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.406] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.409] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.409] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.412] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.413] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.415] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.416] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.419] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.419] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.421] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.421] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.424] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.424] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.427] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.427] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.429] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.429] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.432] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.432] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.440] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.440] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.444] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.444] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.449] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.449] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.452] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.452] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.454] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.456] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.458] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.458] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.463] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.462] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.467] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.468] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.472] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.471] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.474] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.475] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.479] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.479] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.482] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.482] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.484] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.485] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.488] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.488] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.494] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.494] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.498] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.498] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.503] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.504] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.506] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.507] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.510] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.511] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.514] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.515] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.522] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.523] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.526] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.526] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.530] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.530] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.531] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.532] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.535] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.535] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.539] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.539] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.543] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.545] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.551] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.551] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.554] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.553] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.555] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.556] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.558] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.560] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.562] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.562] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.565] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.567] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.568] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.567] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.571] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.572] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.575] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.575] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.577] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.578] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.583] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.582] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.587] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.589] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.590] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.591] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.592] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.593] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.595] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.596] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.597] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.598] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.600] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.600] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.602] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.603] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.605] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.605] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.607] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.607] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.608] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.608] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.610] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.611] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.612] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.612] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.616] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.616] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.618] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.618] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.622] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.625] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.631] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.633] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.638] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.639] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.643] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.644] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.650] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.652] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.655] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.655] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.660] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.660] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.663] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.665] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.669] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.671] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.674] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.674] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.685] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.686] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.689] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.689] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.694] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.694] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.697] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.697] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.700] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.700] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.703] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.703] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.706] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.706] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.716] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.716] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.719] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.720] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.728] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.731] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.735] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.735] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.740] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.742] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.747] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.746] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.749] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.749] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.754] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.755] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.758] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.757] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.762] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.762] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.768] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.768] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.772] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.772] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.777] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.777] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.784] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.784] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.788] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.788] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.794] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.795] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.801] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.801] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.804] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.805] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.807] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.808] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.812] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.812] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.814] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.815] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.821] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.823] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.826] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.827] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.829] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.830] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.833] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.833] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.836] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.837] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.840] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.842] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.844] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.844] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.846] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.846] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.851] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.851] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.855] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.855] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.858] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.858] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.861] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.861] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.863] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.864] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.866] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.866] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.874] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.875] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.877] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.881] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.884] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.887] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.877] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.890] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.880] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.884] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.887] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.892] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.896] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.899] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.902] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.889] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.905] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.893] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.907] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.909] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.912] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.895] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.900] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.902] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.905] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.907] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.909] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.916] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.912] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.918] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.921] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.921] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.924] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.924] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.928] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.928] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.933] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.933] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.935] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.937] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.940] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.940] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.943] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.943] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.945] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.945] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.948] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.948] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.952] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.952] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.955] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.955] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.960] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.960] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.963] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.963] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.966] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.967] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.972] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.972] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.978] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.979] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.982] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.983] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.986] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.986] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.988] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.988] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.991] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.991] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.993] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.994] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.995] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.995] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.997] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:37.998] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.999] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:37.999] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.001] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.001] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.004] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.004] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.007] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.008] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.011] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.012] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.015] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.017] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.017] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.017] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:38.018] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.021] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.024] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.021] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1411.0>, #Reference<0.3997578517.3797942273.167456>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.374>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.373>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.373>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.1411.0>, #Reference<0.3997578517.3797942273.167456>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.374>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.373>, buffer: ""}} [2026-08-21 07:55:38.040] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.374>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1411.0>, #Reference<0.3997578517.3797942273.167456>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.374>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.373>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797942273.167425>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:38.052] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.374>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1411.0>, #Reference<0.3997578517.3797942273.167456>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.374>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.373>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.1411.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.1411.0>, #Reference<0.3997578517.3797942273.167456>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.374>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.373>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.374>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2009.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1427.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2008.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460151], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:38.056] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.059] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.064] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.064] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.068] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.068] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.073] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.074] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.077] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.078] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.081] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.081] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.084] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.084] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.087] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.088] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.089] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.090] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.091] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.091] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.093] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.095] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.098] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.098] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.100] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.101] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.103] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.104] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.107] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.108] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.112] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.114] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.114] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.115] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.118] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.118] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.121] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.121] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.124] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.125] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.126] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.127] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.129] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.130] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.134] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.134] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.137] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.137] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.139] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.139] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.144] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.144] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.154] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.155] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.161] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.160] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.166] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.167] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.169] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.169] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.172] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.173] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.177] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.177] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.181] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.182] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.184] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.184] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.190] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.190] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.195] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.194] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.197] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.197] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.201] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.200] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.204] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.206] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.208] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.209] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.214] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.214] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.217] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.217] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.219] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.220] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.222] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.222] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.224] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.224] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.227] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.228] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.235] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.235] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.239] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.239] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.243] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.244] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.246] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.247] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.248] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.248] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.251] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.251] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.255] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.255] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.258] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.258] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.261] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.261] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.264] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.265] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.268] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.267] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.270] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.271] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.273] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.273] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.275] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.276] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.279] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.281] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.284] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.284] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.287] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.288] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.292] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.291] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.296] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.296] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.301] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.301] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.304] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.305] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.307] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.307] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.310] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.311] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.313] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.313] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.316] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.316] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.320] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.319] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.323] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.323] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.326] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.327] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.331] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.333] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.336] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.336] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.340] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.345] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.344] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:38.344] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.345] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.352] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.349] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2010.0>, #Reference<0.3997578517.3797417986.113778>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.414>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.413>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.413>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.2010.0>, #Reference<0.3997578517.3797417986.113778>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.414>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.413>, buffer: ""}} [2026-08-21 07:55:38.350] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.414>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2010.0>, #Reference<0.3997578517.3797417986.113778>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.414>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.413>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797417986.113745>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:38.356] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.354] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.414>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2010.0>, #Reference<0.3997578517.3797417986.113778>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.414>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.413>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.2010.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.2010.0>, #Reference<0.3997578517.3797417986.113778>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.414>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.413>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.414>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2018.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2012.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2017.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460151], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:38.359] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.361] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.365] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.366] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.371] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.374] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.375] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.377] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.376] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.377] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.379] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.380] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.382] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.383] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.386] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.387] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.389] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.391] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.393] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.394] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.396] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.400] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.398] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.399] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.404] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.407] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.409] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.409] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.413] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.413] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.416] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.416] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.419] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.420] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.423] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.423] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.428] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.429] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.431] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.431] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.433] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.434] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.438] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.437] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.441] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.442] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.444] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.447] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.450] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.449] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.456] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.457] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.459] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.461] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.463] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.465] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.471] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.470] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.476] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.476] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.481] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.482] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.483] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.486] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.492] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.492] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.497] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.499] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.502] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.502] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.510] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.510] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.517] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.517] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.525] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.528] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.534] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.534] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.543] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.543] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.550] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.550] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.557] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.560] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.562] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.562] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.572] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.573] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.581] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.581] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.588] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.591] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.593] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.596] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.604] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.607] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.608] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.608] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.621] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.621] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.630] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.635] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.645] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.643] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.652] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.658] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.662] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.665] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.675] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.676] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.694] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.695] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.735] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.742] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.769] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.769] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.800] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.805] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.820] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.820] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.835] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.835] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.847] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.851] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.858] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.859] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.870] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.874] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.888] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.890] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.898] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.898] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.909] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.909] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.925] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.926] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.935] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.937] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.946] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.957] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.945] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.958] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.966] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.965] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.980] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.981] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:38.994] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:39.007] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:38.994] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:39.018] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:39.007] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:39.033] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:39.015] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:39.031] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:39.053] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:39.055] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:39.069] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:39.066] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:39.078] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:39.078] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:39.089] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:39.092] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:39.092] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:39.092] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:39.092] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:39.098] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:39.097] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2016.0>, #Reference<0.3997578517.3797417986.114329>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.456>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.455>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.455>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.2016.0>, #Reference<0.3997578517.3797417986.114329>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.456>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.455>, buffer: ""}} [2026-08-21 07:55:39.100] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.456>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2016.0>, #Reference<0.3997578517.3797417986.114329>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.456>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.455>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797417986.114294>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:39.107] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:39.115] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:39.114] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.456>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2016.0>, #Reference<0.3997578517.3797417986.114329>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.456>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.455>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.2016.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.2016.0>, #Reference<0.3997578517.3797417986.114329>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.456>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.455>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.456>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2024.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2020.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2023.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460150], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:39.120] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:39.127] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:39.127] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:39.128] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:39.128] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Inflight, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:error, :closed} (tortoise 0.10.0) lib/tortoise/connection/inflight.ex:292: Tortoise.Connection.Inflight.handle_event/4 (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.457>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_1", pending: %{31782 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2025.0>, #Reference<0.3997578517.3797417987.98917>}, identifier: 31782, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 31782, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 31782, acks: []}], [{:respond, {#PID<0.2025.0>, #Reference<0.3997578517.3797417987.98917>}}, :cleanup]]}}, order: [31782]}} Callback mode: :handle_event_function Postponed events: [] Last event: {:internal, {:execute, %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2025.0>, #Reference<0.3997578517.3797417987.98917>}, identifier: 31782, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 31782, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 31782, acks: []}], [{:respond, {#PID<0.2025.0>, #Reference<0.3997578517.3797417987.98917>}}, :cleanup]]}}} Queued events: [] State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.457>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_1", pending: %{31782 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2025.0>, #Reference<0.3997578517.3797417987.98917>}, identifier: 31782, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 31782, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 31782, acks: []}], [{:respond, {#PID<0.2025.0>, #Reference<0.3997578517.3797417987.98917>}}, :cleanup]]}}, order: [31782]}} [2026-08-21 07:55:44.128] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: :subscribe State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :up, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797417987.98916>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:44.133] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: {:EXIT, #PID<0.2025.0>, :subscription_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2032.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2030.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2031.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460150], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:44.141] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.150] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.160] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.163] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.171] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.178] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.180] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.180] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.185] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.187] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.200] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.200] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.210] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.209] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.215] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.216] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.227] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.230] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.236] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.238] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.248] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.248] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.251] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.251] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.264] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.270] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.274] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.275] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.281] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.281] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.286] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.287] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.303] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.306] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.313] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.318] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.320] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.321] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.327] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.326] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.336] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.334] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.349] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.360] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.362] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.366] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.377] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.376] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.385] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.385] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.396] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.400] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.404] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.404] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.421] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.419] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.430] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.430] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.438] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.438] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.450] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.461] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.454] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.465] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.477] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.479] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.487] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.488] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.507] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.506] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.518] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.523] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.553] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.555] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.580] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.582] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.607] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.631] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.647] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.647] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.693] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.694] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.709] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.715] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.750] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.761] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.805] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.809] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.838] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.842] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.859] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.864] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.886] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.886] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.905] [INFO ] Running offline device check... [2026-08-21 07:55:44.904] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.905] [INFO ] Starting offline device check... [2026-08-21 07:55:44.905] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.929] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.935] [DEBUG] QUERY OK source="tms_terminals" db=20.2ms queue=3.1ms idle=111.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-08-21 07:55:44.949] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.943] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:44.951] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.951] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.967] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.9ms queue=0.1ms idle=147.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:55:44.980] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:44.987] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.5ms idle=32.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:44.976] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2033.0>, #Reference<0.3997578517.3797417988.93603>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.483>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.482>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.482>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.2033.0>, #Reference<0.3997578517.3797417988.93603>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.483>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.482>, buffer: ""}} [2026-08-21 07:55:44.997] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:44.989] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.483>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2033.0>, #Reference<0.3997578517.3797417988.93603>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.483>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.482>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797417988.93569>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:44.994] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms queue=0.1ms idle=20.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.000] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms queue=0.1ms idle=10.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.002] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=7.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.010] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms 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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:44.990] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.483>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2033.0>, #Reference<0.3997578517.3797417988.93603>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.483>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.482>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.2033.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.2033.0>, #Reference<0.3997578517.3797417988.93603>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.483>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.482>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.483>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2040.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2035.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2039.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460144], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:45.038] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.020] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.6ms 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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.028] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.6ms idle=10.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.034] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=8.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.044] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms queue=7.6ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.065] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.051] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.053] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.3ms idle=11.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.090] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.058] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.060] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.0ms idle=6.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.088] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.097] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.0ms queue=0.1ms idle=26.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.104] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.105] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.122] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.106] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms queue=0.1ms idle=16.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:55:45.111] [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 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.113] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms 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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.160] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.118] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.145] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=29.1ms queue=2.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.148] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=32.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:55:45.157] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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-08-21 07:55:45.188] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.200] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.157] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.176] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.3ms idle=9.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.192] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.192] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.3ms queue=2.0ms 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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.197] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms queue=0.1ms 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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.200] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.223] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.218] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.243] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=43.8ms queue=2.1ms idle=9.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.245] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.8ms idle=47.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.248] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.258] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.262] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.261] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.271] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.284] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.4ms queue=0.4ms idle=15.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:55:45.289] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms queue=1.2ms idle=14.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.301] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.297] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=5.7ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.309] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.8ms queue=0.1ms 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 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.317] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.333] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.332] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms queue=2.0ms idle=30.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:55:45.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.7ms queue=0.1ms idle=22.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 07:55:45.339] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.341] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms queue=0.1ms idle=7.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.349] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms 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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.355] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms queue=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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.359] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms queue=0.1ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.363] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.370] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=8.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.375] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms queue=1.9ms idle=7.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.384] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.1ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.387] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.6ms 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 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.388] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.5ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.401] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.403] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.7ms 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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.409] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.409] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.415] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.419] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms queue=0.1ms 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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.427] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.427] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.431] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.441] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.8ms idle=9.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.442] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=14.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.448] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.442] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 07:55:45.444] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.443] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 07:55:45.459] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.447] [INFO ] Offline device check completed successfully [2026-08-21 07:55:45.463] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.471] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.475] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.479] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.488] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.502] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.503] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.512] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.518] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.535] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.536] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.540] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.541] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.552] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.553] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.567] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.567] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.583] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.583] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.590] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.589] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.602] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.602] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.610] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.611] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.622] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.622] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.638] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.645] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.636] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.647] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.660] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.663] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.671] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.673] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.682] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.682] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.690] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.690] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.707] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.707] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.711] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.713] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.721] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.722] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.731] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.731] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.748] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.750] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.762] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.767] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.778] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.777] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.822] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.830] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.848] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.848] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.856] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.856] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.869] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.869] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.883] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.886] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.899] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.901] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.915] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.915] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.929] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.929] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.945] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.947] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.964] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.968] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.986] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.986] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:45.994] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:45.992] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.006] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.009] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.026] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.025] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.036] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.042] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.057] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.059] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.067] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.071] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.074] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.077] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.085] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.089] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.090] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.090] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:46.090] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.103] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.102] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2038.0>, #Reference<0.3997578517.3797942273.170069>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.515>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.514>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.514>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.2038.0>, #Reference<0.3997578517.3797942273.170069>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.515>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.514>, buffer: ""}} [2026-08-21 07:55:46.107] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.515>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2038.0>, #Reference<0.3997578517.3797942273.170069>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.515>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.514>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797417987.99496>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:46.112] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.515>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2038.0>, #Reference<0.3997578517.3797942273.170069>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.515>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.514>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.2038.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.2038.0>, #Reference<0.3997578517.3797942273.170069>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.515>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.514>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.515>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2046.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2042.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2045.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460143], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:46.139] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.148] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.148] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.162] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.162] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.171] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.171] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.184] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.184] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.199] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.199] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.219] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.217] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.238] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.237] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.261] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.266] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.281] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.283] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.307] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.306] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.314] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.318] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.329] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.332] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.337] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.340] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.346] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.352] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.356] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.356] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.377] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.376] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.388] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.389] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.399] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.400] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.423] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.421] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.438] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.439] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.450] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.450] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.466] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.463] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.488] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.489] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.512] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.527] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.532] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.535] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.546] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.546] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.570] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.570] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.594] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.595] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.615] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.617] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.653] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.647] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.680] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.682] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.705] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.707] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.735] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.742] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.750] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.750] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.769] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.765] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.791] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.791] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.805] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.812] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.830] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.831] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.847] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.848] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.860] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.859] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.872] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.876] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.878] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.888] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.890] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.891] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.906] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.906] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.922] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.922] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.942] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.944] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.952] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.955] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:46.955] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.955] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.959] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.967] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:46.968] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1511.0>, #Reference<0.3292408276.3798728705.85417>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.522>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.521>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.521>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.1511.0>, #Reference<0.3292408276.3798728705.85417>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.522>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.521>, buffer: ""}} [2026-08-21 07:55:46.982] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:46.968] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.522>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1511.0>, #Reference<0.3292408276.3798728705.85417>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.522>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.521>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3292408276.3798728705.85400>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:46.990] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.522>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1511.0>, #Reference<0.3292408276.3798728705.85417>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.522>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.521>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.1511.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.1511.0>, #Reference<0.3292408276.3798728705.85417>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.522>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.521>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.522>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.1517.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1513.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1516.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460702], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:47.007] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.018] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.025] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.028] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.031] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.032] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.042] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.045] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.057] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.057] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.069] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.079] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.082] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.082] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.100] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.102] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.108] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.118] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.108] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.117] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.125] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.125] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.134] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.154] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.134] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.156] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.166] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.166] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.173] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.171] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.178] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.182] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.185] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.186] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.196] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.202] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.209] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.208] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.221] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.224] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.233] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.235] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.243] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.249] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.253] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.252] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.262] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.265] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.270] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.270] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.281] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.281] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.294] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.299] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.308] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.312] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.320] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.319] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.326] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.327] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.339] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.339] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.352] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.356] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.364] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.368] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.380] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.383] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.393] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.394] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.401] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.405] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.409] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.410] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.424] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.428] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.431] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.431] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.437] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.438] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.444] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.444] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.450] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.451] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.457] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.457] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.462] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.463] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.472] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.471] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.480] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.480] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.489] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.488] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.495] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.496] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.504] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.506] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.513] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.515] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.520] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.522] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.536] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.540] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.551] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.552] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.567] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.568] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.575] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.576] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.582] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.589] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.601] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.602] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.623] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.623] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.631] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.632] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.639] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.640] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.660] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.663] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.672] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.672] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.691] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.691] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.716] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.715] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.731] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.731] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.746] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.749] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.760] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.761] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.792] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.795] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.806] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.813] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.837] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.844] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.878] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.878] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.915] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.917] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:47.952] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:47.955] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.002] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.007] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.020] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.023] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.053] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.049] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.079] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.078] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.089] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.090] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.105] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.103] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.120] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.119] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.135] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.129] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.152] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.155] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.160] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.165] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.174] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.176] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.188] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.187] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.196] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.197] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.205] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.206] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.217] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.218] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.222] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.223] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.241] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.241] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.247] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.248] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.256] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.258] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.261] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.261] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.275] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.276] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.278] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.279] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.282] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.284] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.292] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.296] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.296] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:48.296] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.297] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.300] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.301] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1518.0>, #Reference<0.3292408276.3798204418.67160>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.572>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.571>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.571>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.1518.0>, #Reference<0.3292408276.3798204418.67160>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.572>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.571>, buffer: ""}} [2026-08-21 07:55:48.302] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.572>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1518.0>, #Reference<0.3292408276.3798204418.67160>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.572>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.571>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3292408276.3798728705.86409>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:48.307] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.306] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.572>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.1518.0>, #Reference<0.3292408276.3798204418.67160>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.572>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.571>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.1518.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.1518.0>, #Reference<0.3292408276.3798204418.67160>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.572>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.571>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.572>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.1524.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1520.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1523.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460700], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:48.311] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:48.314] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:48.314] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.314] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:48.314] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.314] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in DaProductApp.MQTT.Handler.connection/2 (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:13: DaProductApp.MQTT.Handler.connection(:terminated, %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => false}}) (tortoise 0.10.0) lib/tortoise/handler.ex:340: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:215: Tortoise.Connection.Controller.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {{Tortoise, "phoenix_client_tms_apps_1"}, :status, :terminated} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => false}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:53.314] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: :subscribe State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :up, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3292408276.3798728705.86485>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:53.316] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: {:EXIT, #PID<0.1525.0>, :subscription_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.1530.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1527.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1528.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460695], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:53.320] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.322] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.327] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.330] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.331] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.331] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.336] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.335] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.341] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.344] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.345] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.346] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.356] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.356] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.361] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.369] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.372] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.371] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.375] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.376] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.379] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.380] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.382] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.385] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.388] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.388] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.394] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.395] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.403] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.405] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.410] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.410] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.416] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.416] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.429] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.432] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.438] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.439] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.444] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.445] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.454] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.454] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.463] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.466] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.472] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.476] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.478] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.477] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.487] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.491] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.499] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.500] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.504] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.504] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.509] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.510] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.515] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.515] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.522] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.524] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.534] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.534] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.539] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.539] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.554] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.559] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.566] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.567] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.572] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.572] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.579] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.579] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.588] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.588] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.595] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.597] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.603] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.604] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.617] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.617] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.636] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.640] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.646] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.648] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.663] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.665] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.684] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.688] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.693] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.693] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.704] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.705] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.713] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.717] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.728] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.728] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.740] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.743] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.748] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.755] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.777] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.780] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.788] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.790] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.803] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.804] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.815] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.815] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.824] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.827] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.836] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.835] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.864] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.869] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.873] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.871] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.883] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.889] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.895] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.895] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.901] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.905] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.907] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.908] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.923] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.931] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.937] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.937] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.949] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.952] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.955] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.955] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.959] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.961] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.964] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.964] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.968] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.971] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.973] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.974] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.981] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.983] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.987] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:53.988] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.996] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:53.998] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.005] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.007] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.011] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.011] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.015] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.015] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.018] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.018] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.021] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.023] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.026] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.026] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.031] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.030] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.035] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.036] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.044] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.047] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.051] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.052] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.055] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.059] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.073] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.075] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.086] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.086] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.095] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.096] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.101] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.108] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:54.108] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.112] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.109] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.126] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.132] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2047.0>, #Reference<0.3997578517.3797417986.115463>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.637>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.636>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.636>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.2047.0>, #Reference<0.3997578517.3797417986.115463>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.637>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.636>, buffer: ""}} [2026-08-21 07:55:54.136] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.134] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.637>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2047.0>, #Reference<0.3997578517.3797417986.115463>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.637>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.636>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797417986.115437>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:54.139] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.637>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2047.0>, #Reference<0.3997578517.3797417986.115463>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.637>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.636>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.2047.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.2047.0>, #Reference<0.3997578517.3797417986.115463>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.637>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.636>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.637>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2053.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2049.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2052.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460135], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:54.152] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.163] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.164] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:54.166] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:54.166] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:54.164] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Inflight, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:error, :closed} (tortoise 0.10.0) lib/tortoise/connection/inflight.ex:292: Tortoise.Connection.Inflight.handle_event/4 (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.638>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_1", pending: %{63056 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2054.0>, #Reference<0.3997578517.3797417987.101183>}, identifier: 63056, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 63056, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 63056, acks: []}], [{:respond, {#PID<0.2054.0>, #Reference<0.3997578517.3797417987.101183>}}, :cleanup]]}}, order: [63056]}} Callback mode: :handle_event_function Postponed events: [] Last event: {:internal, {:execute, %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2054.0>, #Reference<0.3997578517.3797417987.101183>}, identifier: 63056, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 63056, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 63056, acks: []}], [{:respond, {#PID<0.2054.0>, #Reference<0.3997578517.3797417987.101183>}}, :cleanup]]}}} Queued events: [] State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.638>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_1", pending: %{63056 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2054.0>, #Reference<0.3997578517.3797417987.101183>}, identifier: 63056, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 63056, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 63056, acks: []}], [{:respond, {#PID<0.2054.0>, #Reference<0.3997578517.3797417987.101183>}}, :cleanup]]}}, order: [63056]}} [2026-08-21 07:55:59.165] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: :subscribe State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :up, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797417987.101182>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:55:59.165] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: {:EXIT, #PID<0.2054.0>, :subscription_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2061.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2059.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2060.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460135], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:55:59.169] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:59.176] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:59.175] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:55:59.177] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:55:59.177] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:55:59.176] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Inflight, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:error, :closed} (tortoise 0.10.0) lib/tortoise/connection/inflight.ex:292: Tortoise.Connection.Inflight.handle_event/4 (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.639>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_1", pending: %{34122 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2062.0>, #Reference<0.3997578517.3797942273.171834>}, identifier: 34122, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 34122, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 34122, acks: []}], [{:respond, {#PID<0.2062.0>, #Reference<0.3997578517.3797942273.171834>}}, :cleanup]]}}, order: [34122]}} Callback mode: :handle_event_function Postponed events: [] Last event: {:internal, {:execute, %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2062.0>, #Reference<0.3997578517.3797942273.171834>}, identifier: 34122, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 34122, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 34122, acks: []}], [{:respond, {#PID<0.2062.0>, #Reference<0.3997578517.3797942273.171834>}}, :cleanup]]}}} Queued events: [] State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.639>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_1", pending: %{34122 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2062.0>, #Reference<0.3997578517.3797942273.171834>}, identifier: 34122, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 34122, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 34122, acks: []}], [{:respond, {#PID<0.2062.0>, #Reference<0.3997578517.3797942273.171834>}}, :cleanup]]}}, order: [34122]}} [2026-08-21 07:56:04.177] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: :subscribe State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :up, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797942273.171833>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:56:04.177] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in DaProductApp.MQTT.Handler.connection/2 (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:13: DaProductApp.MQTT.Handler.connection(:terminated, %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}) (tortoise 0.10.0) lib/tortoise/handler.ex:340: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:215: Tortoise.Connection.Controller.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {{Tortoise, "phoenix_client_tms_apps_1"}, :status, :terminated} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:56:04.185] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: {:EXIT, #PID<0.2062.0>, :subscription_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2069.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2067.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2068.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460130], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:56:04.193] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:04.203] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:04.203] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:56:04.204] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:04.204] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:04.203] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Inflight, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:error, :closed} (tortoise 0.10.0) lib/tortoise/connection/inflight.ex:292: Tortoise.Connection.Inflight.handle_event/4 (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.640>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_1", pending: %{47576 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2070.0>, #Reference<0.3997578517.3797417987.101249>}, identifier: 47576, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 47576, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 47576, acks: []}], [{:respond, {#PID<0.2070.0>, #Reference<0.3997578517.3797417987.101249>}}, :cleanup]]}}, order: [47576]}} Callback mode: :handle_event_function Postponed events: [] Last event: {:internal, {:execute, %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2070.0>, #Reference<0.3997578517.3797417987.101249>}, identifier: 47576, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 47576, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 47576, acks: []}], [{:respond, {#PID<0.2070.0>, #Reference<0.3997578517.3797417987.101249>}}, :cleanup]]}}} Queued events: [] State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.640>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_1", pending: %{47576 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2070.0>, #Reference<0.3997578517.3797417987.101249>}, identifier: 47576, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 47576, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 47576, acks: []}], [{:respond, {#PID<0.2070.0>, #Reference<0.3997578517.3797417987.101249>}}, :cleanup]]}}, order: [47576]}} [2026-08-21 07:56:09.205] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: :subscribe State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :up, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797417987.101248>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:56:09.205] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in DaProductApp.MQTT.Handler.connection/2 (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:13: DaProductApp.MQTT.Handler.connection(:terminated, %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}) (tortoise 0.10.0) lib/tortoise/handler.ex:340: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:215: Tortoise.Connection.Controller.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {{Tortoise, "phoenix_client_tms_apps_1"}, :status, :terminated} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:56:09.211] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: {:EXIT, #PID<0.2070.0>, :subscription_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2077.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2075.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2076.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460125], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:56:09.218] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.222] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.234] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.234] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.242] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.242] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.255] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.255] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.264] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.268] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.272] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.273] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.281] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.285] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.292] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.293] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.300] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.305] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.309] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.309] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.316] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.316] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.323] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.327] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.331] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.329] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.339] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.340] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.348] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.351] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.357] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.366] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.371] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.372] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.397] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.402] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.413] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.414] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.430] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.431] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.447] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.448] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.461] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.462] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.471] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.471] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.479] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.479] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.499] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.499] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.510] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.511] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.514] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.515] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.526] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.527] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.534] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.534] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.539] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.540] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.546] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.546] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.552] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.553] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.558] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.561] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.566] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.566] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.572] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.572] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.576] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.576] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.583] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.584] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.589] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.590] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.599] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.599] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.610] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.611] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.616] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.618] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.620] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.620] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.625] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.624] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.630] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.630] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.639] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.639] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.643] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.644] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.649] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.652] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.658] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.660] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.664] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.666] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.672] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.672] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.678] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.677] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.686] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.691] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.690] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.694] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.699] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.700] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.705] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.705] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.716] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.718] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.728] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.729] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.733] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.734] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.737] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.738] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.743] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.745] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.752] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.757] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.770] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.771] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.782] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.783] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.792] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.792] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.797] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.797] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.809] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.809] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.813] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.813] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.820] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.821] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.826] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.827] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.830] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.830] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.836] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.842] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.843] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.846] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.849] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.850] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.856] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.856] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.861] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.864] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.872] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.874] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.878] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.878] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.881] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.881] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.884] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.884] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.887] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.887] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.890] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.890] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.893] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.893] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.898] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.898] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.901] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.901] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.903] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.903] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.907] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.907] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.909] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.910] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.911] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.911] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.914] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.914] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.917] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.918] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.917] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.919] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.922] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.922] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.925] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.926] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.928] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.928] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.935] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.936] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.943] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.943] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.948] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.948] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.950] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.950] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.952] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.952] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.954] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.955] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.958] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.957] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.960] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.959] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.961] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.963] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.965] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.966] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.961] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.968] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.963] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.969] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.973] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.964] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.966] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.968] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.970] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.973] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.977] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.979] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.982] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.982] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.985] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.986] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.988] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.988] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.992] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.992] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.994] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:09.995] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:09.998] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.001] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.002] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.002] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.005] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.005] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.011] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.012] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.014] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.015] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.017] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.017] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.019] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.020] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.023] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.023] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.026] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.028] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.029] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.029] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.031] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.031] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.033] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.033] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.036] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.037] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.039] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.040] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.042] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.042] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.045] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.045] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.048] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.049] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.051] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.051] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.054] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.054] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.057] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.056] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.060] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.059] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.062] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.063] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.065] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.065] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.068] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.068] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.071] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.071] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.075] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.075] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.080] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.081] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.087] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.086] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.091] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.091] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.094] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.094] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.096] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.097] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.099] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.100] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.102] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.105] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.106] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.106] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.111] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.111] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.117] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.117] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.120] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.121] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.123] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.123] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.126] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.131] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.134] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.134] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.138] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.139] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.142] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.142] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.147] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.148] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.152] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.154] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.157] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.158] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.160] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.161] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.165] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.165] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.168] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.168] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.170] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.171] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.173] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.173] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.179] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.179] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.183] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.182] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.186] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.186] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.188] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.188] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.192] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.192] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.195] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.196] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.198] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.198] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.202] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.203] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.205] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.206] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.208] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.209] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.212] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.211] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.214] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.214] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.217] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.217] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.220] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.220] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.223] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.224] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.226] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.228] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.229] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.231] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.232] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.234] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.238] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.238] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.242] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.242] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.247] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.248] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.249] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.249] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.252] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.253] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.254] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.254] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.257] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.257] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.259] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.259] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.262] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.262] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.264] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.265] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.267] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.267] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.273] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.273] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.276] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.277] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.279] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.279] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.282] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.282] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.286] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.287] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.290] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.291] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.293] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.293] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.298] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.300] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.302] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.301] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.305] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.305] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.307] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.307] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.310] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.312] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.319] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.320] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.324] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.325] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.329] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.328] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.331] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.331] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.338] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.338] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.343] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.343] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.347] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.348] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.350] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.350] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.361] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.361] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.375] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.376] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.385] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.388] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.396] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.396] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.405] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.406] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.412] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.412] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.415] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.416] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.418] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.418] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.421] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.421] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.425] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.426] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.429] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.429] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.433] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.433] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.436] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.437] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.441] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.443] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.449] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.450] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.454] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.454] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.457] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.458] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.460] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.460] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.463] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.463] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.468] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.468] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.470] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.471] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.474] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.475] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.477] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.477] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.479] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.479] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.482] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.482] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.485] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.485] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.488] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.489] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.492] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.492] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.495] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.495] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.498] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.498] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.501] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.502] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.504] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.505] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.508] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.508] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.512] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.512] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.515] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.516] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.519] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.519] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.521] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.522] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.524] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.524] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.526] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.526] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.529] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.529] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.532] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.533] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.534] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.534] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.538] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.538] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.540] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.540] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.541] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.542] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.544] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.544] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.546] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.547] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.551] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.553] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.554] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.553] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.556] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.556] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.559] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.560] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.565] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.566] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.569] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.570] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.571] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.572] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.575] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.575] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.579] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.582] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.586] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.589] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.592] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.592] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.594] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.594] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.596] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.597] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.600] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.601] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.604] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.604] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.609] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.610] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.613] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.613] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.615] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.616] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.618] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.618] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.622] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.622] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.626] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.626] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.630] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.631] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.633] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.634] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.637] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.637] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.639] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.639] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.643] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.644] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.645] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.645] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.650] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.650] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.654] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.655] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.657] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.659] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.663] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.664] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.669] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.668] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.672] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.672] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.675] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.675] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.678] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.679] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.681] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.681] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.692] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.692] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.698] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.698] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.700] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.701] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.702] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.703] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.707] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.708] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.713] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.713] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.717] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.717] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.719] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.719] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.721] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.721] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.725] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.726] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.728] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.729] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.730] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.730] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.734] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.735] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.737] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.738] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.741] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.741] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.744] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.744] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.747] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.747] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.749] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.749] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.754] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.755] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.762] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.762] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.768] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.768] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.774] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.775] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.783] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.784] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.798] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.798] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.807] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.806] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.821] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.822] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.827] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.827] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.841] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.842] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.854] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.855] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.870] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.869] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.875] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.876] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.884] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.884] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.889] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.891] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.898] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.901] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.904] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.905] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.911] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.914] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.919] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.923] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.931] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.933] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.935] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.935] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.940] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.940] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.942] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.942] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.949] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.949] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.953] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.955] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.960] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.961] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.969] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.969] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.978] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.978] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.983] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.984] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.990] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.992] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.995] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:10.995] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.999] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:10.999] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.002] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.004] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.007] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.007] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.013] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.013] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.018] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.020] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.026] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.024] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.032] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.034] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.036] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.036] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.039] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.040] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.044] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.043] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.047] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.046] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.051] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.052] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.055] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.055] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.059] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.061] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.069] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.071] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.074] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.076] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.078] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.079] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.081] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.082] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.088] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.089] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.092] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.093] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.095] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.095] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.098] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.098] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.101] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.102] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.104] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.103] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.108] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.108] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.113] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.113] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.117] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.117] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.119] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.120] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.123] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.123] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.126] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.126] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.128] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.129] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.133] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.133] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.138] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.138] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.142] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.142] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.146] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.147] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.152] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.152] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.163] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.165] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.169] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.169] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.173] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.175] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.180] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.180] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.184] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.185] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.189] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.190] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.193] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.195] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.198] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.198] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.202] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.203] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.205] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.206] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.208] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.209] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.212] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.213] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.215] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.216] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.219] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.219] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.224] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.226] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.228] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.227] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.231] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.231] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.235] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.238] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.239] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.241] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.255] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.258] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.262] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.272] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.297] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.297] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.304] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.305] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.310] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.311] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.317] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.317] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.324] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.324] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.332] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.332] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.345] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.346] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.350] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.350] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.360] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.360] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.369] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.370] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.373] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.374] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.385] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.385] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.399] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.399] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.405] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.406] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.413] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.414] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.421] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.424] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.450] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.452] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.466] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.468] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.496] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.498] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.505] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.506] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.514] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.520] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.523] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.523] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.533] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.532] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.544] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.544] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.550] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.552] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.564] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.564] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.572] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.577] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.582] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.582] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.590] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.593] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.596] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.601] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.604] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.607] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.608] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.609] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.616] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.616] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.622] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.622] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.637] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.638] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.645] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.646] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.655] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.656] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.660] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.661] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.669] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.669] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.677] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.677] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.689] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.690] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.702] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.702] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.715] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.715] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.726] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.728] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.736] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.736] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.744] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.744] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.755] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.756] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.763] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.763] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.775] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.775] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.782] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.784] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.789] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.791] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.799] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.801] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.804] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.812] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.820] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.820] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.825] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.825] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.832] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.833] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.839] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.839] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.848] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.849] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.861] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.862] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.866] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.868] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.875] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.879] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.883] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.883] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.889] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.891] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.896] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.896] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.913] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.912] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.916] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.916] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.927] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.932] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.942] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.941] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.946] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.947] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.953] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.953] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.957] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.958] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.963] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.963] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.971] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.971] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.976] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.976] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.977] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.978] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.982] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.982] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.987] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.987] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.989] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.990] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.992] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:11.993] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.996] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:11.996] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.000] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.000] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.005] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.007] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.014] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.015] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.018] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.018] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.021] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.022] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.024] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.025] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.027] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.027] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.030] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.031] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.032] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.032] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.035] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.035] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.039] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.040] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.043] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.044] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.046] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.047] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.050] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.051] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.053] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.054] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.059] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.059] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.063] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.063] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.065] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.067] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.072] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.072] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.075] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.075] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.079] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.079] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.083] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.082] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.086] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.085] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.089] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.090] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.093] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.094] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.097] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.098] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.100] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.101] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.102] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.102] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.105] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.105] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.109] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.111] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.117] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.118] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.120] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.120] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.122] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.124] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.126] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.126] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.132] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.132] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.135] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.135] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.141] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.142] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.145] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.147] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.152] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.153] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.157] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.157] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.162] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.162] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.167] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.166] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.175] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.176] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.178] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.179] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.181] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.182] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.183] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.184] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.187] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.189] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.192] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.192] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.195] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.195] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.199] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.199] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.204] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.204] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.206] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.206] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.209] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.209] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.212] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.212] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.218] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.219] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.221] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.222] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.225] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.225] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.227] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.228] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.231] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.230] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.234] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.234] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.238] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.239] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.245] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.246] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.251] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.251] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.256] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.257] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.259] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.260] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.262] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.262] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.265] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.265] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.267] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.267] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.269] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.270] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.272] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.272] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.277] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.277] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.280] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.281] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.282] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.282] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.285] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.285] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.287] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.288] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.290] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.290] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.293] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.293] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.299] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.298] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.302] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.302] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.305] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.305] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.307] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.308] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.311] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.313] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.317] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.317] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.321] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.321] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.324] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.325] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.326] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.326] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.330] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.332] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.335] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.335] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.339] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.339] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.343] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.343] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.345] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.346] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.349] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.351] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.356] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.357] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.359] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.360] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.362] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.364] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.368] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.367] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.371] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.372] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.374] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.375] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.378] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.380] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.381] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.383] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.387] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.387] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.391] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.391] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.393] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.394] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.396] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.397] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.399] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.399] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.401] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.401] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.404] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.405] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.407] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.407] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.410] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.411] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.413] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.414] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.418] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.418] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.422] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.422] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.425] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.426] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.428] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.428] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.430] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.431] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.432] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.432] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.434] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.435] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.437] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.437] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.439] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.440] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.442] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.442] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.445] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.445] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.447] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.447] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.450] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.451] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.459] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.459] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.467] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.468] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.471] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.471] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.473] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.473] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.475] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.475] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.477] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.477] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.480] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.480] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.484] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.484] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.486] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.486] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.490] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.490] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.497] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.499] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.502] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.503] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.507] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.507] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.509] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.509] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.512] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.512] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.516] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.515] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.519] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.519] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.523] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.525] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.527] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.527] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.529] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.530] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.531] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.531] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.534] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.536] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.538] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.539] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.541] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.541] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.544] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.545] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.547] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.550] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.555] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.555] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.563] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.564] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.569] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.570] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.572] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.572] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.574] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.576] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.578] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.578] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.584] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.585] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.586] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.586] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.592] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.592] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.595] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.595] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.598] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.599] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.602] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.602] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.605] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.605] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.608] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.608] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.610] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.610] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.612] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.612] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.614] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.615] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.617] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.617] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.621] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.621] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.628] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.628] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.633] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.633] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.635] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.635] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.638] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.637] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.640] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.640] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.642] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.642] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.644] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.644] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.649] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.649] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.651] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.651] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.659] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.659] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.662] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.662] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.664] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.664] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.667] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.667] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.672] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.672] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.674] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.674] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.676] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.676] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.679] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.679] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.682] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.682] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.686] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.687] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.690] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.693] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.697] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.697] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.701] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.701] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.704] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.705] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.707] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.708] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.710] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.711] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.715] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.714] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.719] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.720] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.727] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.727] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.731] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.732] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.734] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.734] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.741] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.742] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.744] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.745] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.750] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.751] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.754] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.755] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.760] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.762] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.765] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.767] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.770] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.771] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.794] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.794] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.799] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.800] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.808] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.807] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.814] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.814] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.820] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.821] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.828] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.826] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.836] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.836] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.842] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.842] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.850] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.851] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.854] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.856] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.859] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.859] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.865] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.866] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.868] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.869] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.875] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.875] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.885] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.884] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.891] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.893] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.905] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.905] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.909] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.910] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.915] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.915] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.920] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.923] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.923] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.928] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.937] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.941] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.950] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.950] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.960] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.961] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.966] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.968] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.970] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.970] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.976] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.976] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.978] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.979] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.983] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.985] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.990] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:12.991] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.995] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:12.997] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.002] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.004] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.005] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.007] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.009] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.011] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.009] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.014] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.019] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.019] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.023] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.024] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.029] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.030] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.035] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.039] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.044] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.045] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.049] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.050] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.053] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.054] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.055] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.056] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.059] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.062] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.064] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.065] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.068] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.069] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.071] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.071] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.074] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.074] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.079] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.080] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.089] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.089] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.095] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.098] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.100] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.100] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.108] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.107] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.117] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.116] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.120] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.121] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.125] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.125] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.129] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.130] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.135] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.135] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.144] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.143] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.147] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.148] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.153] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.153] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.157] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.157] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.162] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.164] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.170] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.171] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.177] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.176] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.181] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.182] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.186] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.187] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.191] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.194] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.194] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:56:13.194] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.194] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.199] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.199] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2078.0>, #Reference<0.3997578517.3797942273.176464>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1020>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1019>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1019>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.2078.0>, #Reference<0.3997578517.3797942273.176464>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1020>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1019>, buffer: ""}} [2026-08-21 07:56:13.206] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.202] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1020>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2078.0>, #Reference<0.3997578517.3797942273.176464>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1020>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1019>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797942273.176447>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:56:13.209] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1020>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2078.0>, #Reference<0.3997578517.3797942273.176464>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1020>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1019>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.2078.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.2078.0>, #Reference<0.3997578517.3797942273.176464>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1020>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1019>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1020>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2084.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2080.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2083.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460116], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:56:13.212] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.216] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.221] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.223] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.227] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.228] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.232] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.234] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.237] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.236] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.244] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.247] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.256] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.255] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.259] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.261] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.269] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.270] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.274] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.275] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.283] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.284] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.287] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.287] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.294] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.297] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.299] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.300] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.307] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.306] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.318] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.318] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.322] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.322] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.324] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.327] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.332] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.332] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.337] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.337] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.342] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.342] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.347] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.349] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.352] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.353] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.360] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.360] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.368] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.368] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.374] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.374] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.379] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.382] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.388] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.394] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.397] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.401] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.405] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.406] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.413] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.413] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.419] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.418] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.425] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.424] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.431] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.431] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.435] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.436] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.445] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.444] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.450] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.450] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.455] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.455] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.460] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.462] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.470] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.470] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.475] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.476] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.481] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.482] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.487] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.487] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.496] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.495] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.503] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.510] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.508] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.510] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.520] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.522] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.525] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.526] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.530] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.535] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.538] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.538] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.541] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.542] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.550] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.553] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.561] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.563] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.566] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.567] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.574] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.575] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.579] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.579] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.588] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.588] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.594] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.594] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.597] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.598] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.603] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.603] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.606] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.608] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.609] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.610] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.615] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.616] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.618] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.619] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.623] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.623] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.633] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.634] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.639] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.638] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.646] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.645] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.649] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.650] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.659] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.661] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.664] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.665] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.673] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.672] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.679] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.679] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.682] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.681] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.691] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.692] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.697] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.696] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.699] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.700] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.704] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.704] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.713] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.715] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.720] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.722] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.727] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.728] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.732] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.733] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.738] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.739] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.744] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.743] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.748] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.748] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.751] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.750] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.755] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.756] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.761] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.762] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.766] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.765] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.773] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.777] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.783] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.784] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.788] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.791] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.794] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.795] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.798] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.797] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.802] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.808] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.805] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.809] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.813] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.814] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.819] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.820] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.823] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.827] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.829] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.829] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.837] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.836] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.842] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.843] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.847] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.849] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.851] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.852] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.857] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.856] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.864] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.863] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.870] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.871] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.878] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.880] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.883] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.884] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.887] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.889] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.893] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.893] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.898] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.901] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.901] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.901] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.904] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.905] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.907] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.908] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.911] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.911] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.914] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.915] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.921] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.923] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.925] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.920] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.933] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:56:13.933] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.933] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.942] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.943] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2085.0>, #Reference<0.3997578517.3797417987.102609>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1081>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1080>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1080>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.2085.0>, #Reference<0.3997578517.3797417987.102609>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1081>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1080>, buffer: ""}} [2026-08-21 07:56:13.945] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1081>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2085.0>, #Reference<0.3997578517.3797417987.102609>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1081>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1080>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797417987.102586>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:56:13.949] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.950] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1081>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2085.0>, #Reference<0.3997578517.3797417987.102609>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1081>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1080>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.2085.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.2085.0>, #Reference<0.3997578517.3797417987.102609>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1081>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1080>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1081>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2091.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2087.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2090.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460115], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:56:13.956] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.959] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.960] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:13.960] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:13.961] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Inflight, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:error, :closed} (tortoise 0.10.0) lib/tortoise/connection/inflight.ex:292: Tortoise.Connection.Inflight.handle_event/4 (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.1082>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_1", pending: %{19860 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2092.0>, #Reference<0.3997578517.3797417987.102642>}, identifier: 19860, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 19860, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 19860, acks: []}], [{:respond, {#PID<0.2092.0>, #Reference<0.3997578517.3797417987.102642>}}, :cleanup]]}}, order: [19860]}} Callback mode: :handle_event_function Postponed events: [] Last event: {:internal, {:execute, %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2092.0>, #Reference<0.3997578517.3797417987.102642>}, identifier: 19860, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 19860, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 19860, acks: []}], [{:respond, {#PID<0.2092.0>, #Reference<0.3997578517.3797417987.102642>}}, :cleanup]]}}} Queued events: [] State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.1082>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_1", pending: %{19860 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.2092.0>, #Reference<0.3997578517.3797417987.102642>}, identifier: 19860, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 19860, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 19860, acks: []}], [{:respond, {#PID<0.2092.0>, #Reference<0.3997578517.3797417987.102642>}}, :cleanup]]}}, order: [19860]}} [2026-08-21 07:56:18.960] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in DaProductApp.MQTT.Handler.connection/2 (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:13: DaProductApp.MQTT.Handler.connection(:terminated, %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}) (tortoise 0.10.0) lib/tortoise/handler.ex:340: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:215: Tortoise.Connection.Controller.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {{Tortoise, "phoenix_client_tms_apps_1"}, :status, :terminated} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:56:18.960] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: :subscribe State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :up, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797417987.102641>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:56:18.963] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) :subscription_timeout Last message: {:EXIT, #PID<0.2092.0>, :subscription_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2100.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2097.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2098.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460110, -576460115], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:56:18.967] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:18.969] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:18.973] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:18.976] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:18.986] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:18.987] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:18.989] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:18.989] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:18.994] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:18.995] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:18.998] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:18.999] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.004] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.002] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.009] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.010] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.020] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.020] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.022] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.023] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.025] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.025] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.028] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.029] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.031] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.032] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.035] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.035] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.039] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.041] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.046] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.048] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.051] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.053] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.056] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.058] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.062] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.061] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.066] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.066] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.068] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.070] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.070] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.070] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.074] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.075] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.078] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.079] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.081] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.082] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.087] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.087] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.096] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.096] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.101] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.103] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.107] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.107] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.117] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.120] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.124] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.124] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.128] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.128] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.135] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.135] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.142] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.142] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.148] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.149] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.153] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.153] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.161] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.162] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.168] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.169] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.173] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.175] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.176] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.176] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.181] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.182] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.185] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.188] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.194] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.194] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.197] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.198] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.203] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.203] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.206] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.206] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.211] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.212] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.215] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.216] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.221] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.222] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.227] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.228] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.231] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.233] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.238] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.238] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.243] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.243] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.253] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.255] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.261] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.262] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.265] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.266] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.270] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.271] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.284] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.287] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.294] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.296] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.308] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.307] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.320] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.320] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.325] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.324] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.333] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.334] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.339] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.341] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.345] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.347] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.349] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.351] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.355] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.358] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.365] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.367] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.371] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.371] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.375] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.375] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.378] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.379] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.393] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.394] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.402] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.403] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.408] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.410] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.413] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.414] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.418] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.419] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.424] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.426] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.430] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.431] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.436] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.437] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.445] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.446] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.454] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.456] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.462] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.463] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.476] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.477] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.485] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.488] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.492] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.492] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.497] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.497] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.502] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.502] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.505] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.507] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.514] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.516] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.524] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.525] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.530] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.531] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.535] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.535] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.539] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.540] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.545] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.545] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.550] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.551] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.555] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.556] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.562] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.561] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.569] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.571] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.578] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.585] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.592] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.593] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.595] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.595] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.598] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.599] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.607] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.607] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.613] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.614] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.616] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.617] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.620] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.621] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.630] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.631] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.637] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.636] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.646] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.647] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.652] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.652] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.658] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.659] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.665] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.666] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.668] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.669] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.675] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.674] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.679] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.680] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.683] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.683] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.687] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.687] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.691] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.692] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.700] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.700] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.704] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.705] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.707] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.707] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.715] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.715] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.717] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.717] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.720] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.721] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.726] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.726] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.733] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.733] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.738] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.738] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.739] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.740] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.742] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.742] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.746] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.746] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.754] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.754] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.763] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.764] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.768] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.771] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.774] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.774] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.781] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.781] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.789] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.789] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.793] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.794] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.799] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.799] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.803] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.804] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.810] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.810] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.816] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.816] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.820] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.821] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.824] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.823] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.828] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.829] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.832] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.833] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.838] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.839] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.843] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.843] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.846] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.846] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.856] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.855] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.860] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.861] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.870] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.871] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.875] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.880] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.883] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.884] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.887] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.887] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.891] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.892] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.894] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.895] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.898] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.897] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.900] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.902] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.903] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.905] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.906] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.911] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.916] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.916] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.921] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.925] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.931] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.931] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.938] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.942] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.943] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:56:19.943] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.944] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.950] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.949] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2101.0>, #Reference<0.3997578517.3797417987.104888>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1166>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1165>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1165>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.2101.0>, #Reference<0.3997578517.3797417987.104888>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1166>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1165>, buffer: ""}} [2026-08-21 07:56:19.956] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in DaProductApp.MQTT.Handler.connection/2 (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:13: DaProductApp.MQTT.Handler.connection(:terminated, %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => false}}) (tortoise 0.10.0) lib/tortoise/handler.ex:340: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:215: Tortoise.Connection.Controller.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {{Tortoise, "phoenix_client_tms_apps_1"}, :status, :terminated} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => false}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:56:19.958] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.957] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1166>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2101.0>, #Reference<0.3997578517.3797417987.104888>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1166>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1165>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797417987.104869>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:56:19.960] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1166>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2101.0>, #Reference<0.3997578517.3797417987.104888>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1166>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1165>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.2101.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.2101.0>, #Reference<0.3997578517.3797417987.104888>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1166>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1165>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1166>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2107.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2103.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2106.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460109], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:56:19.966] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.970] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.975] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.976] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.992] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:19.993] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.998] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:19.998] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.005] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.007] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.014] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.015] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.022] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.026] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.033] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.033] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.039] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.044] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.046] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.046] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.049] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.051] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.053] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.054] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.058] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.060] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.059] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.062] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.068] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.069] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.072] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.072] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.079] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.078] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.088] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.088] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.095] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.095] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.101] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.102] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.107] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.108] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.119] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.118] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.127] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.127] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.130] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.131] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.134] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.137] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.139] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.139] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.150] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.153] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.156] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.156] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.163] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.164] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.173] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.174] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.181] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.180] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.192] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.193] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.199] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.201] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.203] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.203] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.209] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.210] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.214] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.215] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.218] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.218] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.222] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.222] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.225] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.226] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.229] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.230] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.236] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.236] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.242] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.242] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.252] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.254] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.259] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.259] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.265] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.267] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.270] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.270] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.280] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.281] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.286] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.287] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.291] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.291] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.296] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.299] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.298] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.300] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.305] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.305] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.309] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.311] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.314] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.315] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.318] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.319] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.324] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.326] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.330] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.329] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.340] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.341] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.347] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.347] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.353] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.354] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.359] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.358] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.363] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.364] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.369] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.370] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.379] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.379] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.387] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.388] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.395] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.394] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.400] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.401] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.406] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.406] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.409] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.410] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.418] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.417] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.425] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.425] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.432] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.433] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.438] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.443] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.450] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.450] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.456] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.456] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.462] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.463] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.472] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.472] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.481] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.480] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.485] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.486] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.490] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.492] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.501] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.502] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.511] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.511] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.517] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.517] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.528] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.527] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.535] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.535] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.539] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.540] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.546] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.545] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.552] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.553] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.558] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.557] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.564] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.564] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.569] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.571] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.582] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.582] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.585] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.586] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.591] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.592] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.598] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.598] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.601] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.603] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.605] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.604] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.609] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.610] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.614] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.613] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.617] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.617] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.622] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.622] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.632] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.633] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.638] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.638] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.643] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.643] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.652] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.654] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.657] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.661] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.663] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.667] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.656] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.664] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:56:20.675] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.664] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.664] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.666] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2108.0>, #Reference<0.3997578517.3797417986.123724>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1221>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1220>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1220>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.2108.0>, #Reference<0.3997578517.3797417986.123724>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1221>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1220>, buffer: ""}} [2026-08-21 07:56:20.669] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in DaProductApp.MQTT.Handler.connection/2 (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:13: DaProductApp.MQTT.Handler.connection(:terminated, %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => false}}) (tortoise 0.10.0) lib/tortoise/handler.ex:340: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:215: Tortoise.Connection.Controller.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {{Tortoise, "phoenix_client_tms_apps_1"}, :status, :terminated} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => false}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:56:20.667] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1221>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2108.0>, #Reference<0.3997578517.3797417986.123724>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1221>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1220>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797417986.123703>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:56:20.677] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1221>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2108.0>, #Reference<0.3997578517.3797417986.123724>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1221>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1220>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.2108.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.2108.0>, #Reference<0.3997578517.3797417986.123724>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1221>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1220>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1221>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2114.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2110.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2113.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460109], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:56:20.683] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.686] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.690] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.692] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.696] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.697] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.701] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.704] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.707] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.712] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.729] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.730] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.735] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.738] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.741] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.743] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.754] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.762] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.767] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.767] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.772] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.773] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.778] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.778] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.788] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.789] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.803] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.800] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.808] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.805] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.827] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.826] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.841] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.842] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.861] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.865] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.874] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.873] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.891] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.890] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.898] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.899] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.909] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.910] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.917] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.917] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.928] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.928] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.933] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.935] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.951] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.954] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.964] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.964] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.971] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.974] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.979] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.986] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.989] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.991] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.988] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:20.991] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:20.994] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.004] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.000] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.011] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.021] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.022] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.029] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.033] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.037] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.035] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.043] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.043] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.049] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.050] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.055] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.054] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.061] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.063] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.068] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.068] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.076] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.081] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.085] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.086] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.099] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.098] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.112] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.119] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.126] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.126] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.133] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.133] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.145] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.146] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.149] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.149] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.153] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.156] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.159] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.160] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.169] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.171] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.175] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.179] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.181] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.182] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.185] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.189] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.195] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.198] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.202] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.202] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.204] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.206] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.209] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.209] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.213] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.214] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.220] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.221] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.227] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.226] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.237] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.237] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.246] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.245] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.259] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.259] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.265] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.266] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.273] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.275] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.285] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.285] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.291] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.293] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.296] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.299] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.302] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.303] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.313] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.316] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.323] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.324] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.329] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.331] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.341] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.341] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.350] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.350] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.361] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.361] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.365] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.367] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.377] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.378] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.382] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.385] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.382] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.387] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.398] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.399] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.408] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.412] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.423] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.423] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.431] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.431] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.438] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.439] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.449] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.450] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.462] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.465] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.481] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.481] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.488] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.490] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.501] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.502] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.505] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.504] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.508] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.510] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.516] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.517] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.528] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.529] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.534] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.532] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.539] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.541] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.547] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.547] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.565] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.565] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.570] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.571] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.588] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.589] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.607] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.605] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.617] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.618] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.627] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.627] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.645] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.643] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.659] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.658] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.678] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.679] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.692] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.693] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.698] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.700] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.707] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.707] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.719] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.720] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.731] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.733] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.739] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.739] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.749] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.750] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.753] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.753] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.757] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.757] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.760] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.761] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.765] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.764] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.768] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.768] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.774] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.775] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.780] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.782] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.788] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.791] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.796] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.797] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.800] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.800] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.805] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.806] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.812] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.811] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.821] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.820] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.825] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.824] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.828] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.828] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.832] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.834] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.838] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.838] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.843] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.842] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.848] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.850] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.853] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.853] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.857] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.856] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.861] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.862] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.870] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.870] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.875] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.875] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.880] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.882] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.890] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.890] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.896] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.896] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.899] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.899] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.905] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.905] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.909] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.911] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.915] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.916] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.924] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.925] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.929] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.929] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.933] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.934] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.943] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.943] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.950] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.949] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.957] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.957] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.960] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.960] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.963] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.963] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.969] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.969] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.973] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.973] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.985] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:21.988] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.993] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:21.996] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.003] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.007] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.008] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.009] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.012] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.014] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.020] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.019] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.027] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.028] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.038] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.038] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.042] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.042] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.047] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.049] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.057] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.056] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.065] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.066] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.077] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.076] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.091] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.093] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.103] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.104] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.112] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.114] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.126] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.130] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.142] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.141] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.153] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.154] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.167] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.172] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.180] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.179] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.192] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.193] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.198] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.200] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.208] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.210] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.221] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.221] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.227] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.230] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.234] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.236] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.245] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.248] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.246] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.249] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.257] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.262] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.262] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.262] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.273] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.273] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.279] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.280] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.289] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.290] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.295] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.298] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.304] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.304] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.309] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.310] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.320] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.320] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.325] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.326] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.335] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.335] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.354] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.354] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.363] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.366] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.368] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:56:22.368] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:22.369] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.378] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}} terminating ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2115.0>, #Reference<0.3997578517.3797942273.179479>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1321>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1320>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1320>, buffer: ""}} Callback mode: :handle_event_function Postponed events: [] Last event: {{:call, {#PID<0.2115.0>, #Reference<0.3997578517.3797942273.179479>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1321>}} Queued events: [] State: {{:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1320>, buffer: ""}} [2026-08-21 07:56:22.376] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:22.379] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1321>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2115.0>, #Reference<0.3997578517.3797942273.179479>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1321>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1320>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 (stdlib 5.2.3.2) gen.erl:246: :gen.do_call/4 (stdlib 5.2.3.2) gen.erl:589: :gen.do_for_proc/2 (stdlib 5.2.3.2) gen_statem.erl:923: :gen_statem.call/3 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:35: Tortoise.Connection.Receiver.handle_socket/2 (tortoise 0.10.0) lib/tortoise/connection.ex:657: Tortoise.Connection.init_connection/2 (tortoise 0.10.0) lib/tortoise/connection.ex:405: Tortoise.Connection.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: :connect State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :down, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.3997578517.3797942273.179449>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:56:22.386] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) exited in: :gen_statem.call({:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1321>}, :infinity) ** (EXIT) an exception was raised: ** (FunctionClauseError) no function clause matching in Tortoise.Connection.Receiver.handle_event/4 (tortoise 0.10.0) lib/tortoise/connection/receiver.ex:54: Tortoise.Connection.Receiver.handle_event({:call, {#PID<0.2115.0>, #Reference<0.3997578517.3797942273.179479>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1321>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1320>, buffer: ""}) (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.2115.0>, {{:function_clause, [{Tortoise.Connection.Receiver, :handle_event, [{:call, {#PID<0.2115.0>, #Reference<0.3997578517.3797942273.179479>}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1321>}, {:connected, :receiving_fixed_header}, %Tortoise.Connection.Receiver{client_id: "phoenix_client_tms_apps_1", transport: Tortoise.Transport.Tcp, socket: #Port<0.1320>, buffer: ""}], [file: ~c"lib/tortoise/connection/receiver.ex", line: 54]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]}, {:gen_statem, :call, [{:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Receiver, "phoenix_client_tms_apps_1"}}}, {:handle_socket, Tortoise.Transport.Tcp, #Port<0.1321>}, :infinity]}}} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.2121.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.2117.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.2120.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460107], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 07:56:22.387] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:23.042] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:56:23.042] [INFO ] Incoming JSON payload: {"oid":"ed1a2941-a2b1-4968-a2e7-acbecec196e1","sn":"98251226730001","uploadTime":"2026-08-21T07:56:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T07:56:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T07:56:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T07:56:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T07:56:22Z"},{"itemkey":"ram_free_mb","value":"867","timestamp":"2026-08-21T07:56:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T07:56:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T07:56:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T07:56:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T07:56:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T07:56:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T07:56:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T07:56:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T07:56:22Z"},{"itemkey":"data_usage_mb","value":"27","timestamp":"2026-08-21T07:56:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T07:56: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 07:56:23.049] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ed1a2941-a2b1-4968-a2e7-acbecec196e1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:56:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T07:56:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:56:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:56:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:56:22Z", "value" => "867"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:56:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:56:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:56:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:56:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:56:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:56:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:56:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:56:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:56:22Z", "value" => "27"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:56:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:56: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:56:22Z", "vendor" => "morefun"} [2026-08-21 07:56:23.051] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 07:56:23.079] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:56:23.080] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 07:56:23.085] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=4.0ms idle=1093.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-08-21 07:56:23.091] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms queue=2.7ms idle=134.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-08-21 07:56:23.091] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 07:56:23.148] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.6ms idle=61.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-08-21 07:56:23.201] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:56:23.255] [DEBUG] QUERY OK source="tms_terminals" db=40.9ms queue=0.4ms idle=113.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 07:56:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:56:23.265] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 07:56:23.269] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms idle=116.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-08-21 07:56:23.300] [DEBUG] QUERY OK source="tms_terminals" db=30.2ms idle=23.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:56:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:56:23.343] [DEBUG] QUERY OK db=15.5ms queue=1.2ms idle=58.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ed1a2941-a2b1-4968-a2e7-acbecec196e1", "2026-08-21T07:56:22Z", ~N[2026-08-21 07:56:23], ~N[2026-08-21 07:56:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:56:23.361] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77136, oid: "ed1a2941-a2b1-4968-a2e7-acbecec196e1", upload_time: "2026-08-21T07:56:22Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:23], updated_at: ~N[2026-08-21 07:56:23]} [2026-08-21 07:56:23.364] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T07:56:22Z", "value" => "morefun"} [2026-08-21 07:56:23.402] [DEBUG] QUERY OK db=36.5ms queue=1.9ms idle=64.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56:22Z", "morefun", "vendor", 77136, ~N[2026-08-21 07:56:23], ~N[2026-08-21 07:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:23.403] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783127, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:23], updated_at: ~N[2026-08-21 07:56:23]}} [2026-08-21 07:56:23.403] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T07:56:22Z", "value" => "kiosk_launcher"} [2026-08-21 07:56:23.446] [DEBUG] QUERY OK db=41.2ms queue=2.0ms idle=59.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56:22Z", "kiosk_launcher", "model", 77136, ~N[2026-08-21 07:56:23], ~N[2026-08-21 07:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:23.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783128, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:23], updated_at: ~N[2026-08-21 07:56:23]}} [2026-08-21 07:56:23.447] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T07:56:22Z", "value" => "1.0"} [2026-08-21 07:56:23.510] [DEBUG] QUERY OK db=62.6ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56:22Z", "1.0", "app_version", 77136, ~N[2026-08-21 07:56:23], ~N[2026-08-21 07:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:23.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783129, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:23], updated_at: ~N[2026-08-21 07:56:23]}} [2026-08-21 07:56:23.510] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T07:56:22Z", "value" => "13"} [2026-08-21 07:56:23.550] [DEBUG] QUERY OK db=39.8ms idle=64.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56:22Z", "13", "android_version", 77136, ~N[2026-08-21 07:56:23], ~N[2026-08-21 07:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:23.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783130, itemkey: "android_version", value: "13", timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:23], updated_at: ~N[2026-08-21 07:56:23]}} [2026-08-21 07:56:23.551] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T07:56:22Z", "value" => "867"} [2026-08-21 07:56:23.609] [DEBUG] QUERY OK db=57.6ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56:22Z", "867", "ram_free_mb", 77136, ~N[2026-08-21 07:56:23], ~N[2026-08-21 07:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:23.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783131, itemkey: "ram_free_mb", value: "867", timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:23], updated_at: ~N[2026-08-21 07:56:23]}} [2026-08-21 07:56:23.610] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T07:56:22Z", "value" => "WIFI"} [2026-08-21 07:56:23.657] [DEBUG] QUERY OK db=45.1ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56:22Z", "WIFI", "network_type", 77136, ~N[2026-08-21 07:56:23], ~N[2026-08-21 07:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:23.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783132, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:23], updated_at: ~N[2026-08-21 07:56:23]}} [2026-08-21 07:56:23.663] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T07:56:22Z", "value" => "true"} [2026-08-21 07:56:23.701] [DEBUG] QUERY OK db=37.3ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56:22Z", "true", "kiosk_active", 77136, ~N[2026-08-21 07:56:23], ~N[2026-08-21 07:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:23.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783133, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:23], updated_at: ~N[2026-08-21 07:56:23]}} [2026-08-21 07:56:23.702] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T07:56:22Z", "value" => ""} [2026-08-21 07:56:23.766] [DEBUG] QUERY OK db=61.6ms queue=2.0ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T07:56:22Z", "sim_operator", 77136, ~N[2026-08-21 07:56:23], ~N[2026-08-21 07:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:23.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783134, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:23], updated_at: ~N[2026-08-21 07:56:23]}} [2026-08-21 07:56:23.767] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T07:56:22Z", "value" => "UNKNOWN"} [2026-08-21 07:56:23.819] [DEBUG] QUERY OK db=50.8ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56:22Z", "UNKNOWN", "sim_number", 77136, ~N[2026-08-21 07:56:23], ~N[2026-08-21 07:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:23.820] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783135, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:23], updated_at: ~N[2026-08-21 07:56:23]}} [2026-08-21 07:56:23.820] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T07:56:22Z", "value" => "UNKNOWN"} [2026-08-21 07:56:23.890] [DEBUG] QUERY OK db=66.4ms idle=58.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56:22Z", "UNKNOWN", "sim_iccid", 77136, ~N[2026-08-21 07:56:23], ~N[2026-08-21 07:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:23.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783136, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:23], updated_at: ~N[2026-08-21 07:56:23]}} [2026-08-21 07:56:23.891] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T07:56:22Z", "value" => "UNKNOWN"} [2026-08-21 07:56:23.922] [DEBUG] QUERY OK db=30.7ms idle=71.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56:22Z", "UNKNOWN", "sim_imsi", 77136, ~N[2026-08-21 07:56:23], ~N[2026-08-21 07:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:23.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783137, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:23], updated_at: ~N[2026-08-21 07:56:23]}} [2026-08-21 07:56:23.922] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T07:56:22Z", "value" => "UNKNOWN"} [2026-08-21 07:56:24.018] [DEBUG] QUERY OK db=95.0ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56:22Z", "UNKNOWN", "sim_iccid2", 77136, ~N[2026-08-21 07:56:23], ~N[2026-08-21 07:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:24.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783138, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:23], updated_at: ~N[2026-08-21 07:56:23]}} [2026-08-21 07:56:24.018] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T07:56:22Z", "value" => "UNKNOWN"} [2026-08-21 07:56:24.077] [DEBUG] QUERY OK db=54.0ms idle=65.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56:22Z", "UNKNOWN", "sim_imsi2", 77136, ~N[2026-08-21 07:56:24], ~N[2026-08-21 07:56:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:24.079] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783139, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:24], updated_at: ~N[2026-08-21 07:56:24]}} [2026-08-21 07:56:24.080] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T07:56:22Z", "value" => "27"} [2026-08-21 07:56:24.124] [DEBUG] QUERY OK db=44.1ms idle=62.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56:22Z", "27", "data_usage_mb", 77136, ~N[2026-08-21 07:56:24], ~N[2026-08-21 07:56:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:24.125] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783140, itemkey: "data_usage_mb", value: "27", timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:24], updated_at: ~N[2026-08-21 07:56:24]}} [2026-08-21 07:56:24.125] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T07:56:22Z", "value" => "0"} [2026-08-21 07:56:24.150] [DEBUG] QUERY OK db=24.9ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56:22Z", "0", "mobile_data_mb", 77136, ~N[2026-08-21 07:56:24], ~N[2026-08-21 07:56:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:24.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783141, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:24], updated_at: ~N[2026-08-21 07:56:24]}} [2026-08-21 07:56:24.154] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T07:56: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 07:56:24.219] [DEBUG] QUERY OK db=59.0ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T07:56: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77136, ~N[2026-08-21 07:56:24], ~N[2026-08-21 07:56:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:24.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783142, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T07:56:22Z", message: nil, status_log_id: 77136, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:24], updated_at: ~N[2026-08-21 07:56:24]}} [2026-08-21 07:56:38.379] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 07:56:38.379] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T07:56:38Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T07:56:38Z","value":"26"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T07:56:38Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T07:56:38Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T07:56:38Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T07:56:38Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T07:56:38Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T07:56:38Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T07:56:38Z","vendor":"MoreFun"} [2026-08-21 07:56:38.380] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:56:38Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:56:38Z", "value" => "26"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:56:38Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:56:38Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:56:38Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:56:38Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:56:38Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:56:38Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T07:56:38Z", "vendor" => "MoreFun"} [2026-08-21 07:56:38.380] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 07:56:38.385] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 07:56:38.385] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 07:56:38.388] [DEBUG] QUERY OK source="parameter_templates" db=3.0ms idle=1359.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-08-21 07:56:38.391] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=358.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-08-21 07:56:38.401] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms queue=1.5ms idle=9.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-08-21 07:56:38.419] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=4.6ms idle=22.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-08-21 07:56:38.441] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms queue=0.4ms idle=38.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-08-21 07:56:38.463] [DEBUG] QUERY OK source="pos_merchant" db=2.9ms queue=12.6ms idle=29.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 07:56:38.484] [DEBUG] QUERY OK db=3.7ms queue=3.2ms idle=1676.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 ["626165170000000"] [2026-08-21 07:56:38.484] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 07:56:38.497] [DEBUG] QUERY OK source="pos_terminal_data" db=0.8ms queue=1.4ms idle=54.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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 07:56:38.510] [DEBUG] QUERY OK source="address" db=0.9ms queue=0.5ms idle=45.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 07:56:38.510] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 07:56:38.539] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 07:56:38.620] [DEBUG] QUERY OK db=52.9ms queue=2.1ms idle=57.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`template_id`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "5faad7f1e963054400405816c5723b5a6cc3eca98d306d7560afcd884e80f01f", 1955, 938, 10, ~U[2026-08-21 07:56:38Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", ...}, "full", "missing_version", "1.0.0", ~N[2026-08-21 07:56:38], ~N[2026-08-21 07:56:38]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 07:56:38.621] [INFO ] AutoPushService: Created push log 48413 for MF919 params.zip [2026-08-21 07:56:38.628] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1955, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 07:56:38.628] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:56:38.641] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 07:56:38.669] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=4.6ms idle=153.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-08-21 07:56:38.693] [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-08-21 07:56:38.726] [DEBUG] QUERY OK db=30.7ms queue=1.2ms idle=84.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "af244e376c52b69f2a0959785b4ae9031ff1f8b54dc9a29408cf75c71671ba13", 2115, 17947, ~U[2026-08-21 07:56:38Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 07:56:38], ~N[2026-08-21 07:56:38]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 07:56:38.726] [INFO ] AutoPushService: Created push log 48414 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 07:56:38.726] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2115, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 07:56:38.747] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 07:56:38.747] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 07:56:38.757] [DEBUG] QUERY OK source="config_file_versions" db=3.3ms queue=5.6ms idle=78.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-08-21 07:56:38.774] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 07:56:38.789] [DEBUG] QUERY OK source="tms_terminals" db=12.6ms idle=50.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 07:56:38.789] [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-08-21 07:56:39.033] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 07:56:39.033] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:56:39.034] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 07:56:39.036] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms idle=246.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-08-21 07:56:39.036] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:56:39.037] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 07:56:39.038] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=0.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 07:56:39.114] [DEBUG] QUERY OK source="tms_terminals" db=34.5ms queue=41.0ms idle=1.7ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 07:56:39], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 07:56:39.114] [INFO ] Terminal updated: 98251226730001 [2026-08-21 07:56:39.116] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 07:56:39.116] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 07:56:39.116] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 07:56:39.114] [INFO ] Event published: terminal_updated [2026-08-21 07:56:39.168] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.2ms queue=1.5ms idle=126.9ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 07:56:39], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 07:56:39.175] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms queue=1.3ms idle=57.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 07:56:39.193] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms queue=2.7ms idle=13.7ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 07:56:39.193] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 07:56:39.203] [DEBUG] QUERY OK source="tms_terminals" db=27.8ms queue=3.7ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 07:56:39], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 07:56:39.206] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.7ms idle=12.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 07:56:39.207] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=3.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 07:56:39.209] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=0.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-08-21 07:56:39.209] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 07:56:39.300] [DEBUG] QUERY OK source="parameter_push_logs" db=78.5ms queue=0.9ms idle=11.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-08-21 07:26:39]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 07:56:39.300] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 07:56:39.300] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 07:56:39.302] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 07:56:39.304] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms idle=2.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 07:56:39.305] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 07:56:39.312] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=9.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 07:56:39.392] [DEBUG] QUERY OK source="tms_terminals" db=38.8ms queue=41.3ms idle=7.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 07:56:39], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 07:56:39.427] [DEBUG] QUERY OK db=33.3ms queue=1.0ms idle=80.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T07:56:38Z", ~N[2026-08-21 07:56:39], ~N[2026-08-21 07:56:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 07:56:39.427] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77137, oid: "organization_id", upload_time: "2026-08-21T07:56:38Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:39], updated_at: ~N[2026-08-21 07:56:39]} [2026-08-21 07:56:39.427] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T07:56:38Z", "value" => "online"} [2026-08-21 07:56:39.483] [DEBUG] QUERY OK db=53.4ms queue=1.5ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T07:56:38Z", "online", "status", 77137, ~N[2026-08-21 07:56:39], ~N[2026-08-21 07:56:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:39.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783143, itemkey: "status", value: "online", timestamp: "2026-08-21T07:56:38Z", message: "Terminal status update", status_log_id: 77137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:39], updated_at: ~N[2026-08-21 07:56:39]}} [2026-08-21 07:56:39.483] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 07:56:39.483] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T07:56:38Z", "value" => "26"} [2026-08-21 07:56:39.515] [DEBUG] QUERY OK db=29.6ms queue=1.3ms idle=56.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T07:56:38Z", "26", "battery", 77137, ~N[2026-08-21 07:56:39], ~N[2026-08-21 07:56:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:39.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783144, itemkey: "battery", value: "26", timestamp: "2026-08-21T07:56:38Z", message: "Battery level", status_log_id: 77137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:39], updated_at: ~N[2026-08-21 07:56:39]}} [2026-08-21 07:56:39.515] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T07:56:38Z", "value" => "online"} [2026-08-21 07:56:39.553] [DEBUG] QUERY OK db=37.2ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T07:56:38Z", "online", "network", 77137, ~N[2026-08-21 07:56:39], ~N[2026-08-21 07:56:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:39.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783145, itemkey: "network", value: "online", timestamp: "2026-08-21T07:56:38Z", message: "Network connectivity", status_log_id: 77137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:39], updated_at: ~N[2026-08-21 07:56:39]}} [2026-08-21 07:56:39.553] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 07:56:39.554] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T07:56:38Z", "value" => "0"} [2026-08-21 07:56:39.586] [DEBUG] QUERY OK db=32.6ms 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-08-21T07:56:38Z", "0", "cpu", 77137, ~N[2026-08-21 07:56:39], ~N[2026-08-21 07:56:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:39.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783146, itemkey: "cpu", value: "0", timestamp: "2026-08-21T07:56:38Z", message: "CPU usage percentage", status_log_id: 77137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:39], updated_at: ~N[2026-08-21 07:56:39]}} [2026-08-21 07:56:39.591] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T07:56:38Z", "value" => "1.0.0"} [2026-08-21 07:56:39.649] [DEBUG] QUERY OK db=56.9ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T07:56:38Z", "1.0.0", "parameter_config", 77137, ~N[2026-08-21 07:56:39], ~N[2026-08-21 07:56:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:39.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783147, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T07:56:38Z", message: "Current parameters version", status_log_id: 77137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:39], updated_at: ~N[2026-08-21 07:56:39]}} [2026-08-21 07:56:39.654] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T07:56:38Z", "value" => "1.0.1"} [2026-08-21 07:56:39.707] [DEBUG] QUERY OK db=53.0ms queue=0.1ms idle=67.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T07:56:38Z", "1.0.1", "emv_config", 77137, ~N[2026-08-21 07:56:39], ~N[2026-08-21 07:56:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:39.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783148, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T07:56:38Z", message: "Current EMV config version", status_log_id: 77137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:39], updated_at: ~N[2026-08-21 07:56:39]}} [2026-08-21 07:56:39.708] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T07:56:38Z", "value" => ""} [2026-08-21 07:56:39.806] [DEBUG] QUERY OK db=96.9ms queue=1.2ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T07:56:38Z", "keys_config", 77137, ~N[2026-08-21 07:56:39], ~N[2026-08-21 07:56:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:39.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783149, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T07:56:38Z", message: "Current keys config version", status_log_id: 77137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:39], updated_at: ~N[2026-08-21 07:56:39]}} [2026-08-21 07:56:39.807] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T07:56:38Z", "value" => "3.8.7.3"} [2026-08-21 07:56:39.861] [DEBUG] QUERY OK db=54.1ms idle=100.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T07:56:38Z", "3.8.7.3", "application", 77137, ~N[2026-08-21 07:56:39], ~N[2026-08-21 07:56:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 07:56:39.862] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 783150, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T07:56:38Z", message: "Current application version", status_log_id: 77137, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 07:56:39], updated_at: ~N[2026-08-21 07:56:39]}} [2026-08-21 07:56:39.877] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T07:56:38Z"} [2026-08-21 07:56:39.877] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T07:56:38Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 3, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 07:56:44.879] [INFO ] [Ysp.Scheduler] Started. SFTP in 19h 3m, MIS in 0h 3m [2026-08-21 07:56:45.029] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 07:56:45.098] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 07:56:47.262] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 07:56:47.263] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 07:56:47.264] [INFO ] Building initial filter cache... [2026-08-21 07:56:47.295] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms queue=0.6ms idle=1034.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-08-21 07:56:47.309] [DEBUG] QUERY OK source="filter_usage" db=0.5ms queue=0.4ms idle=59.1ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 07:56:47.310] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 07:56:47.394] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:47.476] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 07:56:47.490] [ERROR] Socket closed before we handed it to the receiver [2026-08-21 07:56:47.490] [INFO ] Device phoenix_client_tms_apps_1 disconnected [2026-08-21 07:56:47.509] [DEBUG] QUERY OK source="core_transactions" db=6.8ms queue=0.4ms idle=217.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21], "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:56:47.515] [DEBUG] QUERY OK source="core_transactions" db=2.5ms queue=2.6ms idle=200.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:56:47.549] [DEBUG] QUERY OK source="tid_masters" db=1.1ms queue=24.6ms idle=17.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?,?,?)) ["TESTMID_FULL", "TESTMID_SEED", "419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:56:47.555] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms queue=0.6ms idle=38.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:57:52.713] [INFO ] GET /admin/settlements/summary [2026-08-21 07:57:52.733] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 07:57:52.766] [DEBUG] QUERY OK source="users_tokens" db=1.0ms idle=1906.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)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:57:52.753790Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 07:57:52.788] [DEBUG] QUERY OK source="core_transactions" db=1.1ms queue=0.1ms idle=933.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:57:52.796] [DEBUG] QUERY OK source="tid_masters" db=1.0ms queue=1.0ms idle=288.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:57:52.805] [DEBUG] QUERY OK source="core_transactions" db=1.2ms queue=1.4ms idle=13.7ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:57:52.839] [DEBUG] QUERY OK source="core_transactions" db=33.5ms idle=8.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:57:52.847] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=6.7ms idle=34.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:57:52.854] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms queue=0.4ms idle=13.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:57:52.878] [INFO ] Sent 200 in 165ms [2026-08-21 07:57:55.024] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "NzdSJBoRNiExAkJVRiMcIhUGFAZrVjQxYnjfnPoKKi46sRnsdRrTSeNU", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 07:57:55.275] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "nY8BtAYjzkvc5qrQqTfR83zd", "live_socket_id" => "users_sessions:_gyWJnb72cBNLoly6C0mOch11oXZNsn0EVBfto7MVeo=", "user_token" => <<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>} [2026-08-21 07:57:55.276] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=1415.7ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:57:55.275248Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 07:57:55.277] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=763.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:57:55.278] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.4ms idle=422.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:57:55.280] [DEBUG] QUERY OK source="core_transactions" db=0.6ms queue=0.9ms idle=1.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:57:55.321] [DEBUG] QUERY OK source="core_transactions" db=41.1ms idle=2.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:57:55.324] [DEBUG] QUERY OK source="tid_masters" db=1.0ms queue=1.3ms idle=41.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:57:55.326] [DEBUG] QUERY OK source="merchant_adjustments" db=0.7ms queue=0.4ms idle=3.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:57:55.326] [DEBUG] Replied in 51ms [2026-08-21 07:58:01.680] [DEBUG] HANDLE EVENT "toggle_type_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:58:01.681] [DEBUG] Replied in 218µs [2026-08-21 07:58:02.994] [DEBUG] HANDLE EVENT "toggle_type_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:58:02.995] [DEBUG] Replied in 192µs [2026-08-21 07:58:10.161] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mids" => ["", ""], "_unused_scheme_names" => ["", "", "", "", "", "", "", ""], "_unused_transaction_types" => ["", "", ""], "date_from" => "2026-06-22", "date_to" => "2026-08-21", "merchant_mids" => ["425590250000000", "419926360000000"], "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:58:10.162] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=585.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-06-22], ~D[2026-08-21], ~D[2026-06-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:58:10.163] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.4ms idle=308.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:58:10.165] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.3ms idle=1.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-06-22], ~D[2026-08-21], ~D[2026-06-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:58:10.207] [DEBUG] QUERY OK source="core_transactions" db=41.6ms idle=1.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-06-22], ~D[2026-08-21], ~D[2026-06-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:58:10.209] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.7ms idle=42.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:58:10.210] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=0.3ms idle=2.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-06-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:58:10.210] [DEBUG] Replied in 49ms [2026-08-21 07:58:11.012] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mids" => ["", ""], "_unused_scheme_names" => ["", "", "", "", "", "", "", ""], "_unused_transaction_types" => ["", "", ""], "date_from" => "2026-05-22", "date_to" => "2026-08-21", "merchant_mids" => ["425590250000000", "419926360000000"], "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:58:11.013] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=595.2ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-22], ~D[2026-08-21], ~D[2026-05-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:58:11.014] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.5ms idle=433.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:58:11.017] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=1.0ms idle=1.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-05-22], ~D[2026-08-21], ~D[2026-05-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:58:11.056] [DEBUG] QUERY OK source="core_transactions" db=38.7ms idle=2.5ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-22], ~D[2026-08-21], ~D[2026-05-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:58:11.058] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=1.2ms idle=39.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:58:11.060] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=0.8ms idle=2.7ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-05-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:58:11.060] [DEBUG] Replied in 48ms [2026-08-21 07:58:12.796] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["date_from"], "_unused_date_to" => "", "_unused_merchant_mids" => ["", ""], "_unused_scheme_names" => ["", "", "", "", "", "", "", ""], "_unused_transaction_types" => ["", "", ""], "date_from" => "2026-05-01", "date_to" => "2026-08-21", "merchant_mids" => ["425590250000000", "419926360000000"], "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:58:12.798] [DEBUG] QUERY OK source="core_transactions" db=1.5ms queue=0.1ms idle=1211.2ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:58:12.801] [DEBUG] QUERY OK source="tid_masters" db=1.1ms queue=0.8ms idle=208.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?,?,?)) ["TESTMID_FULL", "TESTMID_SEED", "419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:58:12.803] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=0.6ms idle=3.7ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?,?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21], "425590250000000", "419926360000000", "TESTMID_FULL", "TESTMID_SEED", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:58:12.844] [DEBUG] QUERY OK source="core_transactions" db=39.9ms idle=2.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:58:12.846] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.8ms idle=40.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?,?,?)) ["TESTMID_FULL", "TESTMID_SEED", "419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:58:12.848] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=1.5ms idle=2.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?,?,?)) [~D[2026-05-01], ~D[2026-08-21], "425590250000000", "419926360000000", "TESTMID_FULL", "TESTMID_SEED"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:58:12.848] [DEBUG] Replied in 52ms [2026-08-21 07:58:19.142] [DEBUG] HANDLE EVENT "toggle_type_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:58:19.142] [DEBUG] Replied in 172µs [2026-08-21 07:58:20.256] [DEBUG] HANDLE EVENT "toggle_type_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:58:20.256] [DEBUG] Replied in 178µs [2026-08-21 07:58:32.051] [INFO ] GET /api/v1/settlements/summary/download_pdf [2026-08-21 07:58:32.052] [DEBUG] Processing with PlatformWeb.SettlementSummaryController.download_pdf/2 Parameters: %{"date_from" => "2026-05-01", "date_to" => "2026-08-21", "merchant_mids" => ["425590250000000", "419926360000000", "TESTMID_FULL", "TESTMID_SEED"], "schemes" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} Pipelines: [:api] [2026-08-21 07:58:32.059] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=1.2ms idle=401.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?,?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21], "425590250000000", "419926360000000", "TESTMID_FULL", "TESTMID_SEED", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:58:32.060] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=0.3ms idle=202.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-05-01], ~D[2026-08-21], ~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:58:32.102] [DEBUG] QUERY OK source="tid_masters" db=2.2ms queue=38.9ms idle=2.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?,?,?)) ["TESTMID_FULL", "TESTMID_SEED", "419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:58:32.104] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms queue=0.5ms idle=42.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?,?,?)) [~D[2026-05-01], ~D[2026-08-21], "425590250000000", "419926360000000", "TESTMID_FULL", "TESTMID_SEED"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:58:32.107] [INFO ] [EmailPdfGenerator] Rendering settlement_summary_pdf to PDF: Settlement_Summary_2026-05-01_to_2026-08-21.pdf [2026-08-21 07:58:32.111] [INFO ] [EmailPdfGenerator] ✓ HTML rendered, size: 5752 bytes [2026-08-21 07:58:32.113] [INFO ] [EmailPdfGenerator] ✓ HTML written to /tmp/platform_web_pdf_4387/document.html [2026-08-21 07:58:32.115] [INFO ] [EmailPdfGenerator] Using wkhtmltopdf [2026-08-21 07:58:32.625] [INFO ] [EmailPdfGenerator] ✓ PDF rendered successfully, size: 20880 bytes [2026-08-21 07:58:32.626] [INFO ] Sent 200 in 575ms [2026-08-21 07:58:56.632] [INFO ] GET /admin/settlements/summary [2026-08-21 07:58:56.633] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 07:58:56.636] [DEBUG] QUERY OK source="users_tokens" db=0.7ms queue=0.3ms idle=1774.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)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:58:56.633292Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 07:58:56.643] [DEBUG] QUERY OK source="core_transactions" db=4.3ms idle=899.2ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:58:56.650] [DEBUG] QUERY OK source="tid_masters" db=1.5ms queue=2.4ms idle=788.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:58:56.655] [DEBUG] QUERY OK source="core_transactions" db=2.0ms queue=2.6ms idle=8.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:58:56.691] [DEBUG] QUERY OK source="core_transactions" db=35.3ms idle=5.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:58:56.696] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=4.0ms idle=36.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:58:56.699] [DEBUG] QUERY OK source="merchant_adjustments" db=1.7ms queue=1.1ms idle=5.7ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:58:56.702] [INFO ] Sent 200 in 69ms [2026-08-21 07:58:58.600] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Nhh1JjxxHjoQISUXYD87YghnFX9BejkGXAMdH0GPjJStUNI3y3s-yICb", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 07:58:58.791] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "nY8BtAYjzkvc5qrQqTfR83zd", "live_socket_id" => "users_sessions:_gyWJnb72cBNLoly6C0mOch11oXZNsn0EVBfto7MVeo=", "user_token" => <<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>} [2026-08-21 07:58:58.793] [DEBUG] QUERY OK source="users_tokens" db=0.6ms queue=0.7ms idle=931.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)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 07:58:58.792024Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 07:58:58.795] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=936.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:58:58.797] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.6ms idle=47.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:58:58.799] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=0.8ms idle=2.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:58:58.838] [DEBUG] QUERY OK source="core_transactions" db=38.4ms idle=2.5ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:58:58.840] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.5ms idle=39.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:58:58.842] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=0.5ms idle=2.7ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:58:58.842] [DEBUG] Replied in 50ms [2026-08-21 07:58:59.886] [DEBUG] HANDLE EVENT "toggle_merchant_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:58:59.886] [DEBUG] Replied in 210µs [2026-08-21 07:59:02.527] [DEBUG] HANDLE EVENT "filter" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"_target" => ["merchant_mids"], "_unused_date_from" => "", "_unused_date_to" => "", "_unused_scheme_names" => ["", "", "", "", "", "", "", ""], "_unused_transaction_types" => ["", "", ""], "date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mids" => ["419926360000000"], "scheme_names" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} [2026-08-21 07:59:02.531] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=1.9ms idle=769.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:59:02.532] [DEBUG] QUERY OK source="core_transactions" db=0.9ms idle=673.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:59:02.576] [DEBUG] QUERY OK source="tid_masters" db=0.9ms queue=38.8ms idle=5.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:59:02.582] [DEBUG] QUERY OK source="merchant_adjustments" db=3.0ms queue=2.7ms idle=44.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?)) [~D[2026-07-22], ~D[2026-08-21], "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:59:02.583] [DEBUG] Replied in 55ms [2026-08-21 07:59:04.068] [DEBUG] HANDLE EVENT "close_merchant_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:59:04.068] [DEBUG] Replied in 261µs [2026-08-21 07:59:06.536] [DEBUG] HANDLE EVENT "toggle_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:59:06.536] [DEBUG] Replied in 169µs [2026-08-21 07:59:10.580] [DEBUG] HANDLE EVENT "close_scheme_dropdown" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} [2026-08-21 07:59:10.580] [DEBUG] Replied in 258µs [2026-08-21 07:59:20.566] [INFO ] GET /api/v1/settlements/summary/download_pdf [2026-08-21 07:59:20.566] [DEBUG] Processing with PlatformWeb.SettlementSummaryController.download_pdf/2 Parameters: %{"date_from" => "2026-07-22", "date_to" => "2026-08-21", "merchant_mids" => ["419926360000000"], "schemes" => ["MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY"], "transaction_types" => ["SALE", "REFUND", "REVERSAL"]} Pipelines: [:api] [2026-08-21 07:59:20.568] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=0.7ms idle=724.7ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 07:59:20.569] [DEBUG] QUERY OK source="core_transactions" db=0.5ms idle=706.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 07:59:20.612] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=41.5ms idle=1.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 07:59:20.613] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=0.3ms idle=42.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?)) [~D[2026-07-22], ~D[2026-08-21], "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 07:59:20.613] [INFO ] [EmailPdfGenerator] Rendering settlement_summary_pdf to PDF: Settlement_Summary_2026-07-22_to_2026-08-21.pdf [2026-08-21 07:59:20.614] [INFO ] [EmailPdfGenerator] ✓ HTML rendered, size: 5090 bytes [2026-08-21 07:59:20.615] [INFO ] [EmailPdfGenerator] ✓ HTML written to /tmp/platform_web_pdf_3460/document.html [2026-08-21 07:59:20.616] [INFO ] [EmailPdfGenerator] Using wkhtmltopdf [2026-08-21 07:59:21.260] [INFO ] [EmailPdfGenerator] ✓ PDF rendered successfully, size: 21356 bytes [2026-08-21 07:59:21.262] [INFO ] Sent 200 in 696ms [2026-08-21 08:00:00.166] [INFO ] [Ysp.Scheduler] 07:00 AM — enqueuing Settlement MIS generation for yesterday [2026-08-21 08:00:00.232] [INFO ] [Ysp.Scheduler] Next MIS generation in 24h 0m [2026-08-21 08:00:00.345] [INFO ] [MisGenerationWorker] Generating MIS date=2026-08-20 channel=COMBINED [2026-08-21 08:00:00.372] [DEBUG] QUERY OK source="settlement_mis" db=1.3ms queue=5.1ms idle=133.3ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`mis_date` = ?) [~D[2026-08-20]] ↳ SettlementCore.SettlementMisGenerator.generate_for_date/2, at: lib/settlement_core/settlement_mis_generator.ex:60 [2026-08-21 08:00:00.372] [INFO ] [MisGenerator] Generating MIS for 2026-08-20 / COMBINED [2026-08-21 08:00:00.375] [DEBUG] QUERY OK source="core_transactions" db=1.2ms queue=1.2ms idle=32.9ms SELECT c0.`merchant_mid`, c0.`merchant_id`, c0.`card_type_code`, c0.`scheme_name`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`), sum(c0.`net_settlement_amount`) FROM `core_transactions` AS c0 WHERE ((c0.`switch_settled_date` = ?) OR (c0.`released_for_settlement_date` = ?)) AND (c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE) AND (c0.`chargeback_hold` = FALSE) AND (c0.`exception_type` IS NULL) AND (DATE(c0.`transaction_datetime`) >= ?) GROUP BY c0.`merchant_mid`, c0.`merchant_id`, c0.`card_type_code`, c0.`scheme_name` [~D[2026-08-20], ~D[2026-08-20], ~D[2026-07-21]] ↳ SettlementCore.SettlementMisGenerator.do_generate/2, at: lib/settlement_core/settlement_mis_generator.ex:107 [2026-08-21 08:00:00.378] [DEBUG] QUERY OK source="merchant_adjustments" db=1.2ms queue=1.2ms idle=3.7ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND ((m0.`approval_status` = 'approved') OR (m0.`status` = 'applied')) [~D[2026-08-20]] ↳ SettlementCore.SettlementMisGenerator.do_generate/2, at: lib/settlement_core/settlement_mis_generator.ex:110 [2026-08-21 08:00:00.378] [WARN ] [MisGenerator] No eligible settlement items for 2026-08-20 / COMBINED; MIS will not be created [2026-08-21 08:00:00.378] [ERROR] [MisGenerationWorker] MIS generation failed for 2026-08-20/COMBINED: :no_eligible_settlement_items [2026-08-21 08:00:00.946] [INFO ] [Ysp.Scheduler] 07:00 AM — enqueuing Settlement MIS generation for yesterday [2026-08-21 08:00:00.959] [INFO ] [Ysp.Scheduler] Next MIS generation in 24h 0m [2026-08-21 08:00:13.108] [INFO ] Running offline device check... [2026-08-21 08:00:13.108] [INFO ] Starting offline device check... [2026-08-21 08:00:13.111] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=1.4ms idle=868.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:00:13.121] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.9ms queue=0.6ms idle=268.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:00:13.128] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms idle=10.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.132] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=7.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.134] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.135] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.135] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.136] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.136] [INFO ] Starting scheduled rule validation [2026-08-21 08:00:13.136] [DEBUG] Validating missing assignments [2026-08-21 08:00:13.137] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.139] [DEBUG] QUERY OK source="terminal_group_rules" db=2.5ms idle=0.8ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-08-21 08:00:13.140] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 08:00:13.143] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.148] [DEBUG] QUERY OK source="tms_terminals" db=8.8ms 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-08-21 08:00:13.153] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.8ms queue=1.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.155] [DEBUG] Re-applied 0 rules during validation [2026-08-21 08:00:13.155] [DEBUG] Validating invalid assignments [2026-08-21 08:00:13.155] [DEBUG] Validating rule consistency [2026-08-21 08:00:13.155] [DEBUG] Updating group terminal counts [2026-08-21 08:00:13.155] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.164] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms queue=0.7ms idle=7.0ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-08-21 08:00:13.165] [DEBUG] QUERY OK source="terminal_groups" db=0.2ms 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-08-21 08:00:13.170] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms queue=0.4ms idle=4.2ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-08-21 08:00:13.171] [DEBUG] QUERY OK source="terminal_group_rules" db=0.1ms queue=0.5ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:258 [2026-08-21 08:00:13.171] [DEBUG] QUERY OK source="terminal_group_rules" db=0.2ms queue=0.2ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:259 [2026-08-21 08:00:13.173] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.7ms queue=0.5ms 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-08-21 08:00:13.174] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms queue=0.8ms idle=0.1ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:262 [2026-08-21 08:00:13.179] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.9ms queue=1.1ms idle=0.4ms SELECT t0.`assignment_type`, count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) GROUP BY t0.`assignment_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:269 [2026-08-21 08:00:13.179] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-08-21 08:00:13.179] [INFO ] Rule validation completed - applied 0 fixes [2026-08-21 08:00:13.181] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.9ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.187] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.190] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=0.8ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.191] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.192] [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-08-21 08:00:13.212] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.4ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.214] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=20.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.216] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.217] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.219] [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-08-21 08:00:13.220] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.257] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=36.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.259] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.1ms idle=37.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.261] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.269] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.9ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.270] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.274] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.278] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.279] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.284] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.285] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.286] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.288] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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-08-21 08:00:13.289] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.291] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.292] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.292] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.293] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.295] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.297] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.299] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.5ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.300] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.301] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.302] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.303] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.304] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.305] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.306] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.308] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.309] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:13.309] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:00:13.309] [INFO ] Offline device check completed successfully [2026-08-21 08:00:38.233] [INFO ] [MisGenerationWorker] Generating MIS date=2026-08-20 channel=COMBINED [2026-08-21 08:00:38.234] [DEBUG] QUERY OK source="settlement_mis" db=0.4ms queue=0.1ms idle=96.8ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`mis_date` = ?) [~D[2026-08-20]] ↳ SettlementCore.SettlementMisGenerator.generate_for_date/2, at: lib/settlement_core/settlement_mis_generator.ex:60 [2026-08-21 08:00:38.234] [INFO ] [MisGenerator] Generating MIS for 2026-08-20 / COMBINED [2026-08-21 08:00:38.235] [DEBUG] QUERY OK source="core_transactions" db=0.5ms idle=1.7ms SELECT c0.`merchant_mid`, c0.`merchant_id`, c0.`card_type_code`, c0.`scheme_name`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`), sum(c0.`net_settlement_amount`) FROM `core_transactions` AS c0 WHERE ((c0.`switch_settled_date` = ?) OR (c0.`released_for_settlement_date` = ?)) AND (c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE) AND (c0.`chargeback_hold` = FALSE) AND (c0.`exception_type` IS NULL) AND (DATE(c0.`transaction_datetime`) >= ?) GROUP BY c0.`merchant_mid`, c0.`merchant_id`, c0.`card_type_code`, c0.`scheme_name` [~D[2026-08-20], ~D[2026-08-20], ~D[2026-07-21]] ↳ SettlementCore.SettlementMisGenerator.do_generate/2, at: lib/settlement_core/settlement_mis_generator.ex:107 [2026-08-21 08:00:38.236] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms idle=1.5ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND ((m0.`approval_status` = 'approved') OR (m0.`status` = 'applied')) [~D[2026-08-20]] ↳ SettlementCore.SettlementMisGenerator.do_generate/2, at: lib/settlement_core/settlement_mis_generator.ex:110 [2026-08-21 08:00:38.236] [WARN ] [MisGenerator] No eligible settlement items for 2026-08-20 / COMBINED; MIS will not be created [2026-08-21 08:00:38.236] [ERROR] [MisGenerationWorker] MIS generation failed for 2026-08-20/COMBINED: :no_eligible_settlement_items [2026-08-21 08:00:44.732] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 08:00:44.733] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=578.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-08-21 08:00:44.735] [DEBUG] QUERY OK source="filter_usage" db=1.3ms idle=535.1ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 08:00:44.735] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 08:00:45.449] [INFO ] Running offline device check... [2026-08-21 08:00:45.449] [INFO ] Starting offline device check... [2026-08-21 08:00:45.450] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.1ms idle=714.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-08-21 08:00:45.459] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms idle=295.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:00:45.464] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms 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-08-21 08:00:45.466] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=5.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.467] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.467] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.468] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.469] [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-08-21 08:00:45.469] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.470] [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-08-21 08:00:45.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.476] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.477] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.495] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.501] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms idle=18.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.503] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms 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-08-21 08:00:45.504] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.504] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.522] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.524] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.1ms idle=18.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.525] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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-08-21 08:00:45.527] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.529] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.530] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.566] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=35.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.567] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=36.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:00:45.568] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.575] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms queue=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.575] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.577] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.578] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.580] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.584] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.585] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.586] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.587] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.588] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.590] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.591] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.591] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.592] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.593] [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-08-21 08:00:45.594] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.595] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.597] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.5ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.599] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.601] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.6ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.602] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.603] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.603] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.604] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.605] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.606] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:00:45.606] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:00:45.606] [INFO ] Offline device check completed successfully [2026-08-21 08:00:57.825] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 08:05:13.310] [INFO ] Running offline device check... [2026-08-21 08:05:13.310] [INFO ] Starting offline device check... [2026-08-21 08:05:13.311] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1401.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-08-21 08:05:13.320] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.1ms idle=401.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:05:13.326] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms idle=8.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.327] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=6.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.328] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.329] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.330] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.330] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.331] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.332] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.333] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.337] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.338] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.3ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.350] [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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.355] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms idle=11.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.360] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.361] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=5.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.362] [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-08-21 08:05:13.379] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.381] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=17.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.383] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.384] [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-08-21 08:05:13.386] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.386] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.427] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=39.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.428] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=40.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:05:13.429] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.436] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.436] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=6.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.439] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.439] [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-08-21 08:05:13.440] [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-08-21 08:05:13.444] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.444] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.445] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.446] [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-08-21 08:05:13.447] [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-08-21 08:05:13.449] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.449] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.450] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.451] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.452] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.453] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.459] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.460] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.461] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.462] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.463] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.464] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.464] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.465] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.466] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.467] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:13.467] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:05:13.467] [INFO ] Offline device check completed successfully [2026-08-21 08:05:45.607] [INFO ] Running offline device check... [2026-08-21 08:05:45.607] [INFO ] Starting offline device check... [2026-08-21 08:05:45.611] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=963.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:05:45.622] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.8ms idle=449.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:05:45.631] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.632] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.633] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.634] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.635] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.636] [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-08-21 08:05:45.636] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.638] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.640] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.646] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.648] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.667] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.672] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms queue=0.1ms idle=19.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:05:45.674] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=5.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.675] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.676] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.695] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.697] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.698] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.700] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.701] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 08:05:45.702] [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-08-21 08:05:45.739] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=36.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.740] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=37.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.741] [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-08-21 08:05:45.747] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.748] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.751] [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-08-21 08:05:45.753] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.753] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.757] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.758] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.759] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.760] [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-08-21 08:05:45.761] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.763] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.763] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.764] [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-08-21 08:05:45.764] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.765] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.766] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.768] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.769] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.770] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.770] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.771] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.772] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.772] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.773] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.774] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.774] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:05:45.774] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:05:45.775] [INFO ] Offline device check completed successfully [2026-08-21 08:10:13.134] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 08:10:13.135] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=257.7ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 08:10:13.137] [DEBUG] QUERY OK source="filter_usage" db=0.9ms idle=211.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-08-21 08:10:13.137] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 08:10:13.467] [INFO ] Running offline device check... [2026-08-21 08:10:13.467] [INFO ] Starting offline device check... [2026-08-21 08:10:13.468] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=332.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:10:13.476] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms queue=0.2ms idle=333.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:10:13.481] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=8.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.483] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.484] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.484] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.485] [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-08-21 08:10:13.486] [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-08-21 08:10:13.486] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.487] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.489] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.493] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.494] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.507] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.512] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.514] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=5.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.515] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.515] [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-08-21 08:10:13.533] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.534] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=18.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.535] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.537] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.539] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.540] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.575] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=34.8ms 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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.576] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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-08-21 08:10:13.577] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.585] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.586] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=8.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.588] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.589] [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-08-21 08:10:13.590] [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-08-21 08:10:13.594] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.595] [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-08-21 08:10:13.595] [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-08-21 08:10:13.596] [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-08-21 08:10:13.597] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.598] [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-08-21 08:10:13.599] [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-08-21 08:10:13.599] [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-08-21 08:10:13.600] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.601] [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-08-21 08:10:13.602] [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-08-21 08:10:13.603] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.603] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.604] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.605] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.606] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.607] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.608] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.609] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.609] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.610] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:13.610] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:10:13.610] [INFO ] Offline device check completed successfully [2026-08-21 08:10:45.776] [INFO ] Running offline device check... [2026-08-21 08:10:45.776] [INFO ] Starting offline device check... [2026-08-21 08:10:45.777] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=683.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-08-21 08:10:45.785] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.1ms idle=463.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:10:45.791] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms queue=0.1ms idle=8.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.792] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.793] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.794] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.795] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.796] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.796] [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-08-21 08:10:45.797] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.803] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.804] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 08:10:45.816] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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-08-21 08:10:45.821] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=13.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.823] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.824] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.825] [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-08-21 08:10:45.845] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.847] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=20.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:10:45.849] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.850] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.853] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.853] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.890] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=35.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.891] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=36.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.892] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.898] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.899] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=6.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.903] [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-08-21 08:10:45.904] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.907] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.908] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.909] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.910] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.911] [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-08-21 08:10:45.915] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=5.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.918] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.918] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.919] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.920] [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-08-21 08:10:45.921] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.922] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.923] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.924] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.925] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.926] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.926] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.927] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.928] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.929] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:10:45.929] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:10:45.929] [INFO ] Offline device check completed successfully [2026-08-21 08:15:01.291] [INFO ] [SlaMonitorWorker] Running at hour=8 checking settlement_date=2026-08-20 [2026-08-21 08:15:01.294] [DEBUG] QUERY OK source="settlement_mis" db=0.3ms queue=1.8ms idle=103.4ms SELECT TRUE FROM `settlement_mis` AS s0 WHERE (s0.`mis_date` = ?) AND (s0.`approval_status` = 'approved') LIMIT 1 [~D[2026-08-20]] ↳ SettlementCore.Workers.SlaMonitorWorker.check_mis_approval_sla/1, at: lib/settlement_core/workers/sla_monitor_worker.ex:97 [2026-08-21 08:15:01.294] [WARN ] [SlaMonitorWorker] SLA BREACH: MIS not approved for 2026-08-20 [2026-08-21 08:15:13.611] [INFO ] Running offline device check... [2026-08-21 08:15:13.611] [INFO ] Starting offline device check... [2026-08-21 08:15:13.612] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=725.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:15:13.620] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms 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 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.626] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.627] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=6.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.628] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.629] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.629] [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-08-21 08:15:13.630] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.631] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.632] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.633] [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-08-21 08:15:13.639] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.640] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.652] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.657] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=11.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.659] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.659] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.660] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.677] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.678] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=16.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.679] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.681] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.682] [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-08-21 08:15:13.683] [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-08-21 08:15:13.719] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=35.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.720] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=36.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:15:13.721] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.727] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.728] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=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-08-21 08:15:13.732] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.733] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.734] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.738] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.738] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.739] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.740] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.741] [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-08-21 08:15:13.742] [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-08-21 08:15:13.743] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.744] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.744] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.745] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.746] [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-08-21 08:15:13.747] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.748] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.749] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.751] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.752] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.753] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.754] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.755] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.755] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.756] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:13.757] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:15:13.757] [INFO ] Offline device check completed successfully [2026-08-21 08:15:44.737] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 08:15:44.738] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.2ms idle=1401.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-08-21 08:15:44.739] [DEBUG] QUERY OK source="filter_usage" db=0.4ms idle=397.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-08-21 08:15:44.739] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 08:15:45.931] [INFO ] Running offline device check... [2026-08-21 08:15:45.931] [INFO ] Starting offline device check... [2026-08-21 08:15:45.933] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=586.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-08-21 08:15:45.939] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms idle=387.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:15:45.945] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:45.946] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.1ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:45.947] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:45.948] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:45.949] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:45.950] [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-08-21 08:15:45.951] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:45.951] [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-08-21 08:15:45.953] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:45.959] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:45.960] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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-08-21 08:15:45.973] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.7ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:45.979] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms queue=0.1ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:45.982] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=6.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:45.983] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:45.984] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.007] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.009] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms queue=0.1ms idle=23.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.011] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.013] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.015] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.017] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.055] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=37.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.057] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=38.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:15:46.057] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.064] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.065] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=6.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.067] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.069] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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-08-21 08:15:46.071] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.074] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.075] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.077] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.078] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.078] [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-08-21 08:15:46.080] [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-08-21 08:15:46.081] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.2ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.081] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.082] [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-08-21 08:15:46.083] [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-08-21 08:15:46.084] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.085] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.087] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.087] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.088] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.091] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.092] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.093] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:15:46.093] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:15:46.093] [INFO ] Offline device check completed successfully [2026-08-21 08:20:13.758] [INFO ] Running offline device check... [2026-08-21 08:20:13.758] [INFO ] Starting offline device check... [2026-08-21 08:20:13.760] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=866.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-08-21 08:20:13.767] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=288.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:20:13.774] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.776] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.2ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.777] [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-08-21 08:20:13.777] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.778] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.779] [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-08-21 08:20:13.780] [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-08-21 08:20:13.780] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.782] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.787] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.788] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.800] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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-08-21 08:20:13.805] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.807] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=5.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.808] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.808] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.826] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.0ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.827] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=17.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:20:13.828] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.830] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.831] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.831] [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-08-21 08:20:13.867] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=35.2ms queue=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.868] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms 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-08-21 08:20:13.869] [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-08-21 08:20:13.877] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.878] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=7.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.882] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.883] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.885] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.889] [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-08-21 08:20:13.890] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.890] [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-08-21 08:20:13.891] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.892] [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-08-21 08:20:13.894] [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-08-21 08:20:13.894] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.895] [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-08-21 08:20:13.896] [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-08-21 08:20:13.896] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.897] [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-08-21 08:20:13.898] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.899] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.900] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.901] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.902] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.903] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.904] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.906] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.907] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:13.907] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:20:13.907] [INFO ] Offline device check completed successfully [2026-08-21 08:20:46.094] [INFO ] Running offline device check... [2026-08-21 08:20:46.094] [INFO ] Starting offline device check... [2026-08-21 08:20:46.097] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=820.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:20:46.107] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.1ms idle=97.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:20:46.114] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms queue=0.2ms idle=10.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.117] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=7.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.118] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.119] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.119] [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-08-21 08:20:46.120] [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-08-21 08:20:46.121] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.122] [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-08-21 08:20:46.124] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.128] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.129] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.142] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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-08-21 08:20:46.147] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=13.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.150] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.150] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.152] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.170] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.171] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.172] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.173] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.175] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.175] [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-08-21 08:20:46.209] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=33.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-08-21 08:20:46.210] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=33.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:20:46.211] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.218] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.219] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=7.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.221] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.222] [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-08-21 08:20:46.223] [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-08-21 08:20:46.227] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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-08-21 08:20:46.228] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.229] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.230] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.231] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.233] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 08:20:46.233] [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-08-21 08:20:46.234] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.235] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.236] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.237] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.238] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.239] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.240] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.240] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.241] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.242] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.242] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.243] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.244] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.245] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:20:46.245] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:20:46.245] [INFO ] Offline device check completed successfully [2026-08-21 08:25:13.137] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 08:25:13.139] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms queue=0.1ms idle=533.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-08-21 08:25:13.142] [DEBUG] QUERY OK source="filter_usage" db=2.4ms idle=223.5ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 08:25:13.143] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 08:25:13.908] [INFO ] Running offline device check... [2026-08-21 08:25:13.908] [INFO ] Starting offline device check... [2026-08-21 08:25:13.909] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=766.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:25:13.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=304.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:25:13.921] [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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.923] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.924] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.925] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.925] [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-08-21 08:25:13.926] [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-08-21 08:25:13.926] [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-08-21 08:25:13.927] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 08:25:13.929] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.934] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.934] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.947] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.8ms queue=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.952] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=13.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.955] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.963] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.964] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.984] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.985] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=20.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.986] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.987] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:13.988] [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-08-21 08:25:13.989] [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-08-21 08:25:14.026] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=35.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.027] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=37.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:25:14.028] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.034] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.034] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.037] [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-08-21 08:25:14.038] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.039] [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-08-21 08:25:14.042] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.043] [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-08-21 08:25:14.044] [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-08-21 08:25:14.045] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.046] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.047] [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-08-21 08:25:14.048] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.049] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.049] [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-08-21 08:25:14.050] [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-08-21 08:25:14.052] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.053] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.054] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.055] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.055] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.056] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.057] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.057] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.058] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.058] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.059] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:14.059] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:25:14.059] [INFO ] Offline device check completed successfully [2026-08-21 08:25:46.246] [INFO ] Running offline device check... [2026-08-21 08:25:46.246] [INFO ] Starting offline device check... [2026-08-21 08:25:46.247] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.2ms idle=305.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:25:46.254] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms idle=35.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:25:46.260] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=8.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.262] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.262] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.263] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.264] [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-08-21 08:25:46.264] [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-08-21 08:25:46.265] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.265] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.267] [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-08-21 08:25:46.271] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.272] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.284] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.289] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=12.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.292] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.292] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.293] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.310] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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-08-21 08:25:46.311] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=17.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.313] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.315] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.316] [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-08-21 08:25:46.317] [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-08-21 08:25:46.351] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=33.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.351] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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-08-21 08:25:46.352] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.358] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.359] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.361] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.363] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.363] [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-08-21 08:25:46.367] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.367] [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-08-21 08:25:46.368] [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-08-21 08:25:46.369] [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-08-21 08:25:46.369] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.371] [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-08-21 08:25:46.372] [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-08-21 08:25:46.373] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.374] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.375] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.376] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.377] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.378] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.379] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.379] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.380] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.381] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.382] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.383] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.384] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:25:46.384] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:25:46.384] [INFO ] Offline device check completed successfully [2026-08-21 08:30:14.060] [INFO ] Running offline device check... [2026-08-21 08:30:14.061] [INFO ] Starting offline device check... [2026-08-21 08:30:14.062] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=377.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:30:14.070] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.2ms idle=131.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:30:14.075] [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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.077] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.078] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.078] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.079] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.080] [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-08-21 08:30:14.081] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.081] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.088] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=5.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.102] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.107] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=13.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.109] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.110] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.111] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.127] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.128] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=16.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.130] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.132] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.133] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.134] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.170] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=36.0ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.171] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=36.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:30:14.172] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.178] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms queue=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.180] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=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-08-21 08:30:14.182] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.183] [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-08-21 08:30:14.184] [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-08-21 08:30:14.188] [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-08-21 08:30:14.189] [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-08-21 08:30:14.189] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.191] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.191] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.193] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.194] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.194] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.196] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.196] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.197] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.198] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.199] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.200] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.201] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.202] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.203] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.203] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.204] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.205] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.206] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:14.206] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:30:14.207] [INFO ] Offline device check completed successfully [2026-08-21 08:30:44.740] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 08:30:44.741] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1586.4ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 08:30:44.742] [DEBUG] QUERY OK source="filter_usage" db=1.2ms idle=585.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-08-21 08:30:44.742] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 08:30:46.385] [INFO ] Running offline device check... [2026-08-21 08:30:46.385] [INFO ] Starting offline device check... [2026-08-21 08:30:46.386] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=426.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-08-21 08:30:46.393] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=224.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:30:46.398] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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-08-21 08:30:46.399] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=5.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.400] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.401] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.402] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.403] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.404] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.406] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.408] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.412] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.413] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.427] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.8ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.431] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms queue=0.1ms idle=13.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.435] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.436] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.439] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.457] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.8ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.458] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=18.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.460] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.462] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.463] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.464] [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-08-21 08:30:46.502] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=38.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.503] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=39.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:30:46.504] [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-08-21 08:30:46.515] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.518] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms 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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.521] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.523] [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-08-21 08:30:46.524] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.528] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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-08-21 08:30:46.529] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.530] [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-08-21 08:30:46.530] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.533] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.535] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.535] [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-08-21 08:30:46.536] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.537] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.539] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.541] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.543] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.545] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.552] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.554] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.554] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.555] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.557] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.559] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.560] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.562] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:30:46.562] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:30:46.562] [INFO ] Offline device check completed successfully [2026-08-21 08:35:14.207] [INFO ] Running offline device check... [2026-08-21 08:35:14.207] [INFO ] Starting offline device check... [2026-08-21 08:35:14.208] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=364.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:35:14.217] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.0ms idle=266.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:35:14.222] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms queue=0.1ms idle=8.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.223] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.224] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.225] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.226] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.227] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.228] [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-08-21 08:35:14.228] [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-08-21 08:35:14.230] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.235] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms queue=0.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.236] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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-08-21 08:35:14.247] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.252] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms queue=0.1ms idle=11.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.254] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.255] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.255] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.275] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.8ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.276] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=19.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.277] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.279] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.280] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.281] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.321] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=39.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-08-21 08:35:14.322] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=40.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:35:14.322] [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-08-21 08:35:14.329] [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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.330] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.332] [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-08-21 08:35:14.333] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.334] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.340] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.341] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.342] [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-08-21 08:35:14.342] [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-08-21 08:35:14.344] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.345] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.346] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.347] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.348] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.349] [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-08-21 08:35:14.350] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.350] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.351] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.352] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.352] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.353] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.354] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.355] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.355] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.356] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:14.356] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:35:14.357] [INFO ] Offline device check completed successfully [2026-08-21 08:35:46.564] [INFO ] Running offline device check... [2026-08-21 08:35:46.564] [INFO ] Starting offline device check... [2026-08-21 08:35:46.565] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=587.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:35:46.576] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.3ms queue=0.9ms idle=462.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:35:46.583] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms queue=0.1ms 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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.585] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=7.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.586] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.587] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.588] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.589] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.589] [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-08-21 08:35:46.590] [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-08-21 08:35:46.592] [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-08-21 08:35:46.597] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.597] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.611] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.616] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=13.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.619] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.620] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.620] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.641] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.642] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=20.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:35:46.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.645] [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-08-21 08:35:46.646] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.647] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.681] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=33.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.682] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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-08-21 08:35:46.683] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.689] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.690] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.692] [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-08-21 08:35:46.693] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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-08-21 08:35:46.694] [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-08-21 08:35:46.698] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.699] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.700] [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-08-21 08:35:46.701] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.703] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.704] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.704] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.705] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.706] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.707] [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-08-21 08:35:46.708] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.709] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.710] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.712] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.713] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.714] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.715] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.716] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.716] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.717] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:35:46.717] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:35:46.717] [INFO ] Offline device check completed successfully [2026-08-21 08:40:13.143] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 08:40:13.144] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=178.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-08-21 08:40:13.145] [DEBUG] QUERY OK source="filter_usage" db=0.4ms idle=91.6ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 08:40:13.145] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 08:40:14.358] [INFO ] Running offline device check... [2026-08-21 08:40:14.358] [INFO ] Starting offline device check... [2026-08-21 08:40:14.359] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1157.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:40:14.367] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms idle=304.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:40:14.373] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=8.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.375] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.376] [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-08-21 08:40:14.377] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.377] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.378] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.379] [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-08-21 08:40:14.379] [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-08-21 08:40:14.381] [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-08-21 08:40:14.386] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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-08-21 08:40:14.386] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.398] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.403] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms idle=11.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.405] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.405] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.406] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.427] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.0ms queue=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.430] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=21.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:40:14.434] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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-08-21 08:40:14.437] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.439] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.439] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.479] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=39.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.481] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=41.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:40:14.482] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.492] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.493] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.495] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.497] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.498] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.503] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.506] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.507] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.510] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.511] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.513] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.514] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.515] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.516] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.517] [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-08-21 08:40:14.518] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.520] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.520] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.521] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.523] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.525] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.526] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.527] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.529] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.530] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.531] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:14.531] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:40:14.531] [INFO ] Offline device check completed successfully [2026-08-21 08:40:46.718] [INFO ] Running offline device check... [2026-08-21 08:40:46.718] [INFO ] Starting offline device check... [2026-08-21 08:40:46.719] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1328.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:40:46.731] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.1ms idle=328.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:40:46.737] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.739] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms 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-08-21 08:40:46.740] [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-08-21 08:40:46.740] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.741] [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-08-21 08:40:46.741] [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-08-21 08:40:46.742] [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-08-21 08:40:46.743] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.744] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.749] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.750] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.768] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.774] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=18.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:40:46.776] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.777] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.778] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.796] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.0ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=18.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.799] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.800] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.802] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.803] [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-08-21 08:40:46.838] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=34.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.838] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.839] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.845] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.846] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.850] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.850] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.851] [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-08-21 08:40:46.857] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.857] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=5.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.858] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.859] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.860] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.862] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.862] [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-08-21 08:40:46.864] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.865] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.866] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.867] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.868] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.869] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.870] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.870] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.871] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.872] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.872] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.873] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.874] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.874] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:40:46.874] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:40:46.874] [INFO ] Offline device check completed successfully [2026-08-21 08:45:14.532] [INFO ] Running offline device check... [2026-08-21 08:45:14.532] [INFO ] Starting offline device check... [2026-08-21 08:45:14.535] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=884.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:45:14.542] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=318.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:45:14.548] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.550] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.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-08-21 08:45:14.552] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.552] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.553] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.554] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.555] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.555] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.557] [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-08-21 08:45:14.562] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.563] [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-08-21 08:45:14.578] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.584] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms queue=0.1ms idle=15.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.588] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.588] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.589] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.607] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.609] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.1ms 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 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.610] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.613] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms 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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.614] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.615] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.664] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=48.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.665] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=49.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:45:14.666] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.676] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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-08-21 08:45:14.679] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms 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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.683] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.685] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.688] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.693] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms queue=0.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.694] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=5.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.695] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.697] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.698] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.700] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.701] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.703] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=1.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.704] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.706] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.707] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.708] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.709] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.710] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.712] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.713] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.714] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.716] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.718] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.719] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.720] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:14.720] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:45:14.720] [INFO ] Offline device check completed successfully [2026-08-21 08:45:44.744] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 08:45:44.745] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=721.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-08-21 08:45:44.746] [DEBUG] QUERY OK source="filter_usage" db=0.4ms idle=333.1ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 08:45:44.746] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 08:45:46.875] [INFO ] Running offline device check... [2026-08-21 08:45:46.875] [INFO ] Starting offline device check... [2026-08-21 08:45:46.877] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms decode=0.4ms idle=853.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-08-21 08:45:46.884] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms idle=406.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:45:46.889] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms queue=0.1ms idle=8.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.891] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.892] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.893] [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-08-21 08:45:46.894] [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-08-21 08:45:46.894] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.895] [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-08-21 08:45:46.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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.897] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.901] [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-08-21 08:45:46.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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-08-21 08:45:46.921] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms queue=0.1ms idle=14.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.923] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.925] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.926] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.942] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.944] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=16.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.945] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.947] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.949] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.950] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.986] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=35.8ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.987] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=36.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:45:46.987] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.994] [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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.996] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:46.998] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.000] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.001] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.005] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.006] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.007] [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-08-21 08:45:47.008] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.008] [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-08-21 08:45:47.010] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.013] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.014] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.016] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.017] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.018] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.020] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.020] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.021] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.022] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.023] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.024] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.025] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.026] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.027] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.029] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:45:47.029] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:45:47.029] [INFO ] Offline device check completed successfully [2026-08-21 08:50:14.721] [INFO ] Running offline device check... [2026-08-21 08:50:14.721] [INFO ] Starting offline device check... [2026-08-21 08:50:14.722] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=618.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:50:14.729] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=412.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:50:14.735] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.737] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.738] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.738] [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-08-21 08:50:14.739] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.740] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.741] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.742] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.744] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.749] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.750] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.763] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.768] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.771] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.772] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.772] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.789] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.791] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=17.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:50:14.792] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.794] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.795] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.796] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.835] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=38.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.836] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=39.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:50:14.837] [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-08-21 08:50:14.846] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.847] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=9.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.850] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.851] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.2ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.853] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.857] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.858] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.859] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.860] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.861] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.864] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.866] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.867] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.868] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.868] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.870] [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-08-21 08:50:14.871] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.871] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.872] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.872] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.873] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.875] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.875] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.876] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.876] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.877] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:14.877] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:50:14.877] [INFO ] Offline device check completed successfully [2026-08-21 08:50:44.754] [INFO ] Starting scheduled rule validation [2026-08-21 08:50:44.754] [DEBUG] Validating missing assignments [2026-08-21 08:50:44.757] [DEBUG] QUERY OK source="terminal_group_rules" db=1.3ms idle=714.0ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-08-21 08:50:44.758] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=366.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-08-21 08:50:44.759] [DEBUG] Re-applied 0 rules during validation [2026-08-21 08:50:44.759] [DEBUG] Validating invalid assignments [2026-08-21 08:50:44.759] [DEBUG] Validating rule consistency [2026-08-21 08:50:44.759] [DEBUG] Updating group terminal counts [2026-08-21 08:50:44.760] [DEBUG] QUERY OK source="terminal_groups" db=0.8ms idle=2.3ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-08-21 08:50:44.764] [DEBUG] QUERY OK source="terminal_groups" db=3.2ms queue=0.2ms idle=2.4ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:249 [2026-08-21 08:50:44.764] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms idle=4.3ms 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-08-21 08:50:44.765] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms idle=0.8ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:258 [2026-08-21 08:50:44.766] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms idle=0.8ms 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-08-21 08:50:44.767] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms 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-08-21 08:50:44.767] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms idle=1.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-08-21 08:50:44.768] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms idle=0.7ms SELECT t0.`assignment_type`, count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) GROUP BY t0.`assignment_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:269 [2026-08-21 08:50:44.768] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-08-21 08:50:44.768] [INFO ] Rule validation completed - applied 0 fixes [2026-08-21 08:50:47.030] [INFO ] Running offline device check... [2026-08-21 08:50:47.030] [INFO ] Starting offline device check... [2026-08-21 08:50:47.031] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1537.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:50:47.039] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms idle=512.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:50:47.044] [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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.045] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.046] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.047] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.048] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.048] [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-08-21 08:50:47.049] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.049] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.051] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.056] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms queue=0.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.058] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.071] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.0ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.076] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms queue=0.1ms idle=14.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.078] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.079] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.080] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.096] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.098] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=16.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.100] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.102] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.103] [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-08-21 08:50:47.104] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.140] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=35.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.141] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=36.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.142] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.149] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.150] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.153] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.155] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.156] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.160] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.161] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.163] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.164] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.165] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.168] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.168] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.169] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.170] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.171] [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-08-21 08:50:47.173] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.174] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.175] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.175] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.176] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.177] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.177] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.178] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.179] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.179] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.180] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:50:47.180] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:50:47.180] [INFO ] Offline device check completed successfully [2026-08-21 08:55:13.146] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 08:55:13.148] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=1.2ms idle=781.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-08-21 08:55:13.150] [DEBUG] QUERY OK source="filter_usage" db=0.9ms idle=130.6ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 08:55:13.150] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 08:55:14.878] [INFO ] Running offline device check... [2026-08-21 08:55:14.878] [INFO ] Starting offline device check... [2026-08-21 08:55:14.879] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=505.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-08-21 08:55:14.887] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms idle=328.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:55:14.893] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms 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-08-21 08:55:14.894] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=6.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.895] [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-08-21 08:55:14.896] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.896] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.897] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.898] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.898] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.900] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.905] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.906] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.918] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.923] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=12.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.926] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.927] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.929] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.948] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.3ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.950] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.952] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.954] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.962] [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 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:14.963] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=8.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.001] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=37.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.003] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.4ms idle=38.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:55:15.005] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.012] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms 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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.013] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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-08-21 08:55:15.017] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.018] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.018] [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-08-21 08:55:15.023] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.024] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.025] [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-08-21 08:55:15.027] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.029] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.031] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.035] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 08:55:15.036] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.036] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.037] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.038] [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-08-21 08:55:15.039] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.042] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.042] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.046] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=2.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.047] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.050] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.050] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.053] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.054] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.055] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:15.055] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:55:15.055] [INFO ] Offline device check completed successfully [2026-08-21 08:55:47.181] [INFO ] Running offline device check... [2026-08-21 08:55:47.181] [INFO ] Starting offline device check... [2026-08-21 08:55:47.182] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=1133.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 08:55:47.189] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms idle=543.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 08:55:47.195] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.8ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.197] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.198] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.199] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.200] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.202] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.203] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.204] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.206] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.213] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.214] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=6.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.226] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.231] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=12.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.233] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.1ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.234] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.235] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.252] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.253] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.254] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.256] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.257] [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-08-21 08:55:47.258] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.292] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=34.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.293] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=34.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.294] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.300] [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-08-21 08:55:47.301] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.303] [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-08-21 08:55:47.304] [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-08-21 08:55:47.305] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.310] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.310] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.311] [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-08-21 08:55:47.312] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.313] [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-08-21 08:55:47.315] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.316] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.316] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.317] [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-08-21 08:55:47.318] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.319] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.321] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.322] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.323] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.324] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.325] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.325] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.326] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.327] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.327] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.328] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 08:55:47.328] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 08:55:47.328] [INFO ] Offline device check completed successfully [2026-08-21 09:00:13.180] [INFO ] Starting scheduled rule validation [2026-08-21 09:00:13.180] [DEBUG] Validating missing assignments [2026-08-21 09:00:13.184] [DEBUG] QUERY OK source="terminal_group_rules" db=2.9ms idle=1156.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-08-21 09:00:13.186] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=1.3ms idle=763.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-08-21 09:00:13.187] [DEBUG] Re-applied 0 rules during validation [2026-08-21 09:00:13.187] [DEBUG] Validating invalid assignments [2026-08-21 09:00:13.187] [DEBUG] Validating rule consistency [2026-08-21 09:00:13.187] [DEBUG] Updating group terminal counts [2026-08-21 09:00:13.189] [DEBUG] QUERY OK source="terminal_groups" db=0.8ms idle=4.2ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-08-21 09:00:13.189] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms idle=2.8ms 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-08-21 09:00:13.190] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms idle=0.9ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-08-21 09:00:13.191] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms idle=0.8ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:258 [2026-08-21 09:00:13.192] [DEBUG] QUERY OK source="terminal_group_rules" db=0.7ms idle=0.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-08-21 09:00:13.192] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms idle=1.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-08-21 09:00:13.193] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.7ms idle=0.7ms 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-08-21 09:00:13.194] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.2ms idle=1.1ms SELECT t0.`assignment_type`, count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) GROUP BY t0.`assignment_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:269 [2026-08-21 09:00:13.194] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-08-21 09:00:13.194] [INFO ] Rule validation completed - applied 0 fixes [2026-08-21 09:00:15.056] [INFO ] Running offline device check... [2026-08-21 09:00:15.056] [INFO ] Starting offline device check... [2026-08-21 09:00:15.058] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.1ms idle=630.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 09:00:15.065] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms idle=51.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:00:15.071] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.072] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.073] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.074] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.074] [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-08-21 09:00:15.075] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.076] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.076] [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-08-21 09:00:15.078] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.096] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.101] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=12.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.103] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.103] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.104] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.122] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.6ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.124] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.125] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.127] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.128] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.129] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.169] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=39.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.170] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=39.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:00:15.171] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.178] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.179] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=7.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.181] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.184] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.185] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.190] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.191] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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-08-21 09:00:15.192] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.193] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.194] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.196] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.196] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.197] [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-08-21 09:00:15.198] [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-08-21 09:00:15.199] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.201] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.204] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.204] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.205] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.206] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.207] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.207] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.208] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.209] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.209] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.210] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:15.210] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 09:00:15.211] [INFO ] Offline device check completed successfully [2026-08-21 09:00:44.747] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 09:00:44.748] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=683.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-08-21 09:00:44.749] [DEBUG] QUERY OK source="filter_usage" db=0.7ms idle=111.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-08-21 09:00:44.749] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 09:00:47.329] [INFO ] Running offline device check... [2026-08-21 09:00:47.329] [INFO ] Starting offline device check... [2026-08-21 09:00:47.330] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.1ms idle=894.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 09:00:47.338] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms idle=616.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:00:47.344] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.346] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.347] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.348] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.349] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.351] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.351] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.353] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.356] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.360] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms queue=0.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.361] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.372] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.378] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms 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 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.380] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.381] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.382] [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-08-21 09:00:47.399] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.402] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=17.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:00:47.403] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.406] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.409] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.409] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.469] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=58.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-08-21 09:00:47.470] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=59.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:00:47.471] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.479] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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-08-21 09:00:47.480] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=8.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.483] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.484] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.485] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.489] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.491] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.491] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.492] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.493] [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-08-21 09:00:47.495] [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-08-21 09:00:47.495] [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-08-21 09:00:47.496] [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-08-21 09:00:47.497] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.497] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.498] [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-08-21 09:00:47.500] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.500] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.502] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.503] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.504] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.505] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.506] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.506] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.507] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:00:47.507] [INFO ] Offline device check completed. Found 49 offline devices, updated 0 statuses. [2026-08-21 09:00:47.507] [INFO ] Offline device check completed successfully [2026-08-21 09:05:15.211] [INFO ] Running offline device check... [2026-08-21 09:05:15.211] [INFO ] Starting offline device check... [2026-08-21 09:05:15.213] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=701.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-08-21 09:05:15.221] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.4ms idle=174.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:05:15.226] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms 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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.228] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.228] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.229] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.230] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.231] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.232] [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-08-21 09:05:15.232] [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-08-21 09:05:15.234] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.238] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.239] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.252] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.260] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.0ms idle=12.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.305] [DEBUG] QUERY OK source="tms_terminals" db=44.0ms idle=9.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["offline", ~N[2026-08-21 09:05:15], 14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:784 [2026-08-21 09:05:15.310] [DEBUG] Device 61251020798001 remains offline. Last seen: 2026-08-21 07:03:47 [2026-08-21 09:05:15.312] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=50.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:05:15.313] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.314] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.331] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.332] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=17.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:05:15.333] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.335] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.336] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.337] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.372] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=34.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-08-21 09:05:15.373] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.374] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.382] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.383] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.386] [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-08-21 09:05:15.387] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.388] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.392] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.392] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.393] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.394] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.395] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.397] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.398] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.399] [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-08-21 09:05:15.399] [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-08-21 09:05:15.400] [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-08-21 09:05:15.401] [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-08-21 09:05:15.402] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.402] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.403] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.404] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.404] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.405] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.406] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.406] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.408] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.409] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:15.409] [INFO ] Offline device check completed. Found 50 offline devices, updated 1 statuses. [2026-08-21 09:05:15.409] [INFO ] Offline device check completed successfully [2026-08-21 09:05:47.508] [INFO ] Running offline device check... [2026-08-21 09:05:47.508] [INFO ] Starting offline device check... [2026-08-21 09:05:47.509] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=431.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 09:05:47.518] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.5ms 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 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.523] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.525] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.526] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.526] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.527] [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-08-21 09:05:47.528] [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-08-21 09:05:47.528] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.529] [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-08-21 09:05:47.531] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.535] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.536] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.548] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.556] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.9ms idle=12.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.558] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=7.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.559] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.559] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.579] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.580] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=19.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.582] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 09:05:47.584] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.586] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.587] [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-08-21 09:05:47.624] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=35.6ms queue=1.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.625] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=37.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:05:47.625] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.633] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.9ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.633] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=7.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.636] [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-08-21 09:05:47.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.638] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.641] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.642] [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-08-21 09:05:47.643] [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-08-21 09:05:47.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.644] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.646] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.646] [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-08-21 09:05:47.647] [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-08-21 09:05:47.647] [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-08-21 09:05:47.648] [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-08-21 09:05:47.649] [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-08-21 09:05:47.650] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.650] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.651] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.652] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.652] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.653] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.653] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.654] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.655] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.655] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:05:47.655] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-08-21 09:05:47.655] [INFO ] Offline device check completed successfully [2026-08-21 09:10:13.151] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 09:10:13.152] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=1088.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-08-21 09:10:13.153] [DEBUG] QUERY OK source="filter_usage" db=0.3ms idle=337.5ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 09:10:13.153] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 09:10:15.410] [INFO ] Running offline device check... [2026-08-21 09:10:15.410] [INFO ] Starting offline device check... [2026-08-21 09:10:15.415] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=589.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 09:10:15.425] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.5ms idle=352.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:10:15.431] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.434] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.436] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.437] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.438] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.439] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.439] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.440] [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-08-21 09:10:15.442] [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-08-21 09:10:15.447] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.448] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.2ms idle=5.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.461] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.4ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.466] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=13.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.469] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.470] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.471] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.491] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.0ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.493] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=20.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:10:15.495] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.499] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.501] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms queue=0.1ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.503] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.541] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=37.7ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.542] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=38.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:10:15.543] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.551] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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-08-21 09:10:15.553] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.556] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.557] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.559] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.563] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.564] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.564] [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-08-21 09:10:15.565] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.566] [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-08-21 09:10:15.567] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.568] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.569] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.569] [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-08-21 09:10:15.570] [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-08-21 09:10:15.571] [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-08-21 09:10:15.572] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.573] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.573] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.574] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.575] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.575] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.576] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.577] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.578] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.579] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:15.579] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-08-21 09:10:15.583] [INFO ] Offline device check completed successfully [2026-08-21 09:10:47.657] [INFO ] Running offline device check... [2026-08-21 09:10:47.657] [INFO ] Starting offline device check... [2026-08-21 09:10:47.659] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.1ms idle=741.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 09:10:47.667] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.7ms queue=0.2ms idle=580.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:10:47.672] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=8.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.674] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=5.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.676] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.678] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.680] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.681] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.682] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.683] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.685] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.691] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.692] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.705] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.711] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.713] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.714] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.715] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.735] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.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-08-21 09:10:47.737] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=20.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.738] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.740] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms queue=0.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.744] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.745] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.784] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=39.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.785] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=39.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:10:47.786] [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-08-21 09:10:47.793] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.796] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms queue=0.1ms idle=7.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.799] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms queue=0.1ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.801] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.8ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.803] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.807] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms queue=0.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.809] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.810] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.811] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.813] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.815] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.816] [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-08-21 09:10:47.817] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.819] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.819] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.820] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.821] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.822] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.823] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.823] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.824] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.825] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.827] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.829] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.831] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.831] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:10:47.831] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-08-21 09:10:47.832] [INFO ] Offline device check completed successfully [2026-08-21 09:15:15.584] [INFO ] Running offline device check... [2026-08-21 09:15:15.584] [INFO ] Starting offline device check... [2026-08-21 09:15:15.586] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=492.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 09:15:15.593] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.5ms idle=472.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:15:15.598] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=7.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.600] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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-08-21 09:15:15.601] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.602] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.603] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.603] [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-08-21 09:15:15.604] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.605] [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-08-21 09:15:15.606] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.610] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.611] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.628] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.635] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=17.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=6.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.638] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.639] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.656] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.1ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.658] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=17.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:15:15.659] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.661] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.662] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.662] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.697] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=34.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.698] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.699] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.708] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.709] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=9.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.712] [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-08-21 09:15:15.713] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.714] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.718] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.719] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.720] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.720] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.721] [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-08-21 09:15:15.723] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.724] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.725] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.726] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.727] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.728] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.730] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.730] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.731] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.732] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.733] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.734] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.735] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.735] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.736] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.737] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:15.737] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-08-21 09:15:15.737] [INFO ] Offline device check completed successfully [2026-08-21 09:15:44.750] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 09:15:44.750] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms idle=633.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-08-21 09:15:44.751] [DEBUG] QUERY OK source="filter_usage" db=0.6ms idle=434.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-08-21 09:15:44.752] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 09:15:47.833] [INFO ] Running offline device check... [2026-08-21 09:15:47.833] [INFO ] Starting offline device check... [2026-08-21 09:15:47.835] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=1062.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-08-21 09:15:47.842] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms idle=508.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:15:47.850] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.0ms 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-08-21 09:15:47.851] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=7.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.853] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.854] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.854] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.856] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.857] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.857] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.859] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.864] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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-08-21 09:15:47.865] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.880] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.9ms 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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.885] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms queue=0.1ms idle=14.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.887] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.888] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.889] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.909] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.911] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.912] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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-08-21 09:15:47.914] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.917] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.953] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=36.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.955] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=37.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:15:47.957] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.967] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.7ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.968] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.971] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.972] [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-08-21 09:15:47.975] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.982] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.984] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=7.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.985] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.989] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.990] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.992] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.993] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.994] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.995] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.995] [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-08-21 09:15:47.996] [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-08-21 09:15:47.997] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.998] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:47.999] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:48.000] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:48.001] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:48.002] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:48.003] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:48.004] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:48.005] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:48.005] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:15:48.005] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-08-21 09:15:48.006] [INFO ] Offline device check completed successfully [2026-08-21 09:20:15.738] [INFO ] Running offline device check... [2026-08-21 09:20:15.738] [INFO ] Starting offline device check... [2026-08-21 09:20:15.740] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.1ms idle=1070.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-08-21 09:20:15.749] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.3ms idle=70.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:20:15.756] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms queue=0.2ms idle=9.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.759] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.760] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.761] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.761] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.762] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.764] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.765] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.768] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.773] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms queue=0.2ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.774] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=5.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.787] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.794] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms queue=0.3ms idle=13.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.797] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=7.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.798] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.799] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.820] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.822] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=21.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.825] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.827] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.830] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.831] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.874] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=42.4ms 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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.875] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=43.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:20:15.876] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.888] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.890] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms 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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.895] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.897] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.6ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.898] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.904] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.906] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.908] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.910] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.914] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.8ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.919] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=2.0ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.921] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.921] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.925] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.926] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.928] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.929] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.930] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.931] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.932] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.935] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.936] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.938] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.938] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:15.938] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-08-21 09:20:15.938] [INFO ] Offline device check completed successfully [2026-08-21 09:20:48.007] [INFO ] Running offline device check... [2026-08-21 09:20:48.007] [INFO ] Starting offline device check... [2026-08-21 09:20:48.009] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.1ms idle=851.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 09:20:48.020] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.9ms queue=0.1ms idle=192.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:20:48.029] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.8ms idle=12.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.033] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.037] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 09:20:48.039] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.3ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.042] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.042] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.044] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.047] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.048] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.054] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.056] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=1.0ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.074] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.080] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms 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 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.084] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.085] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.108] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.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-08-21 09:20:48.110] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.3ms idle=23.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.113] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.115] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.117] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.2ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.118] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.159] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=40.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.161] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.2ms idle=41.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:20:48.162] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.169] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.173] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.1ms 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-08-21 09:20:48.180] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms queue=4.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.184] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.187] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.191] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.192] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 09:20:48.193] [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-08-21 09:20:48.194] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.194] [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-08-21 09:20:48.196] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.197] [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-08-21 09:20:48.198] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.199] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.201] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.204] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.207] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms queue=0.1ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.209] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.214] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms queue=0.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.215] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.3ms 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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.216] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.216] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.217] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.218] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.219] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.220] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:20:48.220] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-08-21 09:20:48.220] [INFO ] Offline device check completed successfully [2026-08-21 09:25:13.154] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 09:25:13.157] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms queue=0.1ms idle=1133.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-08-21 09:25:13.158] [DEBUG] QUERY OK source="filter_usage" db=0.7ms idle=134.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-08-21 09:25:13.158] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 09:25:15.939] [INFO ] Running offline device check... [2026-08-21 09:25:15.939] [INFO ] Starting offline device check... [2026-08-21 09:25:15.941] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=1685.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-08-21 09:25:15.950] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.9ms idle=906.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:25:15.960] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.2ms queue=1.1ms idle=10.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:15.967] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=10.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:15.970] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:15.972] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.9ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 09:25:15.974] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:15.975] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:15.977] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:15.979] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:15.982] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:15.988] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:15.991] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.1ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.005] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.9ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.010] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms queue=0.1ms idle=14.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.013] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.015] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.4ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.015] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.037] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.044] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms queue=0.7ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.049] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=0.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.052] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=1.4ms idle=5.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.055] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.056] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.099] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=42.7ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.101] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.102] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.109] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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-08-21 09:25:16.109] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.112] [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-08-21 09:25:16.113] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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-08-21 09:25:16.114] [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-08-21 09:25:16.117] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.118] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.119] [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-08-21 09:25:16.120] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.120] [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-08-21 09:25:16.123] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.124] [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-08-21 09:25:16.126] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.127] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.131] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.132] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.133] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.135] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=1.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.139] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=1.5ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.140] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.141] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.142] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.142] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.143] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.146] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.147] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:16.147] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-08-21 09:25:16.147] [INFO ] Offline device check completed successfully [2026-08-21 09:25:48.222] [INFO ] Running offline device check... [2026-08-21 09:25:48.222] [INFO ] Starting offline device check... [2026-08-21 09:25:48.225] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=861.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 09:25:48.235] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.5ms idle=236.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:25:48.244] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.0ms 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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.246] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms 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 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.249] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms queue=0.1ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.251] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.7ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.252] [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-08-21 09:25:48.253] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.254] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.255] [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-08-21 09:25:48.257] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.262] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.263] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=5.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.277] [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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.282] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms queue=0.1ms idle=14.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.285] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=5.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.286] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.2ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.286] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.308] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.310] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=21.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:25:48.311] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.313] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.314] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.316] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.358] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=40.9ms queue=1.0ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.361] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.2ms idle=42.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:25:48.362] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.372] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.373] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.376] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms queue=0.2ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.377] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.378] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.383] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.384] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.385] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.386] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.387] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.389] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.390] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.391] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.392] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.393] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.394] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.396] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.397] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.397] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.398] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.399] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.400] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.400] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.401] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.402] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.403] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:25:48.403] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-08-21 09:25:48.403] [INFO ] Offline device check completed successfully [2026-08-21 09:30:16.150] [INFO ] Running offline device check... [2026-08-21 09:30:16.150] [INFO ] Starting offline device check... [2026-08-21 09:30:16.152] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.1ms idle=1653.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 09:30:16.162] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.3ms idle=651.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:30:16.167] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=10.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.169] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=5.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.170] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.171] [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-08-21 09:30:16.171] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.172] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.172] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.173] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.174] [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-08-21 09:30:16.180] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.181] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.194] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.199] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms queue=0.1ms idle=13.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.201] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.203] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.204] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.222] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.223] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.225] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.228] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=1.1ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.230] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.231] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.271] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=39.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.273] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=40.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:30:16.274] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.283] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.284] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=9.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.288] [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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.290] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.291] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.295] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.295] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.298] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.299] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.300] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.302] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.303] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.305] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.306] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.307] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.309] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.311] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.311] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.312] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.313] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.313] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.314] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.315] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.316] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.317] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.318] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:16.318] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-08-21 09:30:16.319] [INFO ] Offline device check completed successfully [2026-08-21 09:30:44.753] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 09:30:44.755] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1463.8ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 09:30:44.757] [DEBUG] QUERY OK source="filter_usage" db=1.5ms idle=1000.7ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 09:30:44.757] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 09:30:48.404] [INFO ] Running offline device check... [2026-08-21 09:30:48.404] [INFO ] Starting offline device check... [2026-08-21 09:30:48.408] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms queue=0.1ms idle=634.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-08-21 09:30:48.417] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.0ms idle=119.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:30:48.425] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.1ms idle=9.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.428] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=7.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.431] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.433] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.438] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms queue=0.1ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.439] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.441] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.443] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.446] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.453] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.456] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=7.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.478] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.0ms queue=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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.486] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms queue=0.2ms idle=23.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.489] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=8.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.490] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.491] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.509] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.510] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.512] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.514] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.516] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.517] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.557] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=39.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-08-21 09:30:48.560] [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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.563] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.572] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.0ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.574] [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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.576] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.4ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.578] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.579] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.584] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.586] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.587] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.589] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.590] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.592] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.593] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.594] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.595] [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-08-21 09:30:48.596] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.597] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.600] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.601] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.604] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.607] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.608] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.611] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.612] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.613] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.614] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.615] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:30:48.616] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-08-21 09:30:48.616] [INFO ] Offline device check completed successfully [2026-08-21 09:35:16.320] [INFO ] Running offline device check... [2026-08-21 09:35:16.320] [INFO ] Starting offline device check... [2026-08-21 09:35:16.325] [DEBUG] QUERY OK source="tms_terminals" db=4.2ms queue=0.1ms idle=944.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-08-21 09:35:16.341] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.6ms idle=759.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:35:16.354] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.0ms queue=0.1ms idle=16.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.359] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=14.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.363] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=1.7ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.365] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.369] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=1.4ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.372] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.9ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.376] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=1.7ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.381] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms 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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.387] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms 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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.396] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.1ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.403] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=1.5ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.431] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=27.7ms idle=6.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.440] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms queue=0.1ms idle=28.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:35:16.444] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=9.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.450] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=3.8ms idle=5.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.451] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.485] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=33.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.487] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.7ms idle=34.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:35:16.490] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.494] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.495] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.499] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.545] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=45.8ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.546] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=47.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.547] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.556] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.558] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.561] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.562] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.564] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.568] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.569] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.571] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.572] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.573] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.575] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.577] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.577] [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-08-21 09:35:16.579] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.580] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.581] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.583] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.585] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.586] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.587] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.588] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.589] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.590] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.591] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.593] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.594] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:16.594] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-08-21 09:35:16.594] [INFO ] Offline device check completed successfully [2026-08-21 09:35:48.617] [INFO ] Running offline device check... [2026-08-21 09:35:48.617] [INFO ] Starting offline device check... [2026-08-21 09:35:48.619] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1230.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-08-21 09:35:48.629] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.7ms idle=302.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:35:48.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.639] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=9.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.641] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.642] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.642] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.643] [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-08-21 09:35:48.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.644] [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-08-21 09:35:48.646] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.651] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.651] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.667] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.673] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=16.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:35:48.676] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.676] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.677] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.703] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.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-08-21 09:35:48.705] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=25.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.707] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.710] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.711] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.712] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.770] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=57.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.772] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=58.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:35:48.773] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 09:35:48.782] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.783] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=9.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.787] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms queue=0.7ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.788] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.790] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.795] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.796] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=5.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.799] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.802] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.803] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.804] [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-08-21 09:35:48.805] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.805] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.806] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.807] [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-08-21 09:35:48.809] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.810] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.810] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.811] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.811] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.812] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.812] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.813] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.814] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.814] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:35:48.814] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-08-21 09:35:48.815] [INFO ] Offline device check completed successfully [2026-08-21 09:40:13.159] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 09:40:13.160] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1052.8ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 09:40:13.161] [DEBUG] QUERY OK source="filter_usage" db=0.7ms idle=51.2ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 09:40:13.161] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 09:40:16.595] [INFO ] Running offline device check... [2026-08-21 09:40:16.595] [INFO ] Starting offline device check... [2026-08-21 09:40:16.597] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.1ms idle=476.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-08-21 09:40:16.610] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.4ms idle=94.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:40:16.618] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.5ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.620] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.622] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.623] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.624] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.625] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.625] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.627] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.629] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.0ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.640] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.661] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.9ms queue=0.1ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.668] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=21.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.670] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=6.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.671] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.672] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.696] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.697] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=23.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.698] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.700] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.701] [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-08-21 09:40:16.702] [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-08-21 09:40:16.739] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=37.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.740] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=38.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:40:16.741] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.748] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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-08-21 09:40:16.749] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.752] [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-08-21 09:40:16.753] [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-08-21 09:40:16.754] [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-08-21 09:40:16.758] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.758] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.759] [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-08-21 09:40:16.760] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.761] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.763] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.763] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.764] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.765] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.766] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.767] [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-08-21 09:40:16.768] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.768] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.769] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.770] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.770] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.771] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.772] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.773] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.774] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.775] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:16.775] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 09:40:16.775] [INFO ] Offline device check completed successfully [2026-08-21 09:40:48.816] [INFO ] Running offline device check... [2026-08-21 09:40:48.816] [INFO ] Starting offline device check... [2026-08-21 09:40:48.818] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=1354.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-08-21 09:40:48.828] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.7ms idle=941.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:40:48.835] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms 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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.836] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=6.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.838] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 09:40:48.839] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.840] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.840] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.841] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.841] [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-08-21 09:40:48.843] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.848] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 09:40:48.849] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.861] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.3ms queue=0.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.866] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=13.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.868] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.869] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.870] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.886] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.888] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.889] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.890] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.894] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.894] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.931] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=36.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.932] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=36.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.933] [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-08-21 09:40:48.939] [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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.940] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=6.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.943] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.944] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.945] [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-08-21 09:40:48.949] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.950] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.7ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.951] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.952] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.953] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.955] [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-08-21 09:40:48.955] [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-08-21 09:40:48.956] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.957] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.958] [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-08-21 09:40:48.959] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.960] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.960] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.961] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.962] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.964] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.964] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.965] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.966] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.966] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.967] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:40:48.967] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 09:40:48.967] [INFO ] Offline device check completed successfully [2026-08-21 09:45:16.776] [INFO ] Running offline device check... [2026-08-21 09:45:16.777] [INFO ] Starting offline device check... [2026-08-21 09:45:16.778] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.2ms idle=1103.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-08-21 09:45:16.793] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.7ms idle=102.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:45:16.800] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms idle=15.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.801] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.802] [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-08-21 09:45:16.803] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.803] [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-08-21 09:45:16.804] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.805] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.806] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.807] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.814] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.815] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=7.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.833] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.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-08-21 09:45:16.841] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.843] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.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-08-21 09:45:16.844] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.845] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.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-08-21 09:45:16.866] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=20.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.868] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.870] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.871] [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-08-21 09:45:16.872] [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-08-21 09:45:16.913] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=40.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-08-21 09:45:16.914] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=41.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:45:16.915] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.923] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.924] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=8.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.926] [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-08-21 09:45:16.927] [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-08-21 09:45:16.928] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.932] [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-08-21 09:45:16.933] [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-08-21 09:45:16.933] [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-08-21 09:45:16.934] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.935] [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-08-21 09:45:16.937] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.937] [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-08-21 09:45:16.938] [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-08-21 09:45:16.938] [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-08-21 09:45:16.939] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.940] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.941] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.942] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.942] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.943] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.944] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.945] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.946] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.947] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.947] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.948] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:16.948] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 09:45:16.948] [INFO ] Offline device check completed successfully [2026-08-21 09:45:44.758] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 09:45:45.296] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 09:45:45.770] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1169.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 09:45:46.005] [DEBUG] QUERY OK source="tms_terminals" db=1246.5ms idle=1258.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-08-21 09:45:46.007] [DEBUG] QUERY OK source="filter_usage" db=2.3ms idle=0.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-08-21 09:45:46.008] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 09:45:48.968] [INFO ] Running offline device check... [2026-08-21 09:45:48.968] [INFO ] Starting offline device check... [2026-08-21 09:45:48.971] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms idle=701.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-08-21 09:45:48.985] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.4ms queue=0.7ms idle=476.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:45:48.993] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.5ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:48.999] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=1.4ms idle=11.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.001] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=6.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.003] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.004] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.005] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.006] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.010] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.013] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.019] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.021] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.041] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.050] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.2ms idle=20.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.055] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=9.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.058] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.062] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.084] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.9ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.087] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=22.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:45:49.090] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.092] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.097] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms queue=2.4ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.099] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.147] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=47.0ms 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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.149] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.1ms idle=47.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:45:49.153] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=1.3ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.163] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.165] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.168] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.171] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 09:45:49.173] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=1.5ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.180] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms queue=0.6ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.181] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.182] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.183] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.185] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.188] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 09:45:49.190] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.191] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.191] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.192] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.193] [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-08-21 09:45:49.194] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.195] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.199] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.200] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.201] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.202] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.203] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.204] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.205] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.206] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:45:49.206] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 09:45:49.207] [INFO ] Offline device check completed successfully [2026-08-21 09:46:34.670] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1169.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 09:46:35.431] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 09:50:16.949] [INFO ] Running offline device check... [2026-08-21 09:50:16.949] [INFO ] Starting offline device check... [2026-08-21 09:50:16.952] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=1125.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-08-21 09:50:16.962] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.0ms idle=123.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:50:16.970] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.0ms idle=10.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:16.973] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:16.974] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:16.974] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:16.976] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:16.977] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.2ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:16.978] [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-08-21 09:50:16.978] [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-08-21 09:50:16.981] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:16.987] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms queue=0.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:16.988] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.003] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.7ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.009] [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 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.011] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.012] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.012] [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-08-21 09:50:17.030] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.031] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=17.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.033] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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-08-21 09:50:17.035] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.036] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.038] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.079] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=39.8ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.079] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=40.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:50:17.081] [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-08-21 09:50:17.088] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.092] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=2.5ms idle=7.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.095] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.096] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.097] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.101] [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-08-21 09:50:17.101] [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-08-21 09:50:17.102] [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-08-21 09:50:17.103] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.103] [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-08-21 09:50:17.105] [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-08-21 09:50:17.107] [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-08-21 09:50:17.108] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.108] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.109] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.110] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.111] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.112] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.114] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.114] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.115] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.116] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.118] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.118] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.119] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.120] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:17.120] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 09:50:17.120] [INFO ] Offline device check completed successfully [2026-08-21 09:50:44.769] [INFO ] Starting scheduled rule validation [2026-08-21 09:50:44.769] [DEBUG] Validating missing assignments [2026-08-21 09:50:44.770] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms idle=1247.9ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-08-21 09:50:44.771] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=764.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-08-21 09:50:44.772] [DEBUG] Re-applied 0 rules during validation [2026-08-21 09:50:44.772] [DEBUG] Validating invalid assignments [2026-08-21 09:50:44.772] [DEBUG] Validating rule consistency [2026-08-21 09:50:44.772] [DEBUG] Updating group terminal counts [2026-08-21 09:50:44.773] [DEBUG] QUERY OK source="terminal_groups" db=1.0ms idle=2.1ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-08-21 09:50:44.773] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms idle=2.3ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:249 [2026-08-21 09:50:44.775] [DEBUG] QUERY OK source="terminal_groups" db=0.7ms idle=0.8ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-08-21 09:50:44.776] [DEBUG] QUERY OK source="terminal_group_rules" db=1.1ms idle=1.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-08-21 09:50:44.777] [DEBUG] QUERY OK source="terminal_group_rules" db=0.7ms idle=1.5ms 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-08-21 09:50:44.778] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms idle=1.2ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:261 [2026-08-21 09:50:44.779] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.8ms idle=0.6ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:262 [2026-08-21 09:50:44.779] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.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-08-21 09:50:44.780] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-08-21 09:50:44.780] [INFO ] Rule validation completed - applied 0 fixes [2026-08-21 09:50:49.208] [INFO ] Running offline device check... [2026-08-21 09:50:49.208] [INFO ] Starting offline device check... [2026-08-21 09:50:49.210] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=686.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 09:50:49.219] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.3ms idle=184.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:50:49.228] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.230] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.1ms idle=9.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.233] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.234] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.235] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.237] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.239] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.242] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.244] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.1ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.255] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.4ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.256] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.276] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.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-08-21 09:50:49.288] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.5ms idle=20.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.295] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.296] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.298] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.328] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=28.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.330] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=30.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:50:49.331] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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-08-21 09:50:49.334] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.337] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.339] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.403] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=63.5ms 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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.406] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=64.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:50:49.407] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.421] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.423] [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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.426] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms queue=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.430] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.435] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.444] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.6ms 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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.448] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms 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 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.451] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.454] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.456] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.460] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.464] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.468] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms queue=1.3ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.473] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.474] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.477] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.482] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms queue=1.4ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.484] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.486] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.489] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=1.4ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.491] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.495] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.496] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.500] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms queue=1.0ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.504] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms 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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.508] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:50:49.508] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 09:50:49.508] [INFO ] Offline device check completed successfully [2026-08-21 09:55:13.162] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 09:55:13.164] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.1ms idle=901.8ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 09:55:13.166] [DEBUG] QUERY OK source="filter_usage" db=0.7ms idle=424.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-08-21 09:55:13.166] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 09:55:17.121] [INFO ] Running offline device check... [2026-08-21 09:55:17.121] [INFO ] Starting offline device check... [2026-08-21 09:55:17.126] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms idle=840.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 09:55:17.166] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=30.0ms idle=394.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:55:17.190] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.0ms idle=43.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:55:17.194] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=25.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.199] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.203] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.210] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.7ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.213] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.216] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.220] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.224] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.236] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.6ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.241] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.270] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=28.2ms 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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.291] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.6ms idle=32.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.298] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms queue=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.300] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.302] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=36.9ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.342] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=37.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.347] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.350] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.353] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.355] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.413] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=58.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.416] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=59.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:55:17.416] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.428] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.432] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms queue=0.1ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.437] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms queue=0.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.439] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.439] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.444] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.445] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.447] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.448] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.449] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.451] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.452] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.454] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.455] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.457] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.458] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.459] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.460] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.461] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.461] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.462] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.463] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.463] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.464] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.466] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.468] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:17.468] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 09:55:17.468] [INFO ] Offline device check completed successfully [2026-08-21 09:55:49.509] [INFO ] Running offline device check... [2026-08-21 09:55:49.509] [INFO ] Starting offline device check... [2026-08-21 09:55:49.511] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=1959.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-08-21 09:55:49.524] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.8ms idle=982.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:55:49.532] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.8ms idle=14.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.534] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.536] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.538] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.539] [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-08-21 09:55:49.540] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.542] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.543] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.545] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.551] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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-08-21 09:55:49.553] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.572] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.580] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.9ms idle=19.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.585] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=7.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.587] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=0.1ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.590] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.5ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.614] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.616] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms 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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.618] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.621] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.623] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.626] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=1.4ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.673] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=45.5ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.675] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=48.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 09:55:49.677] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=1.0ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.689] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.691] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.1ms idle=12.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.695] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.697] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.698] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.702] [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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.705] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.707] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.709] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.711] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.713] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.714] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.715] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.717] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.718] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.719] [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-08-21 09:55:49.721] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.722] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.724] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.725] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.726] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.726] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.727] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.728] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.731] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.732] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 09:55:49.732] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 09:55:49.732] [INFO ] Offline device check completed successfully [2026-08-21 09:56:27.797] [INFO ] :alarm_handler: {:clear, {:disk_almost_full, ~c"/"}} [2026-08-21 09:56:27.797] [INFO ] SIGTERM received - shutting down [2026-08-21 09:56:27.797] [ERROR] GenServer :disksup terminating ** (stop) {:port_died, :normal} Last message: {:EXIT, #Port<0.13>, :normal} State: [data: [{~c"OS", {:unix, :linux}}, {~c"Timeout", 1800000}, {~c"Threshold", 80}, {~c"DiskData", [{~c"/run", 13190188, 1}, {~c"/sys/firmware/efi/efivars", 256, 44}, {~c"/", 309495396, 100}, {~c"/dev/shm", 65950924, 1}, {~c"/run/lock", 5120, 0}, {~c"/boot", 1992552, 11}, {~c"/boot/efi", 1098628, 1}, {~c"/run/user/1000", 13190184, 1}, {~c"/run/user/1004", 13190184, 1}, {~c"/run/user/1002", 13190184, 1}, {~c"/run/user/1001", 13190184, 1}, {~c"/run/user/1003", 13190184, 1}, {~c"/run/user/1012", 13190184, 1}, {~c"/run/user/1010", 13190184, 1}, {~c"/run/user/1009", 13190184, 1}, {~c"/run/user/1013", 13190184, 1}, {~c"/run/user/1008", 13190184, 1}, {~c"/run/user/1015", 13190184, 1}, {~c"/run/user/1021", 13190184, 1}, {~c"/run/user/1023", 13190184, 1}, {~c"/run/user/1007", 13190184, 1}, {~c"/run/user/1016", 13190184, 1}, {~c"/run/user/1019", 13190184, 1}, {~c"/run/user/1014", 13190184, 1}, {~c"/run/user/1011", 13190184, 1}, {~c"/run/user/1028", 13190184, 1}, {~c"/run/user/1030", 13190184, 1}, {~c"/run/user/1029", 13190184, 1}, {~c"/run/user/1031", 13190184, 1}, {~c"/run/user/1032", 13190184, 1}, {~c"/run/user/1025", 13190184, 1}]}]] [2026-08-21 09:56:27.798] [INFO ] :alarm_handler: {:clear, :system_memory_high_watermark} [2026-08-21 09:56:27.800] [ERROR] GenServer :standard_error_sup terminating ** (stop) :epipe Last message: {:EXIT, #PID<0.52.0>, :epipe} State: {:state, :standard_error, :undefined, #PID<0.52.0>, {:local, :standard_error_sup}} [2026-08-21 09:56:27.798] [ERROR] GenServer :memsup terminating ** (stop) {:port_died, :normal} Last message: {:EXIT, #PID<0.1304.0>, {:port_died, :normal}} State: [data: [{~c"Timeout", 60000}], items: {~c"Memory Usage", [{~c"Allocated", 132489846784}, {~c"Total", 135067492352}]}, items: {~c"Worst Memory User", [{~c"Pid", #PID<0.50.0>}, {~c"Memory", 7036496}]}] [2026-08-21 09:56:27.818] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 09:56:27.820] [INFO ] Failed to write to standard out (:epipe) [2026-08-21 09:56:27.821] [ERROR] GenServer #PID<0.1028.0> terminating ** (stop) {:error, {:write_failed, %{type: :standard_io}, {:badarg, [{:io, :put_chars, [:standard_error, ~c"Failed to write log message to stdout, trying stderr\n"], [file: ~c"io.erl", line: 98, error_info: %{cause: {:io, :arguments}, module: :erl_stdlib_errors}]}, {:logger_std_h, :write_to_dev, 2, [file: ~c"logger_std_h.erl", line: 514]}, {:logger_std_h, :file_ctrl_loop, 1, [file: ~c"logger_std_h.erl", line: 435]}]}}} (kernel 9.2.4.3) logger_std_h.erl:274: :logger_std_h.handle_info/3 (kernel 9.2.4.3) logger_h_common.erl:309: :logger_h_common.handle_info/2 (kernel 9.2.4.3) logger_olp.erl:616: :logger_olp.try_callback_call/4 (kernel 9.2.4.3) logger_olp.erl:270: :logger_olp.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:EXIT, #PID<0.1029.0>, {:badarg, [{:io, :put_chars, [:standard_error, ~c"Failed to write log message to stdout, trying stderr\n"], [file: ~c"io.erl", line: 98, error_info: %{cause: {:io, :arguments}, module: :erl_stdlib_errors}]}, {:logger_std_h, :write_to_dev, 2, [file: ~c"logger_std_h.erl", line: 514]}, {:logger_std_h, :file_ctrl_loop, 1, [file: ~c"logger_std_h.erl", line: 435]}]}} State: %{id: :logger_std_h_default, module: :logger_h_common, mode: :async, idle: false, burst_limit_enable: true, drop_mode_qlen: 200, flush_qlen: 1000, sync_mode_qlen: 10, burst_msg_count: 8, burst_win_ts: -576460676025005, cb_state: %{id: :default, module: :logger_std_h, filesync_repeat_interval: :no_repeat, ctrl_sync_count: 5, handler_state: %{type: :standard_io, file_ctrl_pid: #PID<0.1029.0>}, last_op: :write}, last_load_ts: -576453460267323, last_qlen: 0, mode_ref: {:logger_olp, :logger_std_h_default}, overload_kill_restart_after: 5000, burst_limit_max_count: 500, burst_limit_window_time: 1000, overload_kill_enable: false, overload_kill_mem_size: 3000000, overload_kill_qlen: 20000} [2026-08-21 09:56:27.821] [ERROR] Process #PID<0.1029.0> raised an exception ** (ArgumentError) errors were found at the given arguments: * 1st argument: the device does not exist (stdlib 5.2.3.2) io.erl:98: :io.put_chars(:standard_error, ~c"Failed to write log message to stdout, trying stderr\n") (kernel 9.2.4.3) logger_std_h.erl:514: :logger_std_h.write_to_dev/2 (kernel 9.2.4.3) logger_std_h.erl:435: :logger_std_h.file_ctrl_loop/1 [2026-08-21 09:56:27.840] [ERROR] :gen_event handler :alarm_handler installed in :alarm_handler terminating ** (ArgumentError) errors were found at the given arguments: broken pipe (epipe) :erlang.display_string(~c"Logger - error: ") (kernel 9.2.4.3) logger.erl:361: :logger.internal_log/2 (kernel 9.2.4.3) logger_backend.erl:55: :logger_backend.call_handlers/3 (sasl 4.2.1) alarm_handler.erl:80: :alarm_handler.handle_event/2 (stdlib 5.2.3.2) gen_event.erl:814: :gen_event.server_update/4 (stdlib 5.2.3.2) gen_event.erl:796: :gen_event.server_notify/4 (stdlib 5.2.3.2) gen_event.erl:538: :gen_event.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:set_alarm, {:system_memory_high_watermark, []}} State: [{{:disk_almost_full, ~c"/"}, []}] [2026-08-21 10:00:46.009] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 10:00:46.010] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=1390.4ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 10:00:46.011] [DEBUG] QUERY OK source="filter_usage" db=1.0ms idle=920.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-08-21 10:00:46.011] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 10:00:49.733] [INFO ] Running offline device check... [2026-08-21 10:00:49.733] [INFO ] Starting offline device check... [2026-08-21 10:00:49.734] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=627.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-08-21 10:00:49.744] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.5ms idle=117.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:00:49.751] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms queue=0.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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.754] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms queue=0.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.756] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.757] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.761] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.2ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.762] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.763] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.764] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.767] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.774] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms queue=0.4ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) 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-08-21 10:00:49.776] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.792] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.801] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.801] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.802] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.827] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.829] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=25.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.831] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.833] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.835] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.836] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.883] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=46.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-08-21 10:00:49.884] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=47.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.886] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.894] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.5ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.896] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.899] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.900] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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-08-21 10:00:49.901] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.905] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.906] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.907] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.908] [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-08-21 10:00:49.909] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.911] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.911] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.912] [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-08-21 10:00:49.913] [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-08-21 10:00:49.914] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.917] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.919] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.920] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.922] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.923] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.924] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.925] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.925] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.926] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:00:49.927] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 10:00:49.927] [INFO ] Offline device check completed successfully [2026-08-21 10:05:49.928] [INFO ] Running offline device check... [2026-08-21 10:05:49.928] [INFO ] Starting offline device check... [2026-08-21 10:05:49.930] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=485.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 10:05:49.941] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.8ms queue=0.2ms idle=262.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:05:49.948] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms 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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:49.950] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:49.951] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:49.951] [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-08-21 10:05:49.952] [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-08-21 10:05:49.953] [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-08-21 10:05:49.953] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:49.954] [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-08-21 10:05:49.956] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:49.961] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:49.961] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:49.975] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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-08-21 10:05:49.980] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:49.984] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:49.985] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:49.985] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.006] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.008] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=21.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:05:50.010] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.012] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.013] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.014] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.057] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=42.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.058] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=43.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:05:50.059] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.071] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.072] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.076] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.078] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.8ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.080] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.088] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.090] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.091] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.092] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.093] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.094] [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-08-21 10:05:50.094] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.096] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.097] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.098] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.099] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.100] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.101] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.102] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.103] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.104] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.105] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.105] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.106] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:05:50.106] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 10:05:50.106] [INFO ] Offline device check completed successfully [2026-08-21 10:10:50.108] [INFO ] Running offline device check... [2026-08-21 10:10:50.108] [INFO ] Starting offline device check... [2026-08-21 10:10:50.115] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=2.0ms idle=1268.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-08-21 10:10:50.134] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.7ms queue=0.4ms idle=271.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:10:50.152] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.2ms idle=20.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.159] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms queue=5.1ms idle=17.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:10:50.160] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.161] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.163] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.166] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.167] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.171] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.175] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms queue=0.1ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.187] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.7ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.192] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=17.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:10:50.217] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.0ms 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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.226] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.3ms idle=24.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:10:50.231] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms queue=0.1ms idle=9.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.232] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=5.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.233] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.261] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=27.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.263] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=28.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:10:50.265] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.270] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms 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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.272] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.273] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.324] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=51.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.325] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=51.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:10:50.326] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.334] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.335] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=8.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.337] [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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.340] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.345] [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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.346] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.348] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.350] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.351] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.353] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.354] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.355] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.357] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.358] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.362] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.363] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.364] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.365] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.366] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.367] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.368] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.369] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.370] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.370] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.371] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:10:50.371] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 10:10:50.371] [INFO ] Offline device check completed successfully [2026-08-21 10:15:46.012] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 10:15:46.013] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=693.7ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 10:15:46.015] [DEBUG] QUERY OK source="filter_usage" db=1.2ms idle=218.1ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 10:15:46.015] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 10:15:50.372] [INFO ] Running offline device check... [2026-08-21 10:15:50.372] [INFO ] Starting offline device check... [2026-08-21 10:15:50.374] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=576.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-08-21 10:15:50.395] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.4ms idle=36.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:15:50.406] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.2ms 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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.408] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms 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 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.410] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.411] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.412] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.413] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.414] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.415] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.417] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.424] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.9ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.426] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.445] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.9ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.453] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.3ms idle=19.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:15:50.456] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms queue=0.3ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.457] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.458] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.483] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.485] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=25.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.488] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.490] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.495] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms queue=0.2ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.496] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.562] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=65.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.565] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=1.2ms idle=66.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:15:50.566] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.578] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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-08-21 10:15:50.580] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.586] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.587] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.589] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.593] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.595] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.599] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.602] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms queue=0.1ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.604] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.2ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.608] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.610] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.611] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.613] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.615] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.616] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.618] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.619] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.620] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.621] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.622] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.624] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.626] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.627] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.629] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.636] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=5.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:15:50.636] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 10:15:50.636] [INFO ] Offline device check completed successfully [2026-08-21 10:20:50.637] [INFO ] Running offline device check... [2026-08-21 10:20:50.637] [INFO ] Starting offline device check... [2026-08-21 10:20:50.638] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=972.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 10:20:50.646] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms idle=807.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:20:50.653] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms idle=8.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.656] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.657] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.658] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20: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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.659] [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-08-21 10:20:50.660] [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-08-21 10:20:50.660] [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-08-21 10:20:50.662] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.667] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.668] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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-08-21 10:20:50.682] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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-08-21 10:20:50.688] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms idle=11.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.690] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.690] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.691] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.708] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.710] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=17.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.711] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.714] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.715] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.716] [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-08-21 10:20:50.753] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=36.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-08-21 10:20:50.754] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.755] [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-08-21 10:20:50.761] [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-08-21 10:20:50.762] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.765] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.766] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.767] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.771] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.772] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.773] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.773] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.775] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.777] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.777] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.778] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.779] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.780] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.782] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.784] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.786] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.787] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.788] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.790] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.791] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.792] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.793] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.793] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.794] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:20:50.794] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 10:20:50.794] [INFO ] Offline device check completed successfully [2026-08-21 10:25:50.795] [INFO ] Running offline device check... [2026-08-21 10:25:50.795] [INFO ] Starting offline device check... [2026-08-21 10:25:50.797] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=1057.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-08-21 10:25:50.806] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.9ms idle=55.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:25:50.814] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.1ms queue=0.1ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.816] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.817] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.818] [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-08-21 10:25:50.819] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.820] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.820] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.821] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.823] [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-08-21 10:25:50.834] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.0ms queue=2.6ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.837] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms queue=0.1ms idle=11.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.852] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.7ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.859] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms queue=0.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.862] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.863] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.864] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.885] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.886] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=20.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:25:50.887] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.889] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.890] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.892] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.932] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=39.9ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.933] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=40.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:25:50.934] [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-08-21 10:25:50.941] [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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.942] [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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.944] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.947] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.948] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.952] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.953] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.954] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.955] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.956] [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-08-21 10:25:50.958] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.958] [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-08-21 10:25:50.959] [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-08-21 10:25:50.960] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.961] [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-08-21 10:25:50.962] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.963] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.964] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.965] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.965] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.966] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.966] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.967] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.970] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.973] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.975] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:25:50.975] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 10:25:50.975] [INFO ] Offline device check completed successfully [2026-08-21 10:28:16.311] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 10:30:46.018] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 10:30:46.019] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=1094.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-08-21 10:30:46.020] [DEBUG] QUERY OK source="filter_usage" db=0.4ms idle=525.5ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 10:30:46.020] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 10:30:50.976] [INFO ] Running offline device check... [2026-08-21 10:30:50.976] [INFO ] Starting offline device check... [2026-08-21 10:30:50.977] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1053.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 10:30:50.988] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.8ms queue=0.2ms idle=467.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:30:50.995] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms queue=0.1ms idle=10.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:50.997] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=7.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:50.998] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.7ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.001] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.001] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.002] [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-08-21 10:30:51.003] [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-08-21 10:30:51.004] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.007] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.015] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.0ms queue=0.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.017] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.035] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.043] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.4ms queue=0.1ms idle=18.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.046] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.047] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.048] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.069] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.1ms 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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.071] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=21.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.073] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.4ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.074] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.076] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.077] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.122] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=43.8ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.122] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=44.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:30:51.123] [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-08-21 10:30:51.130] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.131] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.137] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.140] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=0.1ms idle=6.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.141] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.147] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.148] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.149] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.150] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.151] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.154] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms queue=0.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.155] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.156] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.157] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.158] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.159] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.161] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.162] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.163] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.164] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.164] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.165] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.166] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.166] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.167] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.169] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:30:51.169] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 10:30:51.169] [INFO ] Offline device check completed successfully [2026-08-21 10:35:51.170] [INFO ] Running offline device check... [2026-08-21 10:35:51.170] [INFO ] Starting offline device check... [2026-08-21 10:35:51.172] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms idle=1183.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-08-21 10:35:51.183] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.2ms idle=279.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:35:51.189] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=10.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.193] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.197] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.198] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.200] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.201] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.202] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.205] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.2ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.207] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.213] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.216] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.2ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.233] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.242] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms idle=18.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.245] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.2ms idle=9.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.246] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.248] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.276] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=27.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.278] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=28.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:35:51.279] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.282] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 10:35:51.286] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.287] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.336] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=47.3ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=49.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:35:51.340] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.352] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.355] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=12.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.360] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.364] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.366] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.372] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms queue=0.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.374] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.374] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.377] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.379] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.381] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.384] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=1.3ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.386] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 10:35:51.388] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.391] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.392] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.394] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.395] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.396] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.397] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.398] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.399] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.401] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.402] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.403] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.404] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:35:51.404] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 10:35:51.404] [INFO ] Offline device check completed successfully [2026-08-21 10:40:51.406] [INFO ] Running offline device check... [2026-08-21 10:40:51.406] [INFO ] Starting offline device check... [2026-08-21 10:40:51.410] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms queue=0.1ms idle=332.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 10:40:51.424] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.8ms 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 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.438] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.7ms queue=3.5ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.441] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=14.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.442] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.443] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.444] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.445] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.446] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.447] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.449] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.457] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.0ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.458] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.477] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.483] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms 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 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.485] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.486] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.488] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.515] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=26.9ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.517] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.2ms idle=27.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:40:51.519] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.521] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.522] [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-08-21 10:40:51.523] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.573] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=49.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-08-21 10:40:51.575] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=50.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:40:51.576] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.583] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.584] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.588] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.591] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.9ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.592] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.597] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.599] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.601] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.2ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.602] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.603] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.605] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.606] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.608] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=1.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.609] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.610] [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-08-21 10:40:51.611] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.613] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.613] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.614] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.615] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.616] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.618] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.618] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.619] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.620] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.621] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms 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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:40:51.621] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 10:40:51.621] [INFO ] Offline device check completed successfully [2026-08-21 10:45:46.021] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 10:45:46.023] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=1273.4ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 10:45:46.023] [DEBUG] QUERY OK source="filter_usage" db=0.3ms idle=273.1ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 10:45:46.023] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 10:45:51.622] [INFO ] Running offline device check... [2026-08-21 10:45:51.622] [INFO ] Starting offline device check... [2026-08-21 10:45:51.623] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=849.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-08-21 10:45:51.635] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.1ms idle=475.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:45:51.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.6ms idle=12.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.646] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.647] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.648] [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-08-21 10:45:51.650] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.650] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.653] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.654] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.656] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.662] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.663] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.683] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.691] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.4ms decode=0.1ms idle=20.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.693] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=8.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.694] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.695] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.722] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=26.8ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.723] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=27.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:45:51.725] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.727] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 10:45:51.729] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.731] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.777] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=45.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.778] [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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.779] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.788] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.788] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=9.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.791] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.792] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.794] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.799] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.800] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.803] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.804] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.809] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.812] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.814] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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-08-21 10:45:51.815] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.817] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.820] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.822] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.823] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.825] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.826] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.4ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.828] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.828] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.830] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.831] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.832] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.833] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:45:51.833] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 10:45:51.834] [INFO ] Offline device check completed successfully [2026-08-21 10:50:44.781] [INFO ] Starting scheduled rule validation [2026-08-21 10:50:44.781] [DEBUG] Validating missing assignments [2026-08-21 10:50:44.783] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms idle=752.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-08-21 10:50:44.784] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=572.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-08-21 10:50:44.785] [DEBUG] Re-applied 0 rules during validation [2026-08-21 10:50:44.785] [DEBUG] Validating invalid assignments [2026-08-21 10:50:44.785] [DEBUG] Validating rule consistency [2026-08-21 10:50:44.785] [DEBUG] Updating group terminal counts [2026-08-21 10:50:44.786] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms idle=2.6ms 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-08-21 10:50:44.788] [DEBUG] QUERY OK source="terminal_groups" db=0.5ms idle=2.3ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:249 [2026-08-21 10:50:44.789] [DEBUG] QUERY OK source="terminal_groups" db=0.7ms idle=2.6ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-08-21 10:50:44.791] [DEBUG] QUERY OK source="terminal_group_rules" db=0.9ms idle=2.8ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:258 [2026-08-21 10:50:44.792] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms idle=1.4ms 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-08-21 10:50:44.793] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.0ms idle=1.0ms 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-08-21 10:50:44.796] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.8ms idle=1.3ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:262 [2026-08-21 10:50:44.797] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms idle=3.3ms 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-08-21 10:50:44.797] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-08-21 10:50:44.797] [INFO ] Rule validation completed - applied 0 fixes [2026-08-21 10:50:51.835] [INFO ] Running offline device check... [2026-08-21 10:50:51.835] [INFO ] Starting offline device check... [2026-08-21 10:50:51.836] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms idle=1623.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 10:50:51.848] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.0ms idle=780.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:50:51.854] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms queue=0.1ms 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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.857] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=6.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.858] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.859] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.860] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.862] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.862] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.863] [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-08-21 10:50:51.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.870] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.871] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.887] [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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.893] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms queue=0.1ms idle=15.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.900] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.5ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.901] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.927] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.928] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.3ms idle=25.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:50:51.930] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.932] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.933] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.934] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.980] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=44.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.981] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=45.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:50:51.982] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.994] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:51.995] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=11.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.000] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.001] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=5.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.003] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.007] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.008] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.010] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.014] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms queue=1.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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.015] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.019] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.020] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.021] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.022] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.023] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.025] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms 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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.026] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.027] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.028] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.028] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.030] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.031] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.032] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.033] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.034] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.036] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms 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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:50:52.037] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 10:50:52.037] [INFO ] Offline device check completed successfully [2026-08-21 10:55:52.038] [INFO ] Running offline device check... [2026-08-21 10:55:52.038] [INFO ] Starting offline device check... [2026-08-21 10:55:52.039] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=762.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-08-21 10:55:52.051] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.1ms idle=628.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:55:52.063] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.2ms idle=14.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.068] [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 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.070] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.074] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.077] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.079] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.2ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.082] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.083] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.091] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.095] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=5.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.110] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.8ms queue=0.1ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.116] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.118] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.119] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.141] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.147] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=21.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:55:52.149] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=6.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.152] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.154] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.3ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.155] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.216] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=59.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-08-21 10:55:52.217] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=60.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 10:55:52.218] [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-08-21 10:55:52.228] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.5ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.229] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.233] [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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.236] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.237] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.245] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.248] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=8.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.252] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms queue=0.4ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) 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-08-21 10:55:52.254] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.260] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms queue=1.4ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.264] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.271] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms 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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.275] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=2.2ms 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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.278] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.284] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=1.7ms idle=5.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.291] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms 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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.292] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.293] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.295] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.300] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms queue=1.8ms 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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.302] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.302] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.304] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.306] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.308] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 10:55:52.308] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 10:55:52.308] [INFO ] Offline device check completed successfully [2026-08-21 11:00:46.025] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 11:00:46.026] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=1193.5ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 11:00:46.030] [DEBUG] QUERY OK source="filter_usage" db=1.7ms queue=0.1ms idle=192.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-08-21 11:00:46.030] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 11:00:52.310] [INFO ] Running offline device check... [2026-08-21 11:00:52.310] [INFO ] Starting offline device check... [2026-08-21 11:00:52.312] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=939.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 11:00:52.327] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.5ms queue=1.3ms idle=461.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:00:52.335] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.8ms idle=15.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.337] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.338] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.340] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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-08-21 11:00:52.342] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.342] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.346] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.347] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.350] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.357] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.358] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.382] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.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-08-21 11:00:52.391] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.5ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.396] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=9.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.397] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.398] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.428] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=29.7ms queue=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.431] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=30.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:00:52.433] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.436] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.438] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.439] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.484] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=44.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.487] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms queue=0.1ms idle=45.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:00:52.488] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.499] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.500] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.505] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.508] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.510] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.514] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.518] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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-08-21 11:00:52.519] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.520] [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-08-21 11:00:52.521] [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-08-21 11:00:52.523] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.524] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.525] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.526] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.527] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.528] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.530] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.533] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.534] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.535] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.538] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=1.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.538] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.540] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.541] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.542] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.544] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:00:52.544] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 11:00:52.545] [INFO ] Offline device check completed successfully [2026-08-21 11:05:52.546] [INFO ] Running offline device check... [2026-08-21 11:05:52.546] [INFO ] Starting offline device check... [2026-08-21 11:05:52.548] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=1109.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-08-21 11:05:52.559] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.1ms idle=696.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:05:52.567] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.4ms idle=11.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.569] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=8.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.570] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.571] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.571] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.572] [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-08-21 11:05:52.572] [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-08-21 11:05:52.573] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.575] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.581] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.8ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.582] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=6.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.598] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.605] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms idle=16.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:05:52.610] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms 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-08-21 11:05:52.611] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=5.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.614] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.632] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.634] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=18.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:05:52.635] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 11:05:52.638] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.640] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.2ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.642] [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-08-21 11:05:52.684] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=41.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.687] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=2.3ms idle=43.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:05:52.689] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.696] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.698] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.702] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.705] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.708] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.711] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.712] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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-08-21 11:05:52.713] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.714] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.715] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.718] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.718] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.719] [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-08-21 11:05:52.719] [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-08-21 11:05:52.720] [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-08-21 11:05:52.722] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.723] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.724] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.728] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.729] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.729] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.730] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.730] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.731] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.731] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.732] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:05:52.732] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 11:05:52.732] [INFO ] Offline device check completed successfully [2026-08-21 11:10:52.733] [INFO ] Running offline device check... [2026-08-21 11:10:52.733] [INFO ] Starting offline device check... [2026-08-21 11:10:52.735] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=1207.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-08-21 11:10:52.745] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.0ms idle=565.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:10:52.752] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.1ms idle=10.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.755] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=9.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.757] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.757] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.758] [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-08-21 11:10:52.759] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.760] [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-08-21 11:10:52.760] [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-08-21 11:10:52.762] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.769] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.770] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.782] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.7ms 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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.787] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=12.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.790] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.790] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.791] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.810] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.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-08-21 11:10:52.812] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=19.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.814] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.815] [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-08-21 11:10:52.819] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.820] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.859] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=39.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-08-21 11:10:52.861] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=40.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:10:52.861] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.870] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.871] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.874] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.875] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.876] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.882] [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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.884] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.887] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.888] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.889] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.891] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.894] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.897] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.897] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.901] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.904] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.905] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.906] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.907] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.910] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.911] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.912] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.913] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.914] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.915] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:10:52.915] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 11:10:52.915] [INFO ] Offline device check completed successfully [2026-08-21 11:15:46.032] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 11:15:46.036] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms queue=0.1ms idle=1448.4ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 11:15:46.039] [DEBUG] QUERY OK source="filter_usage" db=2.8ms idle=452.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-08-21 11:15:46.040] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 11:15:52.916] [INFO ] Running offline device check... [2026-08-21 11:15:52.916] [INFO ] Starting offline device check... [2026-08-21 11:15:52.918] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=333.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 11:15:52.928] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.7ms idle=306.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:15:52.937] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms idle=11.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:52.940] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=9.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:52.942] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:52.943] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:52.945] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:52.946] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:52.947] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:52.948] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:52.954] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:52.965] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.2ms idle=6.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:52.970] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=14.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:52.986] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.0ms idle=5.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:52.994] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.5ms idle=17.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:15:52.998] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.000] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.001] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.019] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.020] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=17.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:15:53.021] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.023] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.024] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 11:15:53.026] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.064] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=36.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.066] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=38.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:15:53.067] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.076] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.078] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.081] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.092] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.093] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.095] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.096] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.098] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.099] [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-08-21 11:15:53.100] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.102] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 11:15:53.102] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.103] [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-08-21 11:15:53.104] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.105] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.105] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.106] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.106] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.107] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.108] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.109] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.110] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.111] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:15:53.111] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 11:15:53.111] [INFO ] Offline device check completed successfully [2026-08-21 11:20:53.112] [INFO ] Running offline device check... [2026-08-21 11:20:53.112] [INFO ] Starting offline device check... [2026-08-21 11:20:53.113] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=434.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 11:20:53.120] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=189.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:20:53.126] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.127] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.128] [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-08-21 11:20:53.129] [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-08-21 11:20:53.130] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.130] [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-08-21 11:20:53.131] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.132] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms 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-08-21 11:20:53.133] [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-08-21 11:20:53.143] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.143] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=9.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.157] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.2ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.163] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=14.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.165] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=6.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.166] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.166] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.183] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.7ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.185] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=17.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:20:53.186] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.188] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.190] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.191] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.232] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=40.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.233] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=41.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:20:53.234] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.243] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.244] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms 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-08-21 11:20:53.247] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.249] [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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.250] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.255] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.256] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.257] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.258] [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-08-21 11:20:53.258] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.262] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms queue=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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.263] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.264] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.265] [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-08-21 11:20:53.265] [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-08-21 11:20:53.266] [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-08-21 11:20:53.267] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.269] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.270] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.272] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.273] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.274] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.275] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.276] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.276] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.277] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:20:53.277] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 11:20:53.277] [INFO ] Offline device check completed successfully [2026-08-21 11:25:53.278] [INFO ] Running offline device check... [2026-08-21 11:25:53.278] [INFO ] Starting offline device check... [2026-08-21 11:25:53.279] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1550.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-08-21 11:25:53.291] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.7ms idle=926.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:25:53.302] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms queue=2.1ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.303] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=10.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.305] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.305] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.306] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.307] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.307] [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-08-21 11:25:53.308] [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-08-21 11:25:53.310] [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-08-21 11:25:53.314] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.315] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.333] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.341] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.3ms 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 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.343] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=8.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.349] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.350] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.2ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.384] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=34.0ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.386] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=28.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:25:53.388] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.391] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.397] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.398] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.442] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=43.8ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.444] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=44.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:25:53.445] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.451] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.452] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.454] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.455] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.456] [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-08-21 11:25:53.460] [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-08-21 11:25:53.461] [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-08-21 11:25:53.462] [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-08-21 11:25:53.463] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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-08-21 11:25:53.464] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.467] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.468] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.469] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.470] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.471] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.471] [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-08-21 11:25:53.472] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.475] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.476] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.477] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.477] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.478] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.480] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.481] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.482] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.483] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:25:53.483] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 11:25:53.483] [INFO ] Offline device check completed successfully [2026-08-21 11:26:59.723] [INFO ] [Ysp.Scheduler] Started. SFTP in 15h 33m, MIS in 20h 33m [2026-08-21 11:26:59.791] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 11:26:59.811] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 11:27:04.285] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 11:27:04.289] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 11:27:04.290] [INFO ] Building initial filter cache... [2026-08-21 11:27:04.337] [DEBUG] QUERY OK source="tms_terminals" db=5.2ms queue=1.2ms idle=444.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-08-21 11:27:04.367] [DEBUG] QUERY OK source="filter_usage" db=0.8ms queue=0.7ms idle=104.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-08-21 11:27:04.367] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 11:27:04.685] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 11:27:04.744] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-08-21 11:27:04.755] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-08-21 11:27:12.417] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:27:12.417] [INFO ] Incoming JSON payload: {"oid":"0543444b-9ace-4542-9a59-948adbc3a097","sn":"98251226730001","uploadTime":"2026-08-21T11:27:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:27:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:27:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:27:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:27:12Z"},{"itemkey":"ram_free_mb","value":"916","timestamp":"2026-08-21T11:27:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:27:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:27:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:27:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:27:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:27:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:27:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:27:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:27:12Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:27:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:27: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:27:12.425] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0543444b-9ace-4542-9a59-948adbc3a097", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:27:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:27:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:27:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:27:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:27:12Z", "value" => "916"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:27:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:27:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:27:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:27:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:27:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:27:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:27:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:27:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:27:12Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:27:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:27: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:27:12Z", "vendor" => "morefun"} [2026-08-21 11:27:12.426] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:27:12.436] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:27:12.436] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:27:12.444] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms queue=0.4ms idle=1136.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-08-21 11:27:12.452] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms queue=5.8ms idle=135.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:27:12.452] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:27:12.507] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=2.0ms idle=60.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 11:27:12.559] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:27:12.637] [DEBUG] QUERY OK source="tms_terminals" db=44.4ms queue=0.4ms idle=111.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:27:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:27:12.657] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:27:12.658] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.3ms idle=149.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-08-21 11:27:12.700] [DEBUG] QUERY OK source="tms_terminals" db=35.2ms queue=0.2ms idle=56.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:27:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:27:12.765] [DEBUG] QUERY OK db=41.4ms queue=0.7ms idle=64.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0543444b-9ace-4542-9a59-948adbc3a097", "2026-08-21T11:27:12Z", ~N[2026-08-21 11:27:12], ~N[2026-08-21 11:27:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:27:12.781] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77753, oid: "0543444b-9ace-4542-9a59-948adbc3a097", upload_time: "2026-08-21T11:27:12Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:12], updated_at: ~N[2026-08-21 11:27:12]} [2026-08-21 11:27:12.781] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:27:12Z", "value" => "morefun"} [2026-08-21 11:27:12.809] [DEBUG] QUERY OK db=24.5ms queue=2.4ms idle=81.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:12Z", "morefun", "vendor", 77753, ~N[2026-08-21 11:27:12], ~N[2026-08-21 11:27:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:12.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790153, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:12], updated_at: ~N[2026-08-21 11:27:12]}} [2026-08-21 11:27:12.811] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:27:12Z", "value" => "kiosk_launcher"} [2026-08-21 11:27:12.873] [DEBUG] QUERY OK db=61.9ms queue=0.4ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:12Z", "kiosk_launcher", "model", 77753, ~N[2026-08-21 11:27:12], ~N[2026-08-21 11:27:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:12.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790154, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:12], updated_at: ~N[2026-08-21 11:27:12]}} [2026-08-21 11:27:12.874] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:27:12Z", "value" => "1.0"} [2026-08-21 11:27:12.928] [DEBUG] QUERY OK db=52.5ms idle=66.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:12Z", "1.0", "app_version", 77753, ~N[2026-08-21 11:27:12], ~N[2026-08-21 11:27:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:12.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790155, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:12], updated_at: ~N[2026-08-21 11:27:12]}} [2026-08-21 11:27:12.928] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:27:12Z", "value" => "13"} [2026-08-21 11:27:12.961] [DEBUG] QUERY OK db=32.8ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:12Z", "13", "android_version", 77753, ~N[2026-08-21 11:27:12], ~N[2026-08-21 11:27:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:12.962] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790156, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:12], updated_at: ~N[2026-08-21 11:27:12]}} [2026-08-21 11:27:12.962] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:27:12Z", "value" => "916"} [2026-08-21 11:27:13.012] [DEBUG] QUERY OK db=50.0ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:12Z", "916", "ram_free_mb", 77753, ~N[2026-08-21 11:27:12], ~N[2026-08-21 11:27:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:13.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790157, itemkey: "ram_free_mb", value: "916", timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:12], updated_at: ~N[2026-08-21 11:27:12]}} [2026-08-21 11:27:13.013] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:27:12Z", "value" => "WIFI"} [2026-08-21 11:27:13.048] [DEBUG] QUERY OK db=34.7ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:12Z", "WIFI", "network_type", 77753, ~N[2026-08-21 11:27:13], ~N[2026-08-21 11:27:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:13.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790158, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:13], updated_at: ~N[2026-08-21 11:27:13]}} [2026-08-21 11:27:13.052] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:27:12Z", "value" => "true"} [2026-08-21 11:27:13.107] [DEBUG] QUERY OK db=52.2ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:12Z", "true", "kiosk_active", 77753, ~N[2026-08-21 11:27:13], ~N[2026-08-21 11:27:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:13.107] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790159, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:13], updated_at: ~N[2026-08-21 11:27:13]}} [2026-08-21 11:27:13.107] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:27:12Z", "value" => ""} [2026-08-21 11:27:13.153] [DEBUG] QUERY OK db=37.3ms queue=4.7ms idle=62.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:27:12Z", "sim_operator", 77753, ~N[2026-08-21 11:27:13], ~N[2026-08-21 11:27:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:13.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790160, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:13], updated_at: ~N[2026-08-21 11:27:13]}} [2026-08-21 11:27:13.159] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:27:12Z", "value" => "UNKNOWN"} [2026-08-21 11:27:13.203] [DEBUG] QUERY OK db=41.5ms queue=0.1ms idle=54.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:12Z", "UNKNOWN", "sim_number", 77753, ~N[2026-08-21 11:27:13], ~N[2026-08-21 11:27:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:13.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790161, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:13], updated_at: ~N[2026-08-21 11:27:13]}} [2026-08-21 11:27:13.203] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:27:12Z", "value" => "UNKNOWN"} [2026-08-21 11:27:13.277] [DEBUG] QUERY OK db=68.8ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:12Z", "UNKNOWN", "sim_iccid", 77753, ~N[2026-08-21 11:27:13], ~N[2026-08-21 11:27:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:13.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790162, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:13], updated_at: ~N[2026-08-21 11:27:13]}} [2026-08-21 11:27:13.277] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:27:12Z", "value" => "UNKNOWN"} [2026-08-21 11:27:13.322] [DEBUG] QUERY OK db=44.5ms idle=76.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:12Z", "UNKNOWN", "sim_imsi", 77753, ~N[2026-08-21 11:27:13], ~N[2026-08-21 11:27:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:13.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790163, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:13], updated_at: ~N[2026-08-21 11:27:13]}} [2026-08-21 11:27:13.322] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:27:12Z", "value" => "UNKNOWN"} [2026-08-21 11:27:13.368] [DEBUG] QUERY OK db=45.6ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:12Z", "UNKNOWN", "sim_iccid2", 77753, ~N[2026-08-21 11:27:13], ~N[2026-08-21 11:27:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:13.369] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790164, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:13], updated_at: ~N[2026-08-21 11:27:13]}} [2026-08-21 11:27:13.369] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:27:12Z", "value" => "UNKNOWN"} [2026-08-21 11:27:13.407] [DEBUG] QUERY OK db=37.7ms queue=0.1ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:12Z", "UNKNOWN", "sim_imsi2", 77753, ~N[2026-08-21 11:27:13], ~N[2026-08-21 11:27:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:13.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790165, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:13], updated_at: ~N[2026-08-21 11:27:13]}} [2026-08-21 11:27:13.407] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:27:12Z", "value" => "34"} [2026-08-21 11:27:13.455] [DEBUG] QUERY OK db=46.7ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:12Z", "34", "data_usage_mb", 77753, ~N[2026-08-21 11:27:13], ~N[2026-08-21 11:27:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:13.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790166, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:13], updated_at: ~N[2026-08-21 11:27:13]}} [2026-08-21 11:27:13.457] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:27:12Z", "value" => "0"} [2026-08-21 11:27:13.496] [DEBUG] QUERY OK db=36.3ms queue=0.6ms idle=4.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:12Z", "0", "mobile_data_mb", 77753, ~N[2026-08-21 11:27:13], ~N[2026-08-21 11:27:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:13.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790167, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:13], updated_at: ~N[2026-08-21 11:27:13]}} [2026-08-21 11:27:13.497] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:27: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:27:13.560] [DEBUG] QUERY OK db=61.3ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77753, ~N[2026-08-21 11:27:13], ~N[2026-08-21 11:27:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:13.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790168, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:27:12Z", message: nil, status_log_id: 77753, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:13], updated_at: ~N[2026-08-21 11:27:13]}} [2026-08-21 11:27:42.525] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:27:42.525] [INFO ] Incoming JSON payload: {"oid":"1e5656dc-2e34-454c-9ccc-67940aeed530","sn":"98251226730001","uploadTime":"2026-08-21T11:27:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:27:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:27:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:27:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:27:42Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T11:27:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:27:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:27:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:27:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:27:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:27:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:27:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:27:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:27:42Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:27:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:27: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:27:42.526] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1e5656dc-2e34-454c-9ccc-67940aeed530", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:27:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:27:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:27:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:27:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:27:42Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:27:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:27:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:27:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:27:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:27:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:27:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:27:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:27:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:27:42Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:27:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:27: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:27:42Z", "vendor" => "morefun"} [2026-08-21 11:27:42.526] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:27:42.526] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:27:42.530] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:27:42.531] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=461.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-08-21 11:27:42.534] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms 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.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:27:42.534] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:27:42.537] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=2.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:27:42.537] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:27:42.606] [DEBUG] QUERY OK source="tms_terminals" db=68.3ms queue=0.3ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:27:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:27:42.606] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:27:42.610] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=71.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 11:27:42.680] [DEBUG] QUERY OK source="tms_terminals" db=69.0ms queue=0.2ms idle=4.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:27:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:27:42.721] [DEBUG] QUERY OK db=37.1ms queue=3.3ms idle=70.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "1e5656dc-2e34-454c-9ccc-67940aeed530", "2026-08-21T11:27:42Z", ~N[2026-08-21 11:27:42], ~N[2026-08-21 11:27:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:27:42.721] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77754, oid: "1e5656dc-2e34-454c-9ccc-67940aeed530", upload_time: "2026-08-21T11:27:42Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:42], updated_at: ~N[2026-08-21 11:27:42]} [2026-08-21 11:27:42.721] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:27:42Z", "value" => "morefun"} [2026-08-21 11:27:42.750] [DEBUG] QUERY OK db=27.9ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:42Z", "morefun", "vendor", 77754, ~N[2026-08-21 11:27:42], ~N[2026-08-21 11:27:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:42.751] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790169, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:42], updated_at: ~N[2026-08-21 11:27:42]}} [2026-08-21 11:27:42.752] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:27:42Z", "value" => "kiosk_launcher"} [2026-08-21 11:27:42.851] [DEBUG] QUERY OK db=99.2ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:42Z", "kiosk_launcher", "model", 77754, ~N[2026-08-21 11:27:42], ~N[2026-08-21 11:27:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:42.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790170, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:42], updated_at: ~N[2026-08-21 11:27:42]}} [2026-08-21 11:27:42.852] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:27:42Z", "value" => "1.0"} [2026-08-21 11:27:42.877] [DEBUG] QUERY OK db=24.5ms idle=101.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:42Z", "1.0", "app_version", 77754, ~N[2026-08-21 11:27:42], ~N[2026-08-21 11:27:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:42.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790171, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:42], updated_at: ~N[2026-08-21 11:27:42]}} [2026-08-21 11:27:42.877] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:27:42Z", "value" => "13"} [2026-08-21 11:27:42.921] [DEBUG] QUERY OK db=43.8ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:42Z", "13", "android_version", 77754, ~N[2026-08-21 11:27:42], ~N[2026-08-21 11:27:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:42.921] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790172, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:42], updated_at: ~N[2026-08-21 11:27:42]}} [2026-08-21 11:27:42.922] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:27:42Z", "value" => "921"} [2026-08-21 11:27:42.957] [DEBUG] QUERY OK db=34.1ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:42Z", "921", "ram_free_mb", 77754, ~N[2026-08-21 11:27:42], ~N[2026-08-21 11:27:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:42.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790173, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:42], updated_at: ~N[2026-08-21 11:27:42]}} [2026-08-21 11:27:42.960] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:27:42Z", "value" => "WIFI"} [2026-08-21 11:27:43.021] [DEBUG] QUERY OK db=58.6ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:42Z", "WIFI", "network_type", 77754, ~N[2026-08-21 11:27:42], ~N[2026-08-21 11:27:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:43.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790174, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:42], updated_at: ~N[2026-08-21 11:27:42]}} [2026-08-21 11:27:43.021] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:27:42Z", "value" => "true"} [2026-08-21 11:27:43.047] [DEBUG] QUERY OK db=25.0ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:42Z", "true", "kiosk_active", 77754, ~N[2026-08-21 11:27:43], ~N[2026-08-21 11:27:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:43.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790175, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:43], updated_at: ~N[2026-08-21 11:27:43]}} [2026-08-21 11:27:43.047] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:27:42Z", "value" => ""} [2026-08-21 11:27:43.278] [DEBUG] QUERY OK db=223.4ms queue=3.2ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:27:42Z", "sim_operator", 77754, ~N[2026-08-21 11:27:43], ~N[2026-08-21 11:27:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:43.278] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790176, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:43], updated_at: ~N[2026-08-21 11:27:43]}} [2026-08-21 11:27:43.278] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:27:42Z", "value" => "UNKNOWN"} [2026-08-21 11:27:43.326] [DEBUG] QUERY OK db=47.7ms idle=231.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:42Z", "UNKNOWN", "sim_number", 77754, ~N[2026-08-21 11:27:43], ~N[2026-08-21 11:27:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:43.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790177, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:43], updated_at: ~N[2026-08-21 11:27:43]}} [2026-08-21 11:27:43.326] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:27:42Z", "value" => "UNKNOWN"} [2026-08-21 11:27:43.365] [DEBUG] QUERY OK db=38.1ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:42Z", "UNKNOWN", "sim_iccid", 77754, ~N[2026-08-21 11:27:43], ~N[2026-08-21 11:27:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:43.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790178, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:43], updated_at: ~N[2026-08-21 11:27:43]}} [2026-08-21 11:27:43.365] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:27:42Z", "value" => "UNKNOWN"} [2026-08-21 11:27:43.422] [DEBUG] QUERY OK db=56.3ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:42Z", "UNKNOWN", "sim_imsi", 77754, ~N[2026-08-21 11:27:43], ~N[2026-08-21 11:27:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:43.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790179, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:43], updated_at: ~N[2026-08-21 11:27:43]}} [2026-08-21 11:27:43.422] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:27:42Z", "value" => "UNKNOWN"} [2026-08-21 11:27:43.492] [DEBUG] QUERY OK db=69.5ms idle=57.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:42Z", "UNKNOWN", "sim_iccid2", 77754, ~N[2026-08-21 11:27:43], ~N[2026-08-21 11:27:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:43.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790180, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:43], updated_at: ~N[2026-08-21 11:27:43]}} [2026-08-21 11:27:43.493] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:27:42Z", "value" => "UNKNOWN"} [2026-08-21 11:27:43.563] [DEBUG] QUERY OK db=70.1ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:42Z", "UNKNOWN", "sim_imsi2", 77754, ~N[2026-08-21 11:27:43], ~N[2026-08-21 11:27:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:43.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790181, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:43], updated_at: ~N[2026-08-21 11:27:43]}} [2026-08-21 11:27:43.564] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:27:42Z", "value" => "34"} [2026-08-21 11:27:43.596] [DEBUG] QUERY OK db=31.7ms idle=71.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:42Z", "34", "data_usage_mb", 77754, ~N[2026-08-21 11:27:43], ~N[2026-08-21 11:27:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:43.596] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790182, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:43], updated_at: ~N[2026-08-21 11:27:43]}} [2026-08-21 11:27:43.600] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:27:42Z", "value" => "0"} [2026-08-21 11:27:43.668] [DEBUG] QUERY OK db=66.4ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27:42Z", "0", "mobile_data_mb", 77754, ~N[2026-08-21 11:27:43], ~N[2026-08-21 11:27:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:43.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790183, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:43], updated_at: ~N[2026-08-21 11:27:43]}} [2026-08-21 11:27:43.669] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:27: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:27:43.751] [DEBUG] QUERY OK db=80.8ms idle=73.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:27: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77754, ~N[2026-08-21 11:27:43], ~N[2026-08-21 11:27:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:43.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790184, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:27:42Z", message: nil, status_log_id: 77754, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:43], updated_at: ~N[2026-08-21 11:27:43]}} [2026-08-21 11:27:51.558] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:27:51.559] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T11:27:18Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T11:27:18Z","value":"64"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T11:27:18Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T11:27:18Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T11:27:18Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T11:27:18Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T11:27:18Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T11:27:18Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-08-21T11:27:18Z","vendor":"MoreFun"} [2026-08-21 11:27:51.560] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:27:18Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:27:18Z", "value" => "64"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:27:18Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:27:18Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:27:18Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:27:18Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:27:18Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:27:18Z", "value" => "3.8.7.3"}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:27:18Z", "vendor" => "MoreFun"} [2026-08-21 11:27:51.561] [INFO ] Extracted versions for 98251226730002: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:27:51.561] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:27:51.562] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-08-21 11:27:51.563] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=678.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-08-21 11:27:51.565] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=105.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 11:27:51.569] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms queue=1.3ms idle=4.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-08-21 11:27:51.588] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=1.6ms idle=21.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-08-21 11:27:51.597] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms queue=1.2ms idle=26.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:27:51.630] [DEBUG] QUERY OK source="pos_merchant" db=0.4ms queue=29.1ms idle=12.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:27:51.634] [DEBUG] QUERY OK db=0.7ms queue=0.7ms idle=761.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 ["123451234512345"] [2026-08-21 11:27:51.635] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:27:51.640] [DEBUG] QUERY OK source="pos_terminal_data" db=1.4ms queue=0.8ms idle=40.6ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["81748887"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:27:51.640] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748887, using defaults [2026-08-21 11:27:51.647] [DEBUG] QUERY OK source="address" db=1.0ms queue=1.4ms idle=14.3ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:27:51.648] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="123451234512345" [2026-08-21 11:27:51.654] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-08-21 11:27:51.701] [DEBUG] QUERY OK db=36.4ms queue=2.0ms idle=19.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "5e4e853c205895c9991031cd4265c8d3b681c06b6e1887ed57bbc69e1e55a1fd", 3778, 931, ~U[2026-08-21 11:27:51Z], "priv/ota/98251226730002/params.zip", 13, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:27:51], ~N[2026-08-21 11:27:51]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:27:51.701] [INFO ] AutoPushService: Created push log 49008 for MF919 params.zip [2026-08-21 11:27:51.705] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 3778, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:27:51.705] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-08-21 11:27:51.708] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-08-21 11:27:51.716] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=1.2ms idle=67.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 11:27:51.727] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 11:27:51.770] [DEBUG] QUERY OK db=41.5ms queue=1.0ms idle=28.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d7a9ec47815afee7f2a8bebc7ba158b8d0f3fa916145adb20499a3b2078b6871", 3906, 17947, ~U[2026-08-21 11:27:51Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:27:51], ~N[2026-08-21 11:27:51]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:27:51.770] [INFO ] AutoPushService: Created push log 49009 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:27:51.770] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 3906, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:27:51.770] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-08-21 11:27:51.771] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-08-21 11:27:51.773] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=54.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-08-21 11:27:51.777] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-08-21 11:27:51.778] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:27:51.778] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 11:27:51.821] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:27:51.822] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:27:51.822] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:27:51.823] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=49.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-08-21 11:27:51.823] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:27:51.823] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-08-21 11:27:51.824] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=45.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:27:51.824] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:27:51.849] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:27:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:27:51.851] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.7ms idle=25.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-08-21 11:27:51.851] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:27:51.853] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=0.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:27:51.853] [INFO ] VersionComplianceChecker: 98251226730002 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:27:51.918] [DEBUG] QUERY OK source="parameter_push_logs" db=57.7ms queue=0.8ms idle=8.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 [13, "application", ~N[2026-08-21 10:57:51]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:27:51.919] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730002 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:27:51.919] [INFO ] AutoPushService: Targeted application push for 98251226730002 (MoreFun MF919) [2026-08-21 11:27:51.920] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=66.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:27:51.921] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=2.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:27:51.921] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:27:51.922] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:27:51.964] [DEBUG] QUERY OK source="tms_terminals" db=40.0ms queue=0.2ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:27:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:27:52.001] [DEBUG] QUERY OK db=35.5ms queue=1.2ms idle=41.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-08-21T11:27:18Z", ~N[2026-08-21 11:27:51], ~N[2026-08-21 11:27:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:27:52.001] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77755, oid: "organization_id", upload_time: "2026-08-21T11:27:18Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:51], updated_at: ~N[2026-08-21 11:27:51]} [2026-08-21 11:27:52.001] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:27:18Z", "value" => "online"} [2026-08-21 11:27:52.025] [DEBUG] QUERY OK db=22.6ms queue=0.4ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T11:27:18Z", "online", "status", 77755, ~N[2026-08-21 11:27:52], ~N[2026-08-21 11:27:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:52.025] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790185, itemkey: "status", value: "online", timestamp: "2026-08-21T11:27:18Z", message: "Terminal status update", status_log_id: 77755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:52], updated_at: ~N[2026-08-21 11:27:52]}} [2026-08-21 11:27:52.025] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-08-21 11:27:52.026] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:27:18Z", "value" => "64"} [2026-08-21 11:27:52.074] [DEBUG] QUERY OK db=46.9ms queue=0.7ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T11:27:18Z", "64", "battery", 77755, ~N[2026-08-21 11:27:52], ~N[2026-08-21 11:27:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:52.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790186, itemkey: "battery", value: "64", timestamp: "2026-08-21T11:27:18Z", message: "Battery level", status_log_id: 77755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:52], updated_at: ~N[2026-08-21 11:27:52]}} [2026-08-21 11:27:52.074] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:27:18Z", "value" => "online"} [2026-08-21 11:27:52.123] [DEBUG] QUERY OK db=48.7ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T11:27:18Z", "online", "network", 77755, ~N[2026-08-21 11:27:52], ~N[2026-08-21 11:27:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:52.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790187, itemkey: "network", value: "online", timestamp: "2026-08-21T11:27:18Z", message: "Network connectivity", status_log_id: 77755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:52], updated_at: ~N[2026-08-21 11:27:52]}} [2026-08-21 11:27:52.124] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-08-21 11:27:52.124] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:27:18Z", "value" => "0"} [2026-08-21 11:27:52.183] [DEBUG] QUERY OK db=59.0ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T11:27:18Z", "0", "cpu", 77755, ~N[2026-08-21 11:27:52], ~N[2026-08-21 11:27:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:52.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790188, itemkey: "cpu", value: "0", timestamp: "2026-08-21T11:27:18Z", message: "CPU usage percentage", status_log_id: 77755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:52], updated_at: ~N[2026-08-21 11:27:52]}} [2026-08-21 11:27:52.184] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:27:18Z", "value" => "1.0.0"} [2026-08-21 11:27:52.244] [DEBUG] QUERY OK db=59.6ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T11:27:18Z", "1.0.0", "parameter_config", 77755, ~N[2026-08-21 11:27:52], ~N[2026-08-21 11:27:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:52.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790189, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T11:27:18Z", message: "Current parameters version", status_log_id: 77755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:52], updated_at: ~N[2026-08-21 11:27:52]}} [2026-08-21 11:27:52.245] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:27:18Z", "value" => "1.0.1"} [2026-08-21 11:27:52.293] [DEBUG] QUERY OK db=47.6ms idle=62.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T11:27:18Z", "1.0.1", "emv_config", 77755, ~N[2026-08-21 11:27:52], ~N[2026-08-21 11:27:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:52.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790190, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T11:27:18Z", message: "Current EMV config version", status_log_id: 77755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:52], updated_at: ~N[2026-08-21 11:27:52]}} [2026-08-21 11:27:52.294] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:27:18Z", "value" => ""} [2026-08-21 11:27:52.439] [DEBUG] QUERY OK db=144.5ms queue=0.5ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T11:27:18Z", "keys_config", 77755, ~N[2026-08-21 11:27:52], ~N[2026-08-21 11:27:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:52.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790191, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T11:27:18Z", message: "Current keys config version", status_log_id: 77755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:52], updated_at: ~N[2026-08-21 11:27:52]}} [2026-08-21 11:27:52.440] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:27:18Z", "value" => "3.8.7.3"} [2026-08-21 11:27:52.493] [DEBUG] QUERY OK db=52.9ms idle=146.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T11:27:18Z", "3.8.7.3", "application", 77755, ~N[2026-08-21 11:27:52], ~N[2026-08-21 11:27:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:52.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790192, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T11:27:18Z", message: "Current application version", status_log_id: 77755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:52], updated_at: ~N[2026-08-21 11:27:52]}} [2026-08-21 11:27:52.493] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 11:27:52.494] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T02:37:16Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T02:37:16Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T02:37:16Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T02:37:16Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T02:37:16Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T02:37:16Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T02:37:16Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T02:37:16Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T02:37:16Z","vendor":"MoreFun"} [2026-08-21 11:27:52.494] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:37:16Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:37:16Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:37:16Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:37:16Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:37:16Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:37:16Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:37:16Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:37:16Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T02:37:16Z", "vendor" => "MoreFun"} [2026-08-21 11:27:52.494] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:27:52.494] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 11:27:52.494] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 11:27:52.496] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=33.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`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-08-21 11:27:52.497] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 11:27:52.499] [DEBUG] QUERY OK source="parameter_template_values" db=1.2ms queue=0.1ms idle=1.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:27:52.503] [DEBUG] QUERY OK source="parameter_definitions" db=2.4ms queue=1.2ms idle=2.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:27:52.505] [DEBUG] QUERY OK source="pos_terminal" db=1.1ms idle=5.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:27:52.545] [DEBUG] QUERY OK source="pos_merchant" db=39.4ms idle=2.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:27:52.547] [DEBUG] QUERY OK db=0.5ms queue=1.6ms idle=1673.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 ["123451234512345"] [2026-08-21 11:27:52.547] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:27:52.549] [DEBUG] QUERY OK source="pos_terminal_data" db=1.0ms 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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:27:52.549] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 11:27:52.551] [DEBUG] QUERY OK source="address" db=1.4ms queue=0.2ms idle=4.6ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:27:52.551] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 11:27:52.553] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 11:27:52.655] [DEBUG] QUERY OK db=101.3ms queue=0.3ms idle=4.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "000ff0e0ad4285192da41329a4126b4b7b5b02b1074ed5dea263d79f10b5974e", 676, 932, ~U[2026-08-21 11:27:52Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:27:52], ~N[2026-08-21 11:27:52]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:27:52.655] [INFO ] AutoPushService: Created push log 49010 for MF919 params.zip [2026-08-21 11:27:52.656] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 676, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:27:52.656] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:27:52.656] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 11:27:52.657] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=104.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-08-21 11:27:52.662] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 11:27:52.719] [DEBUG] QUERY OK db=53.0ms queue=3.4ms idle=7.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "003a02fdcc5580b8efa93e33bea9c103424c97d1d2348b38b0847c65a7bc52fa", 101, 17947, ~U[2026-08-21 11:27:52Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:27:52], ~N[2026-08-21 11:27:52]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:27:52.719] [INFO ] AutoPushService: Created push log 49011 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:27:52.719] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 101, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:27:52.719] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:27:52.720] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 11:27:52.720] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=63.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-08-21 11:27:52.720] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 11:27:52.722] [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"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:27:52.722] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 11:27:52.725] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:27:52.725] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:27:52.725] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:27:52.726] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=4.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:27:52.726] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:27:52.726] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 11:27:52.729] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=4.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:27:52.730] [INFO ] Terminal updated: 98250623730001 [2026-08-21 11:27:52.777] [DEBUG] QUERY OK source="tms_terminals" db=45.1ms idle=6.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:27:52], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:27:52.779] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=48.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-08-21 11:27:52.779] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.1ms 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-08-21 11:27:52.780] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms 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-08-21 11:27:52.780] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:27:52.804] [DEBUG] QUERY OK source="parameter_push_logs" db=23.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 [19, "application", ~N[2026-08-21 10:57:52]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:27:52.805] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:27:52.805] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 11:27:52.805] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:27:52.806] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:27:52.806] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:27:52.807] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:27:52.854] [DEBUG] QUERY OK source="tms_terminals" db=46.5ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:27:52], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:27:52.888] [DEBUG] QUERY OK db=32.9ms idle=47.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T02:37:16Z", ~N[2026-08-21 11:27:52], ~N[2026-08-21 11:27:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:27:52.888] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77756, oid: "organization_id", upload_time: "2026-08-21T02:37:16Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:52], updated_at: ~N[2026-08-21 11:27:52]} [2026-08-21 11:27:52.888] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:37:16Z", "value" => "online"} [2026-08-21 11:27:52.956] [DEBUG] QUERY OK db=67.8ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T02:37:16Z", "online", "status", 77756, ~N[2026-08-21 11:27:52], ~N[2026-08-21 11:27:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:52.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790193, itemkey: "status", value: "online", timestamp: "2026-08-21T02:37:16Z", message: "Terminal status update", status_log_id: 77756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:52], updated_at: ~N[2026-08-21 11:27:52]}} [2026-08-21 11:27:52.957] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 11:27:52.957] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:37:16Z", "value" => "51"} [2026-08-21 11:27:53.000] [DEBUG] QUERY OK db=42.6ms idle=69.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T02:37:16Z", "51", "battery", 77756, ~N[2026-08-21 11:27:52], ~N[2026-08-21 11:27:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:53.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790194, itemkey: "battery", value: "51", timestamp: "2026-08-21T02:37:16Z", message: "Battery level", status_log_id: 77756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:52], updated_at: ~N[2026-08-21 11:27:52]}} [2026-08-21 11:27:53.000] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:37:16Z", "value" => "online"} [2026-08-21 11:27:53.071] [DEBUG] QUERY OK db=68.2ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T02:37:16Z", "online", "network", 77756, ~N[2026-08-21 11:27:53], ~N[2026-08-21 11:27:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:53.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790195, itemkey: "network", value: "online", timestamp: "2026-08-21T02:37:16Z", message: "Network connectivity", status_log_id: 77756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:53], updated_at: ~N[2026-08-21 11:27:53]}} [2026-08-21 11:27:53.071] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 11:27:53.072] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:37:16Z", "value" => "0"} [2026-08-21 11:27:53.104] [DEBUG] QUERY OK db=30.0ms queue=1.4ms idle=72.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T02:37:16Z", "0", "cpu", 77756, ~N[2026-08-21 11:27:53], ~N[2026-08-21 11:27:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:53.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790196, itemkey: "cpu", value: "0", timestamp: "2026-08-21T02:37:16Z", message: "CPU usage percentage", status_log_id: 77756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:53], updated_at: ~N[2026-08-21 11:27:53]}} [2026-08-21 11:27:53.106] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:37:16Z", "value" => "1.0.0"} [2026-08-21 11:27:53.157] [DEBUG] QUERY OK db=49.8ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T02:37:16Z", "1.0.0", "parameter_config", 77756, ~N[2026-08-21 11:27:53], ~N[2026-08-21 11:27:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:53.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790197, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T02:37:16Z", message: "Current parameters version", status_log_id: 77756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:53], updated_at: ~N[2026-08-21 11:27:53]}} [2026-08-21 11:27:53.163] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:37:16Z", "value" => "1.0.1"} [2026-08-21 11:27:53.243] [DEBUG] QUERY OK db=79.1ms queue=0.7ms idle=59.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T02:37:16Z", "1.0.1", "emv_config", 77756, ~N[2026-08-21 11:27:53], ~N[2026-08-21 11:27:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:53.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790198, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T02:37:16Z", message: "Current EMV config version", status_log_id: 77756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:53], updated_at: ~N[2026-08-21 11:27:53]}} [2026-08-21 11:27:53.247] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:37:16Z", "value" => ""} [2026-08-21 11:27:53.308] [DEBUG] QUERY OK db=59.6ms queue=0.8ms idle=91.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T02:37:16Z", "keys_config", 77756, ~N[2026-08-21 11:27:53], ~N[2026-08-21 11:27:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:53.308] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790199, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T02:37:16Z", message: "Current keys config version", status_log_id: 77756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:53], updated_at: ~N[2026-08-21 11:27:53]}} [2026-08-21 11:27:53.308] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:37:16Z", "value" => "3.8.7.3"} [2026-08-21 11:27:53.358] [DEBUG] QUERY OK db=49.4ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T02:37:16Z", "3.8.7.3", "application", 77756, ~N[2026-08-21 11:27:53], ~N[2026-08-21 11:27:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:27:53.359] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790200, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T02:37:16Z", message: "Current application version", status_log_id: 77756, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:27:53], updated_at: ~N[2026-08-21 11:27:53]}} [2026-08-21 11:27:53.365] [WARN ] Unexpected async result [2026-08-21 11:27:53.365] [WARN ] Unexpected async result [2026-08-21 11:27:53.367] [WARN ] Unexpected async result [2026-08-21 11:27:53.367] [WARN ] Unexpected async result [2026-08-21 11:28:07.547] [INFO ] GET /admin/settlements/tid-master [2026-08-21 11:28:07.597] [DEBUG] Processing with PlatformWeb.SettlementLive.TidMasterBrowser.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 11:28:07.641] [DEBUG] QUERY OK source="users_tokens" db=0.6ms queue=1.7ms idle=1616.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 11:28:07.636032Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 11:28:07.718] [DEBUG] QUERY OK source="tid_masters" db=5.0ms queue=1.9ms idle=1195.8ms SELECT count(t0.`id`) FROM `tid_masters` AS t0 [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.load_rows/1, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:413 [2026-08-21 11:28:07.742] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.6ms idle=222.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 ORDER BY t0.`merchant_name_legal`, t0.`mid` LIMIT 500 [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.load_rows/1, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:419 [2026-08-21 11:28:07.744] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.3ms idle=24.7ms SELECT DISTINCT t0.`bank_code` FROM `tid_masters` AS t0 WHERE (NOT (t0.`bank_code` IS NULL)) ORDER BY t0.`bank_code` [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.mount/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:52 [2026-08-21 11:28:07.745] [DEBUG] QUERY OK source="tid_masters" db=0.3ms queue=0.2ms idle=1.8ms SELECT DISTINCT t0.`mcc_code` FROM `tid_masters` AS t0 WHERE (NOT (t0.`mcc_code` IS NULL)) ORDER BY t0.`mcc_code` [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.mount/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:53 [2026-08-21 11:28:07.746] [DEBUG] QUERY OK source="tid_masters" db=0.9ms queue=0.3ms idle=1.0ms SELECT DISTINCT t0.`onboarding_source` FROM `tid_masters` AS t0 WHERE (NOT (t0.`onboarding_source` IS NULL)) ORDER BY t0.`onboarding_source` [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.mount/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:54 [2026-08-21 11:28:07.864] [INFO ] Sent 200 in 317ms [2026-08-21 11:28:11.746] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 27µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "WyBiOBs0byc7DRk6dBA6Dj8ZDiEOaxdc5yZzou6MAfoYAaH_NMhs6Xm8", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 11:28:11.967] [DEBUG] MOUNT PlatformWeb.SettlementLive.TidMasterBrowser Parameters: %{} Session: %{"_csrf_token" => "nY8BtAYjzkvc5qrQqTfR83zd", "live_socket_id" => "users_sessions:_gyWJnb72cBNLoly6C0mOch11oXZNsn0EVBfto7MVeo=", "user_token" => <<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>} [2026-08-21 11:28:11.968] [DEBUG] QUERY OK source="users_tokens" db=0.9ms queue=0.1ms idle=945.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)) [<<254, 12, 150, 38, 118, 251, 217, 192, 77, 46, 137, 114, 232, 45, 38, 57, 200, 117, 214, 133, 217, 54, 201, 244, 17, 80, 95, 182, 142, 204, 85, 234>>, "session", ~U[2026-08-21 11:28:11.967575Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 11:28:11.969] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.1ms idle=1079.0ms SELECT count(t0.`id`) FROM `tid_masters` AS t0 [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.load_rows/1, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:413 [2026-08-21 11:28:11.970] [DEBUG] QUERY OK source="tid_masters" db=0.6ms idle=441.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 ORDER BY t0.`merchant_name_legal`, t0.`mid` LIMIT 500 [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.load_rows/1, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:419 [2026-08-21 11:28:11.971] [DEBUG] QUERY OK source="tid_masters" db=0.3ms idle=1.6ms SELECT DISTINCT t0.`bank_code` FROM `tid_masters` AS t0 WHERE (NOT (t0.`bank_code` IS NULL)) ORDER BY t0.`bank_code` [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.mount/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:52 [2026-08-21 11:28:11.972] [DEBUG] QUERY OK source="tid_masters" db=0.3ms idle=1.1ms SELECT DISTINCT t0.`mcc_code` FROM `tid_masters` AS t0 WHERE (NOT (t0.`mcc_code` IS NULL)) ORDER BY t0.`mcc_code` [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.mount/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:53 [2026-08-21 11:28:11.972] [DEBUG] QUERY OK source="tid_masters" db=0.3ms idle=0.7ms SELECT DISTINCT t0.`onboarding_source` FROM `tid_masters` AS t0 WHERE (NOT (t0.`onboarding_source` IS NULL)) ORDER BY t0.`onboarding_source` [] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.mount/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:54 [2026-08-21 11:28:11.972] [DEBUG] Replied in 5ms [2026-08-21 11:28:11.973] [DEBUG] HANDLE PARAMS in PlatformWeb.SettlementLive.TidMasterBrowser Parameters: %{} [2026-08-21 11:28:11.973] [DEBUG] Replied in 104µs [2026-08-21 11:28:12.899] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:28:12.899] [INFO ] Incoming JSON payload: {"oid":"c2acfac7-1950-433a-8371-b4619ed180b0","sn":"98251226730001","uploadTime":"2026-08-21T11:28:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:28:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:28:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:28:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:28:12Z"},{"itemkey":"ram_free_mb","value":"920","timestamp":"2026-08-21T11:28:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:28:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:28:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:28:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:28:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:28:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:28:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:28:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:28:12Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:28:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:28: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:28:12.900] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c2acfac7-1950-433a-8371-b4619ed180b0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:28:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:28:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:28:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:28:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:28:12Z", "value" => "920"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:28:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:28:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:28:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:28:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:28:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:28:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:28:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:28:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:28:12Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:28:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:28: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:28:12Z", "vendor" => "morefun"} [2026-08-21 11:28:12.900] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:28:12.900] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:28:12.901] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:28:12.903] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=929.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-08-21 11:28:12.904] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=371.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-08-21 11:28:12.904] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:28:12.905] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:28:12.905] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:28:12.954] [DEBUG] QUERY OK source="tms_terminals" db=48.6ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:28:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:28:12.955] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:28:12.956] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=50.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 11:28:13.024] [DEBUG] QUERY OK source="tms_terminals" db=67.1ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:28:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:28:13.076] [DEBUG] QUERY OK db=51.4ms idle=68.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c2acfac7-1950-433a-8371-b4619ed180b0", "2026-08-21T11:28:12Z", ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:28:13.076] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77757, oid: "c2acfac7-1950-433a-8371-b4619ed180b0", upload_time: "2026-08-21T11:28:12Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]} [2026-08-21 11:28:13.076] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:28:12Z", "value" => "morefun"} [2026-08-21 11:28:13.156] [DEBUG] QUERY OK db=79.4ms queue=0.3ms idle=52.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:12Z", "morefun", "vendor", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790201, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.157] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:28:12Z", "value" => "kiosk_launcher"} [2026-08-21 11:28:13.208] [DEBUG] QUERY OK db=49.7ms queue=0.4ms idle=81.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:12Z", "kiosk_launcher", "model", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790202, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.208] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:28:12Z", "value" => "1.0"} [2026-08-21 11:28:13.283] [DEBUG] QUERY OK db=74.2ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:12Z", "1.0", "app_version", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790203, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.285] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:28:12Z", "value" => "13"} [2026-08-21 11:28:13.370] [DEBUG] QUERY OK db=81.5ms idle=77.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:12Z", "13", "android_version", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.370] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790204, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.372] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:28:12Z", "value" => "920"} [2026-08-21 11:28:13.520] [DEBUG] QUERY OK db=147.8ms idle=89.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:12Z", "920", "ram_free_mb", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790205, itemkey: "ram_free_mb", value: "920", timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.521] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:28:12Z", "value" => "WIFI"} [2026-08-21 11:28:13.561] [DEBUG] QUERY OK db=39.7ms queue=0.1ms idle=154.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:12Z", "WIFI", "network_type", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.562] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790206, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.562] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:28:12Z", "value" => "true"} [2026-08-21 11:28:13.593] [DEBUG] QUERY OK db=30.4ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:12Z", "true", "kiosk_active", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.593] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790207, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.593] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:28:12Z", "value" => ""} [2026-08-21 11:28:13.642] [DEBUG] QUERY OK db=47.1ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:28:12Z", "sim_operator", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790208, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.643] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:28:12Z", "value" => "UNKNOWN"} [2026-08-21 11:28:13.673] [DEBUG] QUERY OK db=29.3ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:12Z", "UNKNOWN", "sim_number", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790209, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.673] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:28:12Z", "value" => "UNKNOWN"} [2026-08-21 11:28:13.743] [DEBUG] QUERY OK db=67.6ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:12Z", "UNKNOWN", "sim_iccid", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790210, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.743] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:28:12Z", "value" => "UNKNOWN"} [2026-08-21 11:28:13.786] [DEBUG] QUERY OK db=42.0ms idle=70.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:12Z", "UNKNOWN", "sim_imsi", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790211, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.787] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:28:12Z", "value" => "UNKNOWN"} [2026-08-21 11:28:13.860] [DEBUG] QUERY OK db=72.6ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:12Z", "UNKNOWN", "sim_iccid2", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.860] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790212, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.861] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:28:12Z", "value" => "UNKNOWN"} [2026-08-21 11:28:13.894] [DEBUG] QUERY OK db=33.1ms queue=0.2ms idle=75.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:12Z", "UNKNOWN", "sim_imsi2", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790213, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.895] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:28:12Z", "value" => "34"} [2026-08-21 11:28:13.942] [DEBUG] QUERY OK db=46.5ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:12Z", "34", "data_usage_mb", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.942] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790214, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.943] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:28:12Z", "value" => "0"} [2026-08-21 11:28:13.979] [DEBUG] QUERY OK db=36.1ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:12Z", "0", "mobile_data_mb", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:13.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790215, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:13.981] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:28: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:28:14.044] [DEBUG] QUERY OK db=61.3ms queue=0.1ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77757, ~N[2026-08-21 11:28:13], ~N[2026-08-21 11:28:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:14.045] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790216, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:28:12Z", message: nil, status_log_id: 77757, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:13], updated_at: ~N[2026-08-21 11:28:13]}} [2026-08-21 11:28:19.857] [DEBUG] HANDLE EVENT "tid_master_row_clicked" in PlatformWeb.SettlementLive.TidMasterBrowser Parameters: %{"id" => 15} [2026-08-21 11:28:19.859] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=0.8ms idle=1305.7ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`id` = ?) [15] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.handle_event/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:349 [2026-08-21 11:28:19.859] [DEBUG] Replied in 2ms [2026-08-21 11:28:26.082] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.TidMasterBrowser Parameters: %{} [2026-08-21 11:28:26.082] [DEBUG] Replied in 193µs [2026-08-21 11:28:29.619] [DEBUG] HANDLE EVENT "tid_master_row_clicked" in PlatformWeb.SettlementLive.TidMasterBrowser Parameters: %{"id" => 5} [2026-08-21 11:28:29.622] [DEBUG] QUERY OK source="tid_masters" db=2.4ms queue=0.1ms idle=282.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`id` = ?) [5] ↳ PlatformWeb.SettlementLive.TidMasterBrowser.handle_event/3, at: lib/platform_web/live/settlement_live/tid_master_browser.ex:349 [2026-08-21 11:28:29.623] [DEBUG] Replied in 4ms [2026-08-21 11:28:42.983] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:28:42.983] [INFO ] Incoming JSON payload: {"oid":"8866837f-d777-4703-8114-cb540e57482b","sn":"98251226730001","uploadTime":"2026-08-21T11:28:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:28:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:28:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:28:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:28:42Z"},{"itemkey":"ram_free_mb","value":"918","timestamp":"2026-08-21T11:28:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:28:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:28:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:28:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:28:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:28:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:28:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:28:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:28:42Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:28:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:28: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:28:42.984] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8866837f-d777-4703-8114-cb540e57482b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:28:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:28:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:28:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:28:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:28:42Z", "value" => "918"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:28:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:28:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:28:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:28:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:28:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:28:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:28:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:28:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:28:42Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:28:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:28: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:28:42Z", "vendor" => "morefun"} [2026-08-21 11:28:42.985] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:28:42.986] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:28:42.987] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:28:42.989] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=338.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-08-21 11:28:42.990] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=98.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-08-21 11:28:42.990] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:28:42.991] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:28:42.991] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:28:43.049] [DEBUG] QUERY OK source="tms_terminals" db=55.3ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:28:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:28:43.049] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:28:43.053] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms idle=59.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:28:43.106] [DEBUG] QUERY OK source="tms_terminals" db=52.5ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:28:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:28:43.160] [DEBUG] QUERY OK db=52.9ms idle=53.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "8866837f-d777-4703-8114-cb540e57482b", "2026-08-21T11:28:42Z", ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:28:43.160] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77758, oid: "8866837f-d777-4703-8114-cb540e57482b", upload_time: "2026-08-21T11:28:42Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]} [2026-08-21 11:28:43.160] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:28:42Z", "value" => "morefun"} [2026-08-21 11:28:43.183] [DEBUG] QUERY OK db=21.5ms queue=0.8ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:42Z", "morefun", "vendor", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:43.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790217, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:43.184] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:28:42Z", "value" => "kiosk_launcher"} [2026-08-21 11:28:43.221] [DEBUG] QUERY OK db=37.4ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:42Z", "kiosk_launcher", "model", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:43.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790218, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:43.222] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:28:42Z", "value" => "1.0"} [2026-08-21 11:28:43.287] [DEBUG] QUERY OK db=65.2ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:42Z", "1.0", "app_version", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:43.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790219, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:43.288] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:28:42Z", "value" => "13"} [2026-08-21 11:28:43.316] [DEBUG] QUERY OK db=27.7ms idle=66.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:42Z", "13", "android_version", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:43.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790220, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:43.316] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:28:42Z", "value" => "918"} [2026-08-21 11:28:43.372] [DEBUG] QUERY OK db=55.7ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:42Z", "918", "ram_free_mb", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:43.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790221, itemkey: "ram_free_mb", value: "918", timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:43.373] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:28:42Z", "value" => "WIFI"} [2026-08-21 11:28:43.403] [DEBUG] QUERY OK db=29.8ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:42Z", "WIFI", "network_type", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:43.403] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790222, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:43.406] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:28:42Z", "value" => "true"} [2026-08-21 11:28:43.437] [DEBUG] QUERY OK db=29.8ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:42Z", "true", "kiosk_active", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:43.437] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790223, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:43.438] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:28:42Z", "value" => ""} [2026-08-21 11:28:43.478] [DEBUG] QUERY OK db=40.5ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:28:42Z", "sim_operator", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:43.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790224, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:43.479] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:28:42Z", "value" => "UNKNOWN"} [2026-08-21 11:28:43.509] [DEBUG] QUERY OK db=30.2ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:42Z", "UNKNOWN", "sim_number", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:43.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790225, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:43.510] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:28:42Z", "value" => "UNKNOWN"} [2026-08-21 11:28:43.588] [DEBUG] QUERY OK db=77.8ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:42Z", "UNKNOWN", "sim_iccid", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:43.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790226, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:43.588] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:28:42Z", "value" => "UNKNOWN"} [2026-08-21 11:28:43.612] [DEBUG] QUERY OK db=23.5ms idle=79.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:42Z", "UNKNOWN", "sim_imsi", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:43.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790227, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:43.613] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:28:42Z", "value" => "UNKNOWN"} [2026-08-21 11:28:43.695] [DEBUG] QUERY OK db=82.2ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:42Z", "UNKNOWN", "sim_iccid2", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:43.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790228, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:43.698] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:28:42Z", "value" => "UNKNOWN"} [2026-08-21 11:28:43.777] [DEBUG] QUERY OK db=78.1ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:42Z", "UNKNOWN", "sim_imsi2", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:43.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790229, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:43.778] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:28:42Z", "value" => "34"} [2026-08-21 11:28:43.932] [DEBUG] QUERY OK db=152.8ms queue=0.4ms idle=83.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:42Z", "34", "data_usage_mb", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:43.932] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790230, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:43.932] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:28:42Z", "value" => "0"} [2026-08-21 11:28:44.013] [DEBUG] QUERY OK db=80.3ms idle=155.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28:42Z", "0", "mobile_data_mb", 77758, ~N[2026-08-21 11:28:43], ~N[2026-08-21 11:28:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:44.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790231, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:43], updated_at: ~N[2026-08-21 11:28:43]}} [2026-08-21 11:28:44.014] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:28: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:28:44.085] [DEBUG] QUERY OK db=69.2ms idle=82.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:28: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77758, ~N[2026-08-21 11:28:44], ~N[2026-08-21 11:28:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:28:44.086] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790232, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:28:42Z", message: nil, status_log_id: 77758, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:28:44], updated_at: ~N[2026-08-21 11:28:44]}} [2026-08-21 11:29:13.084] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:29:13.084] [INFO ] Incoming JSON payload: {"oid":"21400b18-dbfd-4f8d-84e5-382450c70d38","sn":"98251226730001","uploadTime":"2026-08-21T11:29:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:29:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:29:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:29:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:29:12Z"},{"itemkey":"ram_free_mb","value":"918","timestamp":"2026-08-21T11:29:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:29:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:29:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:29:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:29:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:29:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:29:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:29:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:29:12Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:29:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:29:13.086] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "21400b18-dbfd-4f8d-84e5-382450c70d38", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:29:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:29:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:29:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:29:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:29:12Z", "value" => "918"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:29:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:29:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:29:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:29:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:29:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:29:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:29:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:29:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:29:12Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:29:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:29:12Z", "vendor" => "morefun"} [2026-08-21 11:29:13.087] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:29:13.087] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:29:13.087] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:29:13.088] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.5ms idle=316.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-08-21 11:29:13.089] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=194.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-08-21 11:29:13.089] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:29:13.091] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:29:13.093] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:29:13.160] [DEBUG] QUERY OK source="tms_terminals" db=66.6ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:29:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:29:13.160] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:29:13.162] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=70.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:29:13.198] [DEBUG] QUERY OK source="tms_terminals" db=35.8ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:29:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:29:13.246] [DEBUG] QUERY OK db=47.3ms idle=36.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "21400b18-dbfd-4f8d-84e5-382450c70d38", "2026-08-21T11:29:12Z", ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:29:13.246] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77759, oid: "21400b18-dbfd-4f8d-84e5-382450c70d38", upload_time: "2026-08-21T11:29:12Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]} [2026-08-21 11:29:13.246] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:29:12Z", "value" => "morefun"} [2026-08-21 11:29:13.291] [DEBUG] QUERY OK db=43.9ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:12Z", "morefun", "vendor", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:13.291] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790233, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:13.291] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:29:12Z", "value" => "kiosk_launcher"} [2026-08-21 11:29:13.350] [DEBUG] QUERY OK db=58.4ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:12Z", "kiosk_launcher", "model", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:13.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790234, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:13.350] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:29:12Z", "value" => "1.0"} [2026-08-21 11:29:13.391] [DEBUG] QUERY OK db=39.9ms idle=60.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:12Z", "1.0", "app_version", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:13.391] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790235, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:13.391] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:29:12Z", "value" => "13"} [2026-08-21 11:29:13.448] [DEBUG] QUERY OK db=55.6ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:12Z", "13", "android_version", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:13.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790236, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:13.448] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:29:12Z", "value" => "918"} [2026-08-21 11:29:13.488] [DEBUG] QUERY OK db=39.3ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:12Z", "918", "ram_free_mb", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:13.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790237, itemkey: "ram_free_mb", value: "918", timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:13.488] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:29:12Z", "value" => "WIFI"} [2026-08-21 11:29:13.533] [DEBUG] QUERY OK db=43.5ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:12Z", "WIFI", "network_type", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:13.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790238, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:13.533] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:29:12Z", "value" => "true"} [2026-08-21 11:29:13.589] [DEBUG] QUERY OK db=54.8ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:12Z", "true", "kiosk_active", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:13.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790239, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:13.591] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:29:12Z", "value" => ""} [2026-08-21 11:29:13.642] [DEBUG] QUERY OK db=49.7ms queue=0.9ms idle=57.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:29:12Z", "sim_operator", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:13.642] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790240, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:13.642] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:29:12Z", "value" => "UNKNOWN"} [2026-08-21 11:29:13.687] [DEBUG] QUERY OK db=44.0ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:12Z", "UNKNOWN", "sim_number", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:13.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790241, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:13.688] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:29:12Z", "value" => "UNKNOWN"} [2026-08-21 11:29:13.793] [DEBUG] QUERY OK db=103.2ms queue=0.1ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:12Z", "UNKNOWN", "sim_iccid", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:13.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790242, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:13.794] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:29:12Z", "value" => "UNKNOWN"} [2026-08-21 11:29:13.842] [DEBUG] QUERY OK db=47.6ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:12Z", "UNKNOWN", "sim_imsi", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:13.842] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790243, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:13.842] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:29:12Z", "value" => "UNKNOWN"} [2026-08-21 11:29:13.885] [DEBUG] QUERY OK db=42.1ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:12Z", "UNKNOWN", "sim_iccid2", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:13.885] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790244, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:13.885] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:29:12Z", "value" => "UNKNOWN"} [2026-08-21 11:29:13.931] [DEBUG] QUERY OK db=41.4ms queue=1.5ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:12Z", "UNKNOWN", "sim_imsi2", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:13.932] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790245, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:13.932] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:29:12Z", "value" => "34"} [2026-08-21 11:29:13.957] [DEBUG] QUERY OK db=24.8ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:12Z", "34", "data_usage_mb", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:13.958] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790246, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:13.958] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:29:12Z", "value" => "0"} [2026-08-21 11:29:14.021] [DEBUG] QUERY OK db=62.2ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:12Z", "0", "mobile_data_mb", 77759, ~N[2026-08-21 11:29:13], ~N[2026-08-21 11:29:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:14.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790247, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:13], updated_at: ~N[2026-08-21 11:29:13]}} [2026-08-21 11:29:14.022] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:29:14.071] [DEBUG] QUERY OK db=46.6ms idle=66.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77759, ~N[2026-08-21 11:29:14], ~N[2026-08-21 11:29:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:14.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790248, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:29:12Z", message: nil, status_log_id: 77759, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:14], updated_at: ~N[2026-08-21 11:29:14]}} [2026-08-21 11:29:20.949] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 11:29:20.949] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T15:29:19Z","org.device":[{"itemkey":"battery","value":53,"timestamp":"2026-08-21T15:29:19Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T15:29:19Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T15:29:19Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T15:29:19Z","message":""}]} [2026-08-21 11:29:20.949] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T15:29:19Z", "value" => 53}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T15:29:19Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T15:29:19Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T15:29:19Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T15:29:19Z"} [2026-08-21 11:29:20.949] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:29:20.950] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1055.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:29:20.950] [INFO ] Terminal updated: 61250415798001 [2026-08-21 11:29:20.999] [DEBUG] QUERY OK source="tms_terminals" db=48.6ms idle=153.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:29:20], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:29:21.000] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:29:21.042] [DEBUG] QUERY OK source="tms_terminals" db=42.0ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:29:21], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:29:21.070] [DEBUG] QUERY OK db=27.1ms idle=42.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T15:29:19Z", ~N[2026-08-21 11:29:21], ~N[2026-08-21 11:29:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:29:21.070] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77760, oid: "org-id-placeholder", upload_time: "2026-08-21T15:29:19Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:21], updated_at: ~N[2026-08-21 11:29:21]} [2026-08-21 11:29:21.070] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T15:29:19Z", "value" => 53} [2026-08-21 11:29:21.113] [DEBUG] QUERY OK db=42.3ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:29:19Z", "53", "battery", 77760, ~N[2026-08-21 11:29:21], ~N[2026-08-21 11:29:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:21.113] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790249, itemkey: "battery", value: "53", timestamp: "2026-08-21T15:29:19Z", message: nil, status_log_id: 77760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:21], updated_at: ~N[2026-08-21 11:29:21]}} [2026-08-21 11:29:21.113] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T15:29:19Z", "value" => 50} [2026-08-21 11:29:21.151] [DEBUG] QUERY OK db=37.4ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T15:29:19Z", "50", "memory", 77760, ~N[2026-08-21 11:29:21], ~N[2026-08-21 11:29:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:21.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790250, itemkey: "memory", value: "50", timestamp: "2026-08-21T15:29:19Z", message: "Normal", status_log_id: 77760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:21], updated_at: ~N[2026-08-21 11:29:21]}} [2026-08-21 11:29:21.154] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T15:29:19Z", "value" => 50} [2026-08-21 11:29:21.196] [DEBUG] QUERY OK db=41.7ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:29:19Z", "50", "cpu", 77760, ~N[2026-08-21 11:29:21], ~N[2026-08-21 11:29:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:21.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790251, itemkey: "cpu", value: "50", timestamp: "2026-08-21T15:29:19Z", message: nil, status_log_id: 77760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:21], updated_at: ~N[2026-08-21 11:29:21]}} [2026-08-21 11:29:21.197] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T15:29:19Z", "value" => "online"} [2026-08-21 11:29:21.255] [DEBUG] QUERY OK db=57.9ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:29:19Z", "online", "network", 77760, ~N[2026-08-21 11:29:21], ~N[2026-08-21 11:29:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:21.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790252, itemkey: "network", value: "online", timestamp: "2026-08-21T15:29:19Z", message: nil, status_log_id: 77760, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:21], updated_at: ~N[2026-08-21 11:29:21]}} [2026-08-21 11:29:21.255] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 11:29:43.448] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:29:43.449] [INFO ] Incoming JSON payload: {"oid":"ded17eec-89b3-4714-a186-9cb15072de56","sn":"98251226730001","uploadTime":"2026-08-21T11:29:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:29:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:29:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:29:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:29:42Z"},{"itemkey":"ram_free_mb","value":"920","timestamp":"2026-08-21T11:29:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:29:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:29:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:29:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:29:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:29:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:29:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:29:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:29:42Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:29:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:29:43.451] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ded17eec-89b3-4714-a186-9cb15072de56", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:29:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:29:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:29:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:29:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:29:42Z", "value" => "920"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:29:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:29:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:29:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:29:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:29:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:29:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:29:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:29:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:29:42Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:29:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:29:42Z", "vendor" => "morefun"} [2026-08-21 11:29:43.451] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:29:43.452] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:29:43.452] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:29:43.453] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.2ms idle=1556.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-08-21 11:29:43.458] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=577.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:29:43.458] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:29:43.465] [DEBUG] QUERY OK source="tms_terminals" db=5.0ms idle=6.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:29:43.472] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:29:43.524] [DEBUG] QUERY OK source="tms_terminals" db=50.8ms queue=0.1ms idle=15.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:29:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:29:43.524] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:29:43.525] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:29:43.560] [DEBUG] QUERY OK source="tms_terminals" db=32.5ms queue=1.9ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:29:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:29:43.611] [DEBUG] QUERY OK db=49.3ms queue=0.1ms idle=35.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ded17eec-89b3-4714-a186-9cb15072de56", "2026-08-21T11:29:42Z", ~N[2026-08-21 11:29:43], ~N[2026-08-21 11:29:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:29:43.611] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77761, oid: "ded17eec-89b3-4714-a186-9cb15072de56", upload_time: "2026-08-21T11:29:42Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:43], updated_at: ~N[2026-08-21 11:29:43]} [2026-08-21 11:29:43.611] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:29:42Z", "value" => "morefun"} [2026-08-21 11:29:43.637] [DEBUG] QUERY OK db=25.4ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:42Z", "morefun", "vendor", 77761, ~N[2026-08-21 11:29:43], ~N[2026-08-21 11:29:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:43.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790253, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:43], updated_at: ~N[2026-08-21 11:29:43]}} [2026-08-21 11:29:43.638] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:29:42Z", "value" => "kiosk_launcher"} [2026-08-21 11:29:43.703] [DEBUG] QUERY OK db=64.8ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:42Z", "kiosk_launcher", "model", 77761, ~N[2026-08-21 11:29:43], ~N[2026-08-21 11:29:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:43.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790254, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:43], updated_at: ~N[2026-08-21 11:29:43]}} [2026-08-21 11:29:43.704] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:29:42Z", "value" => "1.0"} [2026-08-21 11:29:43.747] [DEBUG] QUERY OK db=40.3ms idle=69.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:42Z", "1.0", "app_version", 77761, ~N[2026-08-21 11:29:43], ~N[2026-08-21 11:29:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:43.748] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790255, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:43], updated_at: ~N[2026-08-21 11:29:43]}} [2026-08-21 11:29:43.748] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:29:42Z", "value" => "13"} [2026-08-21 11:29:43.792] [DEBUG] QUERY OK db=43.5ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:42Z", "13", "android_version", 77761, ~N[2026-08-21 11:29:43], ~N[2026-08-21 11:29:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:43.792] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790256, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:43], updated_at: ~N[2026-08-21 11:29:43]}} [2026-08-21 11:29:43.792] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:29:42Z", "value" => "920"} [2026-08-21 11:29:43.836] [DEBUG] QUERY OK db=43.2ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:42Z", "920", "ram_free_mb", 77761, ~N[2026-08-21 11:29:43], ~N[2026-08-21 11:29:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:43.836] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790257, itemkey: "ram_free_mb", value: "920", timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:43], updated_at: ~N[2026-08-21 11:29:43]}} [2026-08-21 11:29:43.836] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:29:42Z", "value" => "WIFI"} [2026-08-21 11:29:43.875] [DEBUG] QUERY OK db=37.7ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:42Z", "WIFI", "network_type", 77761, ~N[2026-08-21 11:29:43], ~N[2026-08-21 11:29:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:43.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790258, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:43], updated_at: ~N[2026-08-21 11:29:43]}} [2026-08-21 11:29:43.880] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:29:42Z", "value" => "true"} [2026-08-21 11:29:43.944] [DEBUG] QUERY OK db=63.8ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:42Z", "true", "kiosk_active", 77761, ~N[2026-08-21 11:29:43], ~N[2026-08-21 11:29:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:43.944] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790259, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:43], updated_at: ~N[2026-08-21 11:29:43]}} [2026-08-21 11:29:43.945] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:29:42Z", "value" => ""} [2026-08-21 11:29:43.999] [DEBUG] QUERY OK db=54.4ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:29:42Z", "sim_operator", 77761, ~N[2026-08-21 11:29:43], ~N[2026-08-21 11:29:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:44.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790260, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:43], updated_at: ~N[2026-08-21 11:29:43]}} [2026-08-21 11:29:44.002] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:29:42Z", "value" => "UNKNOWN"} [2026-08-21 11:29:44.039] [DEBUG] QUERY OK db=35.8ms queue=1.1ms idle=57.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:42Z", "UNKNOWN", "sim_number", 77761, ~N[2026-08-21 11:29:44], ~N[2026-08-21 11:29:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:44.041] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790261, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:44], updated_at: ~N[2026-08-21 11:29:44]}} [2026-08-21 11:29:44.042] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:29:42Z", "value" => "UNKNOWN"} [2026-08-21 11:29:44.102] [DEBUG] QUERY OK db=59.5ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:42Z", "UNKNOWN", "sim_iccid", 77761, ~N[2026-08-21 11:29:44], ~N[2026-08-21 11:29:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:44.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790262, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:44], updated_at: ~N[2026-08-21 11:29:44]}} [2026-08-21 11:29:44.102] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:29:42Z", "value" => "UNKNOWN"} [2026-08-21 11:29:44.126] [DEBUG] QUERY OK db=22.8ms idle=63.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:42Z", "UNKNOWN", "sim_imsi", 77761, ~N[2026-08-21 11:29:44], ~N[2026-08-21 11:29:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:44.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790263, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:44], updated_at: ~N[2026-08-21 11:29:44]}} [2026-08-21 11:29:44.129] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:29:42Z", "value" => "UNKNOWN"} [2026-08-21 11:29:44.191] [DEBUG] QUERY OK db=62.4ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:42Z", "UNKNOWN", "sim_iccid2", 77761, ~N[2026-08-21 11:29:44], ~N[2026-08-21 11:29:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:44.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790264, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:44], updated_at: ~N[2026-08-21 11:29:44]}} [2026-08-21 11:29:44.192] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:29:42Z", "value" => "UNKNOWN"} [2026-08-21 11:29:44.235] [DEBUG] QUERY OK db=43.0ms idle=66.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:42Z", "UNKNOWN", "sim_imsi2", 77761, ~N[2026-08-21 11:29:44], ~N[2026-08-21 11:29:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:44.235] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790265, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:44], updated_at: ~N[2026-08-21 11:29:44]}} [2026-08-21 11:29:44.235] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:29:42Z", "value" => "34"} [2026-08-21 11:29:44.272] [DEBUG] QUERY OK db=36.6ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:42Z", "34", "data_usage_mb", 77761, ~N[2026-08-21 11:29:44], ~N[2026-08-21 11:29:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:44.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790266, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:44], updated_at: ~N[2026-08-21 11:29:44]}} [2026-08-21 11:29:44.273] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:29:42Z", "value" => "0"} [2026-08-21 11:29:44.332] [DEBUG] QUERY OK db=58.5ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29:42Z", "0", "mobile_data_mb", 77761, ~N[2026-08-21 11:29:44], ~N[2026-08-21 11:29:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:44.332] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790267, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:44], updated_at: ~N[2026-08-21 11:29:44]}} [2026-08-21 11:29:44.333] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:29:44.389] [DEBUG] QUERY OK db=51.7ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77761, ~N[2026-08-21 11:29:44], ~N[2026-08-21 11:29:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:29:44.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790268, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:29:42Z", message: nil, status_log_id: 77761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:29:44], updated_at: ~N[2026-08-21 11:29:44]}} [2026-08-21 11:30:13.563] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:30:13.563] [INFO ] Incoming JSON payload: {"oid":"cfea4943-ef10-49b3-a6c5-771af5804186","sn":"98251226730001","uploadTime":"2026-08-21T11:30:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:30:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:30:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:30:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:30:13Z"},{"itemkey":"ram_free_mb","value":"924","timestamp":"2026-08-21T11:30:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:30:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:30:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:30:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:30:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:30:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:30:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:30:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:30:13Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:30:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:30: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:30:13.564] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "cfea4943-ef10-49b3-a6c5-771af5804186", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:30:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:30:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:30:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:30:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:30:13Z", "value" => "924"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:30:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:30:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:30:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:30:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:30:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:30:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:30:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:30:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:30:13Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:30:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:30: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:30:13Z", "vendor" => "morefun"} [2026-08-21 11:30:13.564] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:30:13.564] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:30:13.564] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:30:13.566] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1570.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-08-21 11:30:13.567] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=568.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-08-21 11:30:13.567] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:30:13.567] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:30:13.568] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:30:13.633] [DEBUG] QUERY OK source="tms_terminals" db=64.9ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:30:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:30:13.633] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:30:13.635] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=66.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:30:13.744] [DEBUG] QUERY OK source="tms_terminals" db=109.0ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:30:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:30:13.818] [DEBUG] QUERY OK db=73.0ms idle=110.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "cfea4943-ef10-49b3-a6c5-771af5804186", "2026-08-21T11:30:13Z", ~N[2026-08-21 11:30:13], ~N[2026-08-21 11:30:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:30:13.818] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77762, oid: "cfea4943-ef10-49b3-a6c5-771af5804186", upload_time: "2026-08-21T11:30:13Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:13], updated_at: ~N[2026-08-21 11:30:13]} [2026-08-21 11:30:13.818] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:30:13Z", "value" => "morefun"} [2026-08-21 11:30:13.887] [DEBUG] QUERY OK db=68.8ms idle=74.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:13Z", "morefun", "vendor", 77762, ~N[2026-08-21 11:30:13], ~N[2026-08-21 11:30:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:13.887] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790269, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:13], updated_at: ~N[2026-08-21 11:30:13]}} [2026-08-21 11:30:13.887] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:30:13Z", "value" => "kiosk_launcher"} [2026-08-21 11:30:14.035] [DEBUG] QUERY OK db=147.4ms idle=70.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:13Z", "kiosk_launcher", "model", 77762, ~N[2026-08-21 11:30:13], ~N[2026-08-21 11:30:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:14.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790270, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:13], updated_at: ~N[2026-08-21 11:30:13]}} [2026-08-21 11:30:14.036] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:30:13Z", "value" => "1.0"} [2026-08-21 11:30:14.086] [DEBUG] QUERY OK db=49.6ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:13Z", "1.0", "app_version", 77762, ~N[2026-08-21 11:30:14], ~N[2026-08-21 11:30:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:14.086] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790271, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:14], updated_at: ~N[2026-08-21 11:30:14]}} [2026-08-21 11:30:14.086] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:30:13Z", "value" => "13"} [2026-08-21 11:30:14.153] [DEBUG] QUERY OK db=66.3ms idle=51.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:13Z", "13", "android_version", 77762, ~N[2026-08-21 11:30:14], ~N[2026-08-21 11:30:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:14.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790272, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:14], updated_at: ~N[2026-08-21 11:30:14]}} [2026-08-21 11:30:14.153] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:30:13Z", "value" => "924"} [2026-08-21 11:30:14.245] [DEBUG] QUERY OK db=89.9ms idle=68.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:13Z", "924", "ram_free_mb", 77762, ~N[2026-08-21 11:30:14], ~N[2026-08-21 11:30:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:14.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790273, itemkey: "ram_free_mb", value: "924", timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:14], updated_at: ~N[2026-08-21 11:30:14]}} [2026-08-21 11:30:14.245] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:30:13Z", "value" => "WIFI"} [2026-08-21 11:30:14.322] [DEBUG] QUERY OK db=76.9ms idle=92.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:13Z", "WIFI", "network_type", 77762, ~N[2026-08-21 11:30:14], ~N[2026-08-21 11:30:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:14.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790274, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:14], updated_at: ~N[2026-08-21 11:30:14]}} [2026-08-21 11:30:14.323] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:30:13Z", "value" => "true"} [2026-08-21 11:30:14.358] [DEBUG] QUERY OK db=35.2ms queue=0.1ms idle=78.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:13Z", "true", "kiosk_active", 77762, ~N[2026-08-21 11:30:14], ~N[2026-08-21 11:30:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:14.359] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790275, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:14], updated_at: ~N[2026-08-21 11:30:14]}} [2026-08-21 11:30:14.359] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:30:13Z", "value" => ""} [2026-08-21 11:30:14.420] [DEBUG] QUERY OK db=61.3ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:30:13Z", "sim_operator", 77762, ~N[2026-08-21 11:30:14], ~N[2026-08-21 11:30:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:14.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790276, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:14], updated_at: ~N[2026-08-21 11:30:14]}} [2026-08-21 11:30:14.421] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:30:13Z", "value" => "UNKNOWN"} [2026-08-21 11:30:14.482] [DEBUG] QUERY OK db=60.4ms idle=62.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:13Z", "UNKNOWN", "sim_number", 77762, ~N[2026-08-21 11:30:14], ~N[2026-08-21 11:30:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:14.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790277, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:14], updated_at: ~N[2026-08-21 11:30:14]}} [2026-08-21 11:30:14.483] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:30:13Z", "value" => "UNKNOWN"} [2026-08-21 11:30:14.547] [DEBUG] QUERY OK db=64.1ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:13Z", "UNKNOWN", "sim_iccid", 77762, ~N[2026-08-21 11:30:14], ~N[2026-08-21 11:30:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:14.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790278, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:14], updated_at: ~N[2026-08-21 11:30:14]}} [2026-08-21 11:30:14.547] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:30:13Z", "value" => "UNKNOWN"} [2026-08-21 11:30:14.618] [DEBUG] QUERY OK db=70.1ms idle=66.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:13Z", "UNKNOWN", "sim_imsi", 77762, ~N[2026-08-21 11:30:14], ~N[2026-08-21 11:30:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:14.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790279, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:14], updated_at: ~N[2026-08-21 11:30:14]}} [2026-08-21 11:30:14.621] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:30:13Z", "value" => "UNKNOWN"} [2026-08-21 11:30:14.687] [DEBUG] QUERY OK db=65.6ms idle=74.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:13Z", "UNKNOWN", "sim_iccid2", 77762, ~N[2026-08-21 11:30:14], ~N[2026-08-21 11:30:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:14.687] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790280, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:14], updated_at: ~N[2026-08-21 11:30:14]}} [2026-08-21 11:30:14.687] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:30:13Z", "value" => "UNKNOWN"} [2026-08-21 11:30:14.775] [DEBUG] QUERY OK db=87.6ms queue=0.1ms idle=69.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:13Z", "UNKNOWN", "sim_imsi2", 77762, ~N[2026-08-21 11:30:14], ~N[2026-08-21 11:30:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:14.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790281, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:14], updated_at: ~N[2026-08-21 11:30:14]}} [2026-08-21 11:30:14.776] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:30:13Z", "value" => "34"} [2026-08-21 11:30:14.846] [DEBUG] QUERY OK db=69.3ms idle=90.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:13Z", "34", "data_usage_mb", 77762, ~N[2026-08-21 11:30:14], ~N[2026-08-21 11:30:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:14.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790282, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:14], updated_at: ~N[2026-08-21 11:30:14]}} [2026-08-21 11:30:14.847] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:30:13Z", "value" => "0"} [2026-08-21 11:30:14.940] [DEBUG] QUERY OK db=92.5ms idle=72.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:13Z", "0", "mobile_data_mb", 77762, ~N[2026-08-21 11:30:14], ~N[2026-08-21 11:30:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:14.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790283, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:14], updated_at: ~N[2026-08-21 11:30:14]}} [2026-08-21 11:30:14.944] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:30: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:30:15.010] [DEBUG] QUERY OK db=65.0ms idle=97.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77762, ~N[2026-08-21 11:30:14], ~N[2026-08-21 11:30:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:15.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790284, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:30:13Z", message: nil, status_log_id: 77762, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:14], updated_at: ~N[2026-08-21 11:30:14]}} [2026-08-21 11:30:39.691] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:30:39.691] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T11:30:06Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T11:30:06Z","value":"64"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T11:30:06Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T11:30:06Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T11:30:06Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T11:30:06Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T11:30:06Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T11:30:06Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-08-21T11:30:06Z","vendor":"MoreFun"} [2026-08-21 11:30:39.693] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:30:06Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:30:06Z", "value" => "64"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:30:06Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:30:06Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:30:06Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:30:06Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:30:06Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:30:06Z", "value" => "3.8.7.3"}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:30:06Z", "vendor" => "MoreFun"} [2026-08-21 11:30:39.693] [INFO ] Extracted versions for 98251226730002: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:30:39.694] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:30:39.695] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-08-21 11:30:39.696] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.1ms idle=1594.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-08-21 11:30:39.697] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=593.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 11:30:39.698] [DEBUG] QUERY OK source="parameter_template_values" db=1.0ms 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-08-21 11:30:39.702] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=1.2ms idle=2.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:30:39.703] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms queue=0.1ms idle=3.8ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:30:39.743] [DEBUG] QUERY OK source="pos_merchant" db=39.3ms idle=1.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:30:39.745] [DEBUG] QUERY OK db=0.7ms queue=0.5ms idle=1863.8ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["123451234512345"] [2026-08-21 11:30:39.745] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:30:39.746] [DEBUG] QUERY OK source="pos_terminal_data" db=1.0ms idle=42.2ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["81748887"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:30:39.747] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748887, using defaults [2026-08-21 11:30:39.748] [DEBUG] QUERY OK source="address" db=0.4ms idle=4.6ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:30:39.748] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="123451234512345" [2026-08-21 11:30:39.751] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-08-21 11:30:40.006] [DEBUG] QUERY OK db=254.3ms idle=4.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "0aaf8f8b17292f68f6209a628f5dfa2aecf42a0c19e064a734237312fa84542f", 4578, 931, ~U[2026-08-21 11:30:39Z], "priv/ota/98251226730002/params.zip", 13, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:30:39], ~N[2026-08-21 11:30:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:30:40.006] [INFO ] AutoPushService: Created push log 49012 for MF919 params.zip [2026-08-21 11:30:40.006] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 4578, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:30:40.006] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-08-21 11:30:40.006] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-08-21 11:30:40.008] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=258.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-08-21 11:30:40.017] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 11:30:40.082] [DEBUG] QUERY OK db=62.0ms idle=14.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "5b8971373205bc9007955bc5353b22674d8c99cc18db1ea00cb76e22317241f4", 4610, 17947, ~U[2026-08-21 11:30:40Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:30:40], ~N[2026-08-21 11:30:40]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:30:40.082] [INFO ] AutoPushService: Created push log 49013 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:30:40.082] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 4610, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:30:40.082] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-08-21 11:30:40.083] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-08-21 11:30:40.084] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=74.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-08-21 11:30:40.084] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-08-21 11:30:40.086] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=2.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:30:40.087] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 11:30:40.089] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:30:40.089] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:30:40.089] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:30:40.090] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=5.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:30:40.091] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:30:40.091] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-08-21 11:30:40.092] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=5.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:30:40.093] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:30:40.143] [DEBUG] QUERY OK source="tms_terminals" db=50.0ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:30:40], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:30:40.147] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms idle=37.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 11:30:40.153] [DEBUG] QUERY OK source="config_file_versions" db=2.2ms idle=7.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-08-21 11:30:40.155] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.2ms idle=6.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:30:40.155] [INFO ] VersionComplianceChecker: 98251226730002 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:30:40.266] [DEBUG] QUERY OK source="parameter_push_logs" db=110.4ms idle=2.6ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [13, "application", ~N[2026-08-21 11:00:40]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:30:40.266] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730002 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:30:40.266] [INFO ] AutoPushService: Targeted application push for 98251226730002 (MoreFun MF919) [2026-08-21 11:30:40.268] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=111.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:30:40.269] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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-08-21 11:30:40.270] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:30:40.271] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:30:40.311] [DEBUG] QUERY OK source="tms_terminals" db=39.7ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:30:40], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:30:40.351] [DEBUG] QUERY OK db=39.4ms idle=40.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-08-21T11:30:06Z", ~N[2026-08-21 11:30:40], ~N[2026-08-21 11:30:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:30:40.351] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77763, oid: "organization_id", upload_time: "2026-08-21T11:30:06Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:40], updated_at: ~N[2026-08-21 11:30:40]} [2026-08-21 11:30:40.351] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:30:06Z", "value" => "online"} [2026-08-21 11:30:40.394] [DEBUG] QUERY OK db=40.8ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T11:30:06Z", "online", "status", 77763, ~N[2026-08-21 11:30:40], ~N[2026-08-21 11:30:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:40.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790285, itemkey: "status", value: "online", timestamp: "2026-08-21T11:30:06Z", message: "Terminal status update", status_log_id: 77763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:40], updated_at: ~N[2026-08-21 11:30:40]}} [2026-08-21 11:30:40.395] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-08-21 11:30:40.395] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:30:06Z", "value" => "64"} [2026-08-21 11:30:40.440] [DEBUG] QUERY OK db=44.1ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T11:30:06Z", "64", "battery", 77763, ~N[2026-08-21 11:30:40], ~N[2026-08-21 11:30:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:40.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790286, itemkey: "battery", value: "64", timestamp: "2026-08-21T11:30:06Z", message: "Battery level", status_log_id: 77763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:40], updated_at: ~N[2026-08-21 11:30:40]}} [2026-08-21 11:30:40.443] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:30:06Z", "value" => "online"} [2026-08-21 11:30:40.523] [DEBUG] QUERY OK db=79.3ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T11:30:06Z", "online", "network", 77763, ~N[2026-08-21 11:30:40], ~N[2026-08-21 11:30:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:40.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790287, itemkey: "network", value: "online", timestamp: "2026-08-21T11:30:06Z", message: "Network connectivity", status_log_id: 77763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:40], updated_at: ~N[2026-08-21 11:30:40]}} [2026-08-21 11:30:40.525] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-08-21 11:30:40.525] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:30:06Z", "value" => "0"} [2026-08-21 11:30:40.595] [DEBUG] QUERY OK db=69.6ms idle=85.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T11:30:06Z", "0", "cpu", 77763, ~N[2026-08-21 11:30:40], ~N[2026-08-21 11:30:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:40.596] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790288, itemkey: "cpu", value: "0", timestamp: "2026-08-21T11:30:06Z", message: "CPU usage percentage", status_log_id: 77763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:40], updated_at: ~N[2026-08-21 11:30:40]}} [2026-08-21 11:30:40.596] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:30:06Z", "value" => "1.0.0"} [2026-08-21 11:30:40.800] [DEBUG] QUERY OK db=200.5ms idle=76.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T11:30:06Z", "1.0.0", "parameter_config", 77763, ~N[2026-08-21 11:30:40], ~N[2026-08-21 11:30:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:40.800] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790289, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T11:30:06Z", message: "Current parameters version", status_log_id: 77763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:40], updated_at: ~N[2026-08-21 11:30:40]}} [2026-08-21 11:30:40.801] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:30:06Z", "value" => "1.0.1"} [2026-08-21 11:30:40.837] [DEBUG] QUERY OK db=36.5ms idle=205.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T11:30:06Z", "1.0.1", "emv_config", 77763, ~N[2026-08-21 11:30:40], ~N[2026-08-21 11:30:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:40.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790290, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T11:30:06Z", message: "Current EMV config version", status_log_id: 77763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:40], updated_at: ~N[2026-08-21 11:30:40]}} [2026-08-21 11:30:40.841] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:30:06Z", "value" => ""} [2026-08-21 11:30:40.884] [DEBUG] QUERY OK db=33.5ms queue=9.6ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T11:30:06Z", "keys_config", 77763, ~N[2026-08-21 11:30:40], ~N[2026-08-21 11:30:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:40.884] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790291, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T11:30:06Z", message: "Current keys config version", status_log_id: 77763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:40], updated_at: ~N[2026-08-21 11:30:40]}} [2026-08-21 11:30:40.884] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:30:06Z", "value" => "3.8.7.3"} [2026-08-21 11:30:40.929] [DEBUG] QUERY OK db=44.5ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T11:30:06Z", "3.8.7.3", "application", 77763, ~N[2026-08-21 11:30:40], ~N[2026-08-21 11:30:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:40.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790292, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T11:30:06Z", message: "Current application version", status_log_id: 77763, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:40], updated_at: ~N[2026-08-21 11:30:40]}} [2026-08-21 11:30:40.930] [WARN ] Unexpected async result [2026-08-21 11:30:40.930] [WARN ] Unexpected async result [2026-08-21 11:30:43.685] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:30:43.685] [INFO ] Incoming JSON payload: {"oid":"6ece7e68-a57e-4dcb-9f57-17aaae4b7dbe","sn":"98251226730001","uploadTime":"2026-08-21T11:30:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"ram_free_mb","value":"922","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:30:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:30:43.694] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6ece7e68-a57e-4dcb-9f57-17aaae4b7dbe", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:30:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:30:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:30:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:30:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:30:43Z", "value" => "922"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:30:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:30:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:30:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:30:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:30:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:30:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:30:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:30:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:30:43Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:30:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:30:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:30:43Z", "vendor" => "morefun"} [2026-08-21 11:30:43.695] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:30:43.699] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:30:43.699] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:30:43.707] [DEBUG] QUERY OK source="parameter_templates" db=7.5ms idle=801.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-08-21 11:30:43.711] [DEBUG] QUERY OK source="parameter_templates" db=3.3ms idle=585.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-08-21 11:30:43.711] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:30:43.731] [DEBUG] QUERY OK source="tms_terminals" db=12.1ms queue=1.5ms idle=10.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:30:43.731] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:30:44.010] [DEBUG] QUERY OK source="tms_terminals" db=278.6ms idle=21.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:30:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:30:44.011] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:30:44.012] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=279.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 11:30:44.079] [DEBUG] QUERY OK source="tms_terminals" db=66.7ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:30:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:30:44.131] [DEBUG] QUERY OK db=50.3ms idle=68.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6ece7e68-a57e-4dcb-9f57-17aaae4b7dbe", "2026-08-21T11:30:43Z", ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:30:44.131] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77764, oid: "6ece7e68-a57e-4dcb-9f57-17aaae4b7dbe", upload_time: "2026-08-21T11:30:43Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]} [2026-08-21 11:30:44.131] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:30:43Z", "value" => "morefun"} [2026-08-21 11:30:44.193] [DEBUG] QUERY OK db=61.1ms idle=5.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "morefun", "vendor", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.193] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790293, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.193] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:30:43Z", "value" => "kiosk_launcher"} [2026-08-21 11:30:44.258] [DEBUG] QUERY OK db=61.1ms queue=3.9ms idle=62.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "kiosk_launcher", "model", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.258] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790294, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.259] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:30:43Z", "value" => "1.0"} [2026-08-21 11:30:44.282] [DEBUG] QUERY OK db=23.2ms queue=0.1ms idle=66.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "1.0", "app_version", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.283] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790295, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.283] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:30:43Z", "value" => "13"} [2026-08-21 11:30:44.328] [DEBUG] QUERY OK db=45.0ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "13", "android_version", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790296, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.328] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:30:43Z", "value" => "922"} [2026-08-21 11:30:44.377] [DEBUG] QUERY OK db=48.6ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "922", "ram_free_mb", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790297, itemkey: "ram_free_mb", value: "922", timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.378] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:30:43Z", "value" => "WIFI"} [2026-08-21 11:30:44.403] [DEBUG] QUERY OK db=24.6ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "WIFI", "network_type", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790298, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.404] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:30:43Z", "value" => "true"} [2026-08-21 11:30:44.429] [DEBUG] QUERY OK db=25.2ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "true", "kiosk_active", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790299, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.430] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:30:43Z", "value" => ""} [2026-08-21 11:30:44.475] [DEBUG] QUERY OK db=44.8ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:30:43Z", "sim_operator", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790300, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.475] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:30:43Z", "value" => "UNKNOWN"} [2026-08-21 11:30:44.561] [DEBUG] QUERY OK db=85.2ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "UNKNOWN", "sim_number", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790301, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.563] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:30:43Z", "value" => "UNKNOWN"} [2026-08-21 11:30:44.608] [DEBUG] QUERY OK db=41.2ms idle=91.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "UNKNOWN", "sim_iccid", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790302, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.608] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:30:43Z", "value" => "UNKNOWN"} [2026-08-21 11:30:44.667] [DEBUG] QUERY OK db=51.5ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "UNKNOWN", "sim_imsi", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790303, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.667] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:30:43Z", "value" => "UNKNOWN"} [2026-08-21 11:30:44.693] [DEBUG] QUERY OK db=25.2ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "UNKNOWN", "sim_iccid2", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790304, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.693] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:30:43Z", "value" => "UNKNOWN"} [2026-08-21 11:30:44.748] [DEBUG] QUERY OK db=54.6ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "UNKNOWN", "sim_imsi2", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790305, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.749] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:30:43Z", "value" => "34"} [2026-08-21 11:30:44.792] [DEBUG] QUERY OK db=43.2ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "34", "data_usage_mb", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790306, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.795] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:30:43Z", "value" => "0"} [2026-08-21 11:30:44.886] [DEBUG] QUERY OK db=91.3ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "0", "mobile_data_mb", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790307, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:44.887] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:30:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:30:44.954] [DEBUG] QUERY OK db=58.6ms queue=0.3ms idle=102.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:30:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77764, ~N[2026-08-21 11:30:44], ~N[2026-08-21 11:30:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:44.955] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790308, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:30:43Z", message: nil, status_log_id: 77764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:44], updated_at: ~N[2026-08-21 11:30:44]}} [2026-08-21 11:30:51.178] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:30:51.180] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T11:30:51Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T11:30:51Z","value":"55"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T11:30:51Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T11:30:51Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T11:30:51Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T11:30:51Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T11:30:51Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T11:30:51Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T11:30:51Z","vendor":"MoreFun"} [2026-08-21 11:30:51.181] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:30:51Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:30:51Z", "value" => "55"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:30:51Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:30:51Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:30:51Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:30:51Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:30:51Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:30:51Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:30:51Z", "vendor" => "MoreFun"} [2026-08-21 11:30:51.181] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:30:51.181] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:30:51.183] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 11:30:51.186] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms idle=1028.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-08-21 11:30:51.189] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 11:30:51.190] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms idle=3.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-08-21 11:30:51.192] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=0.4ms idle=1.6ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:30:51.196] [DEBUG] QUERY OK source="pos_terminal" db=1.4ms queue=0.8ms idle=3.5ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:30:51.234] [DEBUG] QUERY OK source="pos_merchant" db=37.8ms idle=4.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:30:51.236] [DEBUG] QUERY OK db=0.7ms queue=0.9ms idle=353.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 ["626165170000000"] [2026-08-21 11:30:51.236] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:30:51.239] [DEBUG] QUERY OK source="pos_terminal_data" db=3.2ms idle=40.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 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:30:51.239] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 11:30:51.240] [DEBUG] QUERY OK source="address" db=0.6ms idle=5.8ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:30:51.240] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 11:30:51.243] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 11:30:51.305] [DEBUG] QUERY OK db=61.3ms idle=4.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8001a26b6d1f6266823b64b3c8892f73b4927897ebb4f97e587b1f03d5ad15a9", 4642, 936, ~U[2026-08-21 11:30:51Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:30:51], ~N[2026-08-21 11:30:51]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:30:51.305] [INFO ] AutoPushService: Created push log 49014 for MF919 params.zip [2026-08-21 11:30:51.306] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 4642, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:30:51.306] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 11:30:51.306] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 11:30:51.309] [DEBUG] QUERY OK source="config_file_versions" db=2.2ms queue=0.6ms idle=66.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-08-21 11:30:51.314] [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-08-21 11:30:51.357] [DEBUG] QUERY OK db=41.2ms queue=0.3ms idle=10.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3a184cf5abb551be6020037adb0b6311599dc160012de00e726ba6aae12a9fc0", 4706, 17947, ~U[2026-08-21 11:30:51Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:30:51], ~N[2026-08-21 11:30:51]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:30:51.357] [INFO ] AutoPushService: Created push log 49015 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:30:51.357] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 4706, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:30:51.358] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 11:30:51.358] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 11:30:51.361] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=51.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 11:30:51.361] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 11:30:51.362] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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-08-21 11:30:51.362] [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-08-21 11:30:51.363] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:30:51.364] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:30:51.364] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:30:51.366] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=2.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:30:51.367] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:30:51.367] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 11:30:51.369] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=5.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:30:51.454] [DEBUG] QUERY OK source="tms_terminals" db=44.0ms queue=41.4ms idle=3.0ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 11:30:51], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 11:30:51.455] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:30:51.455] [INFO ] Event published: terminal_updated [2026-08-21 11:30:51.455] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 11:30:51.456] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 11:30:51.456] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 11:30:51.469] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.6ms queue=2.0ms idle=95.7ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 11:30:51], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 11:30:51.472] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=1.7ms idle=15.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 11:30:51.481] [DEBUG] QUERY OK source="terminal_group_rules" db=0.7ms queue=2.9ms idle=5.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 11:30:51.481] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 11:30:51.537] [DEBUG] QUERY OK source="tms_terminals" db=24.8ms queue=41.7ms 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", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 11:30:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:30:51.539] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=57.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 11:30:51.541] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:30:51.544] [DEBUG] QUERY OK source="config_file_versions" db=2.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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:30:51.544] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:30:51.608] [DEBUG] QUERY OK source="parameter_push_logs" db=61.7ms idle=5.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-08-21 11:00:51]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:30:51.608] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:30:51.608] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 11:30:51.610] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=65.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-08-21 11:30:51.611] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=2.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:30:51.611] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:30:51.612] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:30:51.702] [DEBUG] QUERY OK source="tms_terminals" db=49.0ms queue=40.7ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:30:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:30:51.745] [DEBUG] QUERY OK db=41.9ms queue=0.1ms idle=90.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T11:30:51Z", ~N[2026-08-21 11:30:51], ~N[2026-08-21 11:30:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:30:51.745] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77765, oid: "organization_id", upload_time: "2026-08-21T11:30:51Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:51], updated_at: ~N[2026-08-21 11:30:51]} [2026-08-21 11:30:51.745] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:30:51Z", "value" => "online"} [2026-08-21 11:30:51.791] [DEBUG] QUERY OK db=42.9ms queue=0.1ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T11:30:51Z", "online", "status", 77765, ~N[2026-08-21 11:30:51], ~N[2026-08-21 11:30:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:51.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790309, itemkey: "status", value: "online", timestamp: "2026-08-21T11:30:51Z", message: "Terminal status update", status_log_id: 77765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:51], updated_at: ~N[2026-08-21 11:30:51]}} [2026-08-21 11:30:51.791] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 11:30:51.791] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:30:51Z", "value" => "55"} [2026-08-21 11:30:51.843] [DEBUG] QUERY OK db=50.4ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T11:30:51Z", "55", "battery", 77765, ~N[2026-08-21 11:30:51], ~N[2026-08-21 11:30:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:51.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790310, itemkey: "battery", value: "55", timestamp: "2026-08-21T11:30:51Z", message: "Battery level", status_log_id: 77765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:51], updated_at: ~N[2026-08-21 11:30:51]}} [2026-08-21 11:30:51.843] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:30:51Z", "value" => "online"} [2026-08-21 11:30:51.874] [DEBUG] QUERY OK db=30.7ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T11:30:51Z", "online", "network", 77765, ~N[2026-08-21 11:30:51], ~N[2026-08-21 11:30:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:51.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790311, itemkey: "network", value: "online", timestamp: "2026-08-21T11:30:51Z", message: "Network connectivity", status_log_id: 77765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:51], updated_at: ~N[2026-08-21 11:30:51]}} [2026-08-21 11:30:51.875] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 11:30:51.875] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:30:51Z", "value" => "0"} [2026-08-21 11:30:51.942] [DEBUG] QUERY OK db=66.8ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T11:30:51Z", "0", "cpu", 77765, ~N[2026-08-21 11:30:51], ~N[2026-08-21 11:30:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:51.942] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790312, itemkey: "cpu", value: "0", timestamp: "2026-08-21T11:30:51Z", message: "CPU usage percentage", status_log_id: 77765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:51], updated_at: ~N[2026-08-21 11:30:51]}} [2026-08-21 11:30:51.942] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:30:51Z", "value" => "1.0.0"} [2026-08-21 11:30:51.977] [DEBUG] QUERY OK db=34.1ms idle=68.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T11:30:51Z", "1.0.0", "parameter_config", 77765, ~N[2026-08-21 11:30:51], ~N[2026-08-21 11:30:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:51.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790313, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T11:30:51Z", message: "Current parameters version", status_log_id: 77765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:51], updated_at: ~N[2026-08-21 11:30:51]}} [2026-08-21 11:30:51.977] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:30:51Z", "value" => "1.0.1"} [2026-08-21 11:30:52.060] [DEBUG] QUERY OK db=81.9ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T11:30:51Z", "1.0.1", "emv_config", 77765, ~N[2026-08-21 11:30:51], ~N[2026-08-21 11:30:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:52.060] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790314, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T11:30:51Z", message: "Current EMV config version", status_log_id: 77765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:51], updated_at: ~N[2026-08-21 11:30:51]}} [2026-08-21 11:30:52.060] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:30:51Z", "value" => ""} [2026-08-21 11:30:52.208] [DEBUG] QUERY OK db=105.2ms queue=41.1ms idle=84.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T11:30:51Z", "keys_config", 77765, ~N[2026-08-21 11:30:52], ~N[2026-08-21 11:30:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:52.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790315, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T11:30:51Z", message: "Current keys config version", status_log_id: 77765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:52], updated_at: ~N[2026-08-21 11:30:52]}} [2026-08-21 11:30:52.208] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:30:51Z", "value" => "3.8.7.3"} [2026-08-21 11:30:52.270] [DEBUG] QUERY OK db=60.6ms queue=0.5ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T11:30:51Z", "3.8.7.3", "application", 77765, ~N[2026-08-21 11:30:52], ~N[2026-08-21 11:30:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:30:52.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790316, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T11:30:51Z", message: "Current application version", status_log_id: 77765, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:30:52], updated_at: ~N[2026-08-21 11:30:52]}} [2026-08-21 11:30:52.270] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T11:30:51Z"} [2026-08-21 11:30:52.275] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T11:30:51Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 13, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 11:31:11.663] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T11:30:51Z"} [2026-08-21 11:31:11.664] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T11:30:51Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 14, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 11:31:13.787] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:31:13.787] [INFO ] Incoming JSON payload: {"oid":"02211013-3290-4edd-8b35-f86492b592b0","sn":"98251226730001","uploadTime":"2026-08-21T11:31:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:31:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:31:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:31:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:31:13Z"},{"itemkey":"ram_free_mb","value":"918","timestamp":"2026-08-21T11:31:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:31:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:31:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:31:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:31:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:31:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:31:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:31:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:31:13Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:31:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:31: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:31:13.788] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "02211013-3290-4edd-8b35-f86492b592b0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:31:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:31:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:31:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:31:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:31:13Z", "value" => "918"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:31:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:31:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:31:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:31:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:31:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:31:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:31:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:31:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:31:13Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:31:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:31: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:31:13Z", "vendor" => "morefun"} [2026-08-21 11:31:13.789] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:31:13.789] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:31:13.789] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:31:13.793] [DEBUG] QUERY OK source="parameter_templates" db=4.5ms idle=1506.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-08-21 11:31:13.795] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.2ms idle=508.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-08-21 11:31:13.795] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:31:13.796] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=2.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:31:13.881] [DEBUG] QUERY OK source="tms_terminals" db=38.1ms queue=40.5ms idle=3.0ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 11:31:13], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 11:31:13.881] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:31:13.883] [INFO ] Event published: terminal_updated [2026-08-21 11:31:13.888] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 11:31:13.888] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 11:31:13.888] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 11:31:13.895] [DEBUG] QUERY OK source="terminal_group_memberships" db=11.2ms idle=87.1ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 11:31:13], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 11:31:13.904] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms queue=3.8ms 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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 11:31:13.911] [DEBUG] QUERY OK source="terminal_group_rules" db=6.5ms queue=0.1ms idle=0.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 11:31:13.912] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 11:31:13.972] [DEBUG] QUERY OK source="tms_terminals" db=30.0ms queue=41.4ms idle=5.7ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 11:31:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:31:13.972] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:31:13.974] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=61.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 11:31:14.047] [DEBUG] QUERY OK source="tms_terminals" db=30.9ms queue=42.5ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:31:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:31:14.084] [DEBUG] QUERY OK db=34.1ms queue=0.1ms idle=74.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "02211013-3290-4edd-8b35-f86492b592b0", "2026-08-21T11:31:13Z", ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:31:14.084] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77766, oid: "02211013-3290-4edd-8b35-f86492b592b0", upload_time: "2026-08-21T11:31:13Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]} [2026-08-21 11:31:14.088] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:31:13Z", "value" => "morefun"} [2026-08-21 11:31:14.186] [DEBUG] QUERY OK db=52.9ms queue=41.2ms idle=10.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:13Z", "morefun", "vendor", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790317, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.187] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:31:13Z", "value" => "kiosk_launcher"} [2026-08-21 11:31:14.258] [DEBUG] QUERY OK db=69.9ms idle=68.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:13Z", "kiosk_launcher", "model", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.258] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790318, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.258] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:31:13Z", "value" => "1.0"} [2026-08-21 11:31:14.293] [DEBUG] QUERY OK db=34.5ms queue=0.1ms idle=72.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:13Z", "1.0", "app_version", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790319, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.295] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:31:13Z", "value" => "13"} [2026-08-21 11:31:14.346] [DEBUG] QUERY OK db=50.2ms idle=5.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:13Z", "13", "android_version", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.346] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790320, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.347] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:31:13Z", "value" => "918"} [2026-08-21 11:31:14.376] [DEBUG] QUERY OK db=29.0ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:13Z", "918", "ram_free_mb", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790321, itemkey: "ram_free_mb", value: "918", timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.376] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:31:13Z", "value" => "WIFI"} [2026-08-21 11:31:14.437] [DEBUG] QUERY OK db=57.1ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:13Z", "WIFI", "network_type", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790322, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.438] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:31:13Z", "value" => "true"} [2026-08-21 11:31:14.497] [DEBUG] QUERY OK db=54.3ms queue=4.4ms idle=61.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:13Z", "true", "kiosk_active", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790323, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.497] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:31:13Z", "value" => ""} [2026-08-21 11:31:14.534] [DEBUG] QUERY OK db=34.7ms queue=1.8ms idle=60.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:31:13Z", "sim_operator", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790324, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.535] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:31:13Z", "value" => "UNKNOWN"} [2026-08-21 11:31:14.577] [DEBUG] QUERY OK db=41.3ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:13Z", "UNKNOWN", "sim_number", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.577] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790325, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.577] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:31:13Z", "value" => "UNKNOWN"} [2026-08-21 11:31:14.615] [DEBUG] QUERY OK db=37.6ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:13Z", "UNKNOWN", "sim_iccid", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790326, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.617] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:31:13Z", "value" => "UNKNOWN"} [2026-08-21 11:31:14.657] [DEBUG] QUERY OK db=37.6ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:13Z", "UNKNOWN", "sim_imsi", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790327, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.657] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:31:13Z", "value" => "UNKNOWN"} [2026-08-21 11:31:14.690] [DEBUG] QUERY OK db=32.4ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:13Z", "UNKNOWN", "sim_iccid2", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790328, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.692] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:31:13Z", "value" => "UNKNOWN"} [2026-08-21 11:31:14.726] [DEBUG] QUERY OK db=33.9ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:13Z", "UNKNOWN", "sim_imsi2", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790329, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.727] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:31:13Z", "value" => "34"} [2026-08-21 11:31:14.763] [DEBUG] QUERY OK db=35.3ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:13Z", "34", "data_usage_mb", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790330, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.764] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:31:13Z", "value" => "0"} [2026-08-21 11:31:14.824] [DEBUG] QUERY OK db=59.0ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:13Z", "0", "mobile_data_mb", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790331, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:14.825] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:31: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:31:14.903] [DEBUG] QUERY OK db=77.2ms queue=0.1ms idle=62.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77766, ~N[2026-08-21 11:31:14], ~N[2026-08-21 11:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:14.904] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790332, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:31:13Z", message: nil, status_log_id: 77766, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:14], updated_at: ~N[2026-08-21 11:31:14]}} [2026-08-21 11:31:23.645] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 11:31:23.646] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T02:40:48Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T02:40:48Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T02:40:48Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T02:40:48Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T02:40:48Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T02:40:48Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T02:40:48Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T02:40:48Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T02:40:48Z","vendor":"MoreFun"} [2026-08-21 11:31:23.646] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:40:48Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:40:48Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:40:48Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:40:48Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:40:48Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:40:48Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:40:48Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:40:48Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T02:40:48Z", "vendor" => "MoreFun"} [2026-08-21 11:31:23.647] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:31:23.647] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 11:31:23.647] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 11:31:23.648] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1314.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-08-21 11:31:23.649] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=313.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 11:31:23.653] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms queue=1.7ms idle=2.7ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:31:23.657] [DEBUG] QUERY OK source="parameter_definitions" db=1.2ms queue=1.8ms idle=4.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-08-21 11:31:23.658] [DEBUG] QUERY OK source="pos_terminal" db=1.0ms idle=3.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:31:23.698] [DEBUG] QUERY OK source="pos_merchant" db=39.4ms idle=1.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:31:23.706] [DEBUG] QUERY OK db=3.2ms queue=4.2ms idle=804.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 ["123451234512345"] [2026-08-21 11:31:23.706] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:31:23.712] [DEBUG] QUERY OK source="pos_terminal_data" db=5.4ms idle=47.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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:31:23.713] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 11:31:23.718] [DEBUG] QUERY OK source="address" db=3.6ms idle=16.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` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:31:23.718] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 11:31:23.721] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 11:31:23.757] [DEBUG] QUERY OK db=34.9ms idle=9.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "4e592382801a30deff536eff3615fd1c53a2613baced9546bf1f7c7187f27bc5", 4866, 932, ~U[2026-08-21 11:31:23Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:31:23], ~N[2026-08-21 11:31:23]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:31:23.757] [INFO ] AutoPushService: Created push log 49016 for MF919 params.zip [2026-08-21 11:31:23.757] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 4866, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:31:23.758] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:31:23.758] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 11:31:23.760] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.5ms 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-08-21 11:31:23.768] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 11:31:23.862] [DEBUG] QUERY OK db=92.7ms idle=12.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ce9e18d88bcf7b55d5c31a147e170d099eb5d12d1761d84a990ba1cebcd38622", 4962, 17947, ~U[2026-08-21 11:31:23Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:31:23], ~N[2026-08-21 11:31:23]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:31:23.862] [INFO ] AutoPushService: Created push log 49017 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:31:23.862] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 4962, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:31:23.862] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:31:23.863] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 11:31:23.869] [DEBUG] QUERY OK source="config_file_versions" db=6.1ms idle=102.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-08-21 11:31:23.869] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 11:31:23.873] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=7.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:31:23.873] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 11:31:23.880] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:31:23.880] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:31:23.881] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:31:23.882] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=12.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-08-21 11:31:23.883] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:31:23.884] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 11:31:23.885] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=11.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:31:23.889] [INFO ] Terminal updated: 98250623730001 [2026-08-21 11:31:24.078] [DEBUG] QUERY OK source="tms_terminals" db=147.3ms queue=41.3ms idle=6.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:31:23], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:31:24.079] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.4ms idle=193.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 11:31:24.081] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=1.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:31:24.083] [DEBUG] QUERY OK source="config_file_versions" db=1.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-08-21 11:31:24.083] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:31:24.159] [DEBUG] QUERY OK source="parameter_push_logs" db=72.8ms idle=5.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 [19, "application", ~N[2026-08-21 11:01:24]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:31:24.159] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:31:24.160] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 11:31:24.161] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=77.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:31:24.166] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms idle=5.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-08-21 11:31:24.168] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:31:24.168] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=6.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:31:24.232] [DEBUG] QUERY OK source="tms_terminals" db=63.5ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:31:24], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:31:24.257] [DEBUG] QUERY OK db=23.1ms idle=65.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T02:40:48Z", ~N[2026-08-21 11:31:24], ~N[2026-08-21 11:31:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:31:24.257] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77767, oid: "organization_id", upload_time: "2026-08-21T02:40:48Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:24], updated_at: ~N[2026-08-21 11:31:24]} [2026-08-21 11:31:24.257] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:40:48Z", "value" => "online"} [2026-08-21 11:31:24.307] [DEBUG] QUERY OK db=49.8ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T02:40:48Z", "online", "status", 77767, ~N[2026-08-21 11:31:24], ~N[2026-08-21 11:31:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:24.308] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790333, itemkey: "status", value: "online", timestamp: "2026-08-21T02:40:48Z", message: "Terminal status update", status_log_id: 77767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:24], updated_at: ~N[2026-08-21 11:31:24]}} [2026-08-21 11:31:24.308] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 11:31:24.308] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:40:48Z", "value" => "51"} [2026-08-21 11:31:24.345] [DEBUG] QUERY OK db=36.1ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T02:40:48Z", "51", "battery", 77767, ~N[2026-08-21 11:31:24], ~N[2026-08-21 11:31:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:24.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790334, itemkey: "battery", value: "51", timestamp: "2026-08-21T02:40:48Z", message: "Battery level", status_log_id: 77767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:24], updated_at: ~N[2026-08-21 11:31:24]}} [2026-08-21 11:31:24.345] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:40:48Z", "value" => "online"} [2026-08-21 11:31:24.391] [DEBUG] QUERY OK db=44.9ms queue=0.1ms idle=7.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T02:40:48Z", "online", "network", 77767, ~N[2026-08-21 11:31:24], ~N[2026-08-21 11:31:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:24.391] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790335, itemkey: "network", value: "online", timestamp: "2026-08-21T02:40:48Z", message: "Network connectivity", status_log_id: 77767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:24], updated_at: ~N[2026-08-21 11:31:24]}} [2026-08-21 11:31:24.392] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 11:31:24.392] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:40:48Z", "value" => "0"} [2026-08-21 11:31:24.429] [DEBUG] QUERY OK db=33.7ms queue=0.1ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T02:40:48Z", "0", "cpu", 77767, ~N[2026-08-21 11:31:24], ~N[2026-08-21 11:31:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:24.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790336, itemkey: "cpu", value: "0", timestamp: "2026-08-21T02:40:48Z", message: "CPU usage percentage", status_log_id: 77767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:24], updated_at: ~N[2026-08-21 11:31:24]}} [2026-08-21 11:31:24.430] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:40:48Z", "value" => "1.0.0"} [2026-08-21 11:31:24.454] [DEBUG] QUERY OK db=23.1ms 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-08-21T02:40:48Z", "1.0.0", "parameter_config", 77767, ~N[2026-08-21 11:31:24], ~N[2026-08-21 11:31:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:24.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790337, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T02:40:48Z", message: "Current parameters version", status_log_id: 77767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:24], updated_at: ~N[2026-08-21 11:31:24]}} [2026-08-21 11:31:24.454] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:40:48Z", "value" => "1.0.1"} [2026-08-21 11:31:24.514] [DEBUG] QUERY OK db=59.1ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T02:40:48Z", "1.0.1", "emv_config", 77767, ~N[2026-08-21 11:31:24], ~N[2026-08-21 11:31:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:24.514] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790338, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T02:40:48Z", message: "Current EMV config version", status_log_id: 77767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:24], updated_at: ~N[2026-08-21 11:31:24]}} [2026-08-21 11:31:24.518] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:40:48Z", "value" => ""} [2026-08-21 11:31:24.608] [DEBUG] QUERY OK db=43.9ms queue=43.9ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T02:40:48Z", "keys_config", 77767, ~N[2026-08-21 11:31:24], ~N[2026-08-21 11:31:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:24.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790339, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T02:40:48Z", message: "Current keys config version", status_log_id: 77767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:24], updated_at: ~N[2026-08-21 11:31:24]}} [2026-08-21 11:31:24.608] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:40:48Z", "value" => "3.8.7.3"} [2026-08-21 11:31:24.655] [DEBUG] QUERY OK db=43.1ms queue=3.1ms idle=94.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T02:40:48Z", "3.8.7.3", "application", 77767, ~N[2026-08-21 11:31:24], ~N[2026-08-21 11:31:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:24.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790340, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T02:40:48Z", message: "Current application version", status_log_id: 77767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:24], updated_at: ~N[2026-08-21 11:31:24]}} [2026-08-21 11:31:24.657] [WARN ] Unexpected async result [2026-08-21 11:31:24.657] [WARN ] Unexpected async result [2026-08-21 11:31:44.113] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:31:44.114] [INFO ] Incoming JSON payload: {"oid":"7b5fbd80-e207-403f-bad5-75fca8d65230","sn":"98251226730001","uploadTime":"2026-08-21T11:31:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"ram_free_mb","value":"924","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:31:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:31:44.115] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7b5fbd80-e207-403f-bad5-75fca8d65230", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:31:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:31:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:31:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:31:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:31:43Z", "value" => "924"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:31:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:31:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:31:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:31:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:31:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:31:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:31:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:31:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:31:43Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:31:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:31:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:31:43Z", "vendor" => "morefun"} [2026-08-21 11:31:44.115] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:31:44.115] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:31:44.115] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:31:44.116] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=990.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-08-21 11:31:44.117] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=713.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-08-21 11:31:44.117] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:31:44.117] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:31:44.118] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:31:44.153] [DEBUG] QUERY OK source="tms_terminals" db=35.2ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:31:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:31:44.153] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:31:44.155] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=36.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:31:44.213] [DEBUG] QUERY OK source="tms_terminals" db=57.3ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:31:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:31:44.247] [DEBUG] QUERY OK db=33.5ms queue=0.1ms idle=58.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "7b5fbd80-e207-403f-bad5-75fca8d65230", "2026-08-21T11:31:43Z", ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:31:44.247] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77768, oid: "7b5fbd80-e207-403f-bad5-75fca8d65230", upload_time: "2026-08-21T11:31:43Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]} [2026-08-21 11:31:44.247] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:31:43Z", "value" => "morefun"} [2026-08-21 11:31:44.277] [DEBUG] QUERY OK db=29.1ms queue=0.4ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "morefun", "vendor", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790341, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.278] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:31:43Z", "value" => "kiosk_launcher"} [2026-08-21 11:31:44.337] [DEBUG] QUERY OK db=58.8ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "kiosk_launcher", "model", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790342, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.337] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:31:43Z", "value" => "1.0"} [2026-08-21 11:31:44.400] [DEBUG] QUERY OK db=61.9ms queue=0.1ms idle=60.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "1.0", "app_version", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.400] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790343, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.400] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:31:43Z", "value" => "13"} [2026-08-21 11:31:44.430] [DEBUG] QUERY OK db=29.3ms queue=0.1ms idle=63.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "13", "android_version", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790344, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.430] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:31:43Z", "value" => "924"} [2026-08-21 11:31:44.459] [DEBUG] QUERY OK db=28.0ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "924", "ram_free_mb", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790345, itemkey: "ram_free_mb", value: "924", timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.459] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:31:43Z", "value" => "WIFI"} [2026-08-21 11:31:44.516] [DEBUG] QUERY OK db=55.7ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "WIFI", "network_type", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790346, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.516] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:31:43Z", "value" => "true"} [2026-08-21 11:31:44.573] [DEBUG] QUERY OK db=54.9ms queue=1.1ms idle=57.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "true", "kiosk_active", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790347, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.573] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:31:43Z", "value" => ""} [2026-08-21 11:31:44.622] [DEBUG] QUERY OK db=48.2ms queue=0.3ms idle=57.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:31:43Z", "sim_operator", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790348, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.622] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:31:43Z", "value" => "UNKNOWN"} [2026-08-21 11:31:44.654] [DEBUG] QUERY OK db=30.2ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "UNKNOWN", "sim_number", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790349, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.654] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:31:43Z", "value" => "UNKNOWN"} [2026-08-21 11:31:44.687] [DEBUG] QUERY OK db=31.1ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "UNKNOWN", "sim_iccid", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.689] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790350, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.689] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:31:43Z", "value" => "UNKNOWN"} [2026-08-21 11:31:44.733] [DEBUG] QUERY OK db=43.0ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "UNKNOWN", "sim_imsi", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790351, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.734] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:31:43Z", "value" => "UNKNOWN"} [2026-08-21 11:31:44.770] [DEBUG] QUERY OK db=35.8ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "UNKNOWN", "sim_iccid2", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790352, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.770] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:31:43Z", "value" => "UNKNOWN"} [2026-08-21 11:31:44.830] [DEBUG] QUERY OK db=59.8ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "UNKNOWN", "sim_imsi2", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.831] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790353, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.831] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:31:43Z", "value" => "34"} [2026-08-21 11:31:44.907] [DEBUG] QUERY OK db=75.6ms idle=61.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "34", "data_usage_mb", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790354, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.907] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:31:43Z", "value" => "0"} [2026-08-21 11:31:44.966] [DEBUG] QUERY OK db=57.7ms queue=0.3ms idle=77.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "0", "mobile_data_mb", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:44.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790355, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:31:44.968] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:31:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:31:45.012] [DEBUG] QUERY OK db=42.9ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:31:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77768, ~N[2026-08-21 11:31:44], ~N[2026-08-21 11:31:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:31:45.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790356, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:31:43Z", message: nil, status_log_id: 77768, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:31:44], updated_at: ~N[2026-08-21 11:31:44]}} [2026-08-21 11:32:04.245] [INFO ] Running offline device check... [2026-08-21 11:32:04.246] [INFO ] Starting offline device check... [2026-08-21 11:32:04.250] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=2.9ms idle=767.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 11:32:04.272] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.2ms queue=2.8ms idle=318.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:32:04.289] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.6ms idle=22.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.290] [INFO ] Starting scheduled rule validation [2026-08-21 11:32:04.290] [DEBUG] Validating missing assignments [2026-08-21 11:32:04.296] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.2ms idle=16.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.297] [DEBUG] QUERY OK source="terminal_group_rules" db=4.1ms queue=0.7ms idle=3.5ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-08-21 11:32:04.298] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.300] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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-08-21 11:32:04.305] [DEBUG] QUERY OK source="tms_terminals" db=7.4ms idle=0.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-08-21 11:32:04.311] [DEBUG] Re-applied 0 rules during validation [2026-08-21 11:32:04.314] [DEBUG] Validating invalid assignments [2026-08-21 11:32:04.315] [DEBUG] Validating rule consistency [2026-08-21 11:32:04.315] [DEBUG] Updating group terminal counts [2026-08-21 11:32:04.314] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.3ms queue=5.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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.323] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.7ms 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 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.326] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=9.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.332] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms queue=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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.343] [DEBUG] QUERY OK source="terminal_groups" db=1.0ms queue=3.5ms idle=6.2ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-08-21 11:32:04.351] [DEBUG] QUERY OK source="terminal_groups" db=2.9ms queue=4.8ms idle=0.5ms 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-08-21 11:32:04.355] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.5ms queue=2.8ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.358] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.371] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms queue=0.9ms idle=10.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-08-21 11:32:04.377] [DEBUG] QUERY OK source="terminal_group_rules" db=2.8ms queue=3.2ms 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-08-21 11:32:04.382] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.8ms 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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.383] [DEBUG] QUERY OK source="terminal_group_rules" db=2.7ms queue=2.8ms idle=0.3ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:259 [2026-08-21 11:32:04.392] [DEBUG] QUERY OK source="terminal_group_memberships" db=4.8ms queue=3.9ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:261 [2026-08-21 11:32:04.396] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.1ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.399] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.400] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.401] [DEBUG] QUERY OK source="terminal_group_memberships" db=4.9ms queue=4.2ms idle=0.3ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:262 [2026-08-21 11:32:04.402] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=1.3ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.408] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.2ms queue=4.0ms 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-08-21 11:32:04.408] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-08-21 11:32:04.408] [INFO ] Rule validation completed - applied 0 fixes [2026-08-21 11:32:04.444] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=41.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.450] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=36.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:32:04.455] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.461] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=5.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.463] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=6.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.465] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 11:32:04.560] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=93.2ms queue=1.0ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.562] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.1ms idle=73.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:32:04.563] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.574] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.576] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms 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 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.583] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.9ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.586] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms queue=0.1ms idle=7.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.589] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.597] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.599] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.599] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.601] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.601] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.605] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.606] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.607] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.607] [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-08-21 11:32:04.608] [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-08-21 11:32:04.609] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.610] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.612] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.613] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.614] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.616] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.617] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.618] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.620] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.621] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.622] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms 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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:32:04.622] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 11:32:04.623] [INFO ] Offline device check completed successfully [2026-08-21 11:32:14.219] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:32:14.219] [INFO ] Incoming JSON payload: {"oid":"ce6860c1-22b0-485b-90df-f77177a35b1c","sn":"98251226730001","uploadTime":"2026-08-21T11:32:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:32:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:32:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:32:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:32:13Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T11:32:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:32:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:32:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:32:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:32:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:32:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:32:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:32:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:32:13Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:32:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:32: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:32:14.220] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ce6860c1-22b0-485b-90df-f77177a35b1c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:32:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:32:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:32:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:32:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:32:13Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:32:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:32:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:32:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:32:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:32:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:32:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:32:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:32:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:32:13Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:32:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:32: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:32:13Z", "vendor" => "morefun"} [2026-08-21 11:32:14.220] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:32:14.220] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:32:14.220] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:32:14.221] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=693.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 11:32:14.222] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=285.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-08-21 11:32:14.222] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:32:14.222] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:32:14.223] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:32:14.247] [DEBUG] QUERY OK source="tms_terminals" db=23.5ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:32:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:32:14.247] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:32:14.248] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=24.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:32:14.290] [DEBUG] QUERY OK source="tms_terminals" db=41.3ms queue=0.2ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:32:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:32:14.329] [DEBUG] QUERY OK db=38.8ms queue=0.1ms idle=42.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ce6860c1-22b0-485b-90df-f77177a35b1c", "2026-08-21T11:32:13Z", ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:32:14.329] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77769, oid: "ce6860c1-22b0-485b-90df-f77177a35b1c", upload_time: "2026-08-21T11:32:13Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]} [2026-08-21 11:32:14.329] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:32:13Z", "value" => "morefun"} [2026-08-21 11:32:14.354] [DEBUG] QUERY OK db=23.8ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:13Z", "morefun", "vendor", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790357, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.354] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:32:13Z", "value" => "kiosk_launcher"} [2026-08-21 11:32:14.408] [DEBUG] QUERY OK db=53.3ms queue=0.1ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:13Z", "kiosk_launcher", "model", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.409] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790358, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.409] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:32:13Z", "value" => "1.0"} [2026-08-21 11:32:14.451] [DEBUG] QUERY OK db=41.2ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:13Z", "1.0", "app_version", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790359, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.451] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:32:13Z", "value" => "13"} [2026-08-21 11:32:14.487] [DEBUG] QUERY OK db=35.4ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:13Z", "13", "android_version", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.487] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790360, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.487] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:32:13Z", "value" => "921"} [2026-08-21 11:32:14.533] [DEBUG] QUERY OK db=45.0ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:13Z", "921", "ram_free_mb", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790361, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.534] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:32:13Z", "value" => "WIFI"} [2026-08-21 11:32:14.594] [DEBUG] QUERY OK db=60.2ms idle=1.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:13Z", "WIFI", "network_type", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790362, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.595] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:32:13Z", "value" => "true"} [2026-08-21 11:32:14.647] [DEBUG] QUERY OK db=51.5ms idle=62.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:13Z", "true", "kiosk_active", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.647] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790363, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.648] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:32:13Z", "value" => ""} [2026-08-21 11:32:14.679] [DEBUG] QUERY OK db=29.7ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:32:13Z", "sim_operator", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790364, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.680] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:32:13Z", "value" => "UNKNOWN"} [2026-08-21 11:32:14.713] [DEBUG] QUERY OK db=31.7ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:13Z", "UNKNOWN", "sim_number", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.713] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790365, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.714] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:32:13Z", "value" => "UNKNOWN"} [2026-08-21 11:32:14.771] [DEBUG] QUERY OK db=53.0ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:13Z", "UNKNOWN", "sim_iccid", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790366, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.772] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:32:13Z", "value" => "UNKNOWN"} [2026-08-21 11:32:14.825] [DEBUG] QUERY OK db=52.7ms queue=0.1ms idle=59.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:13Z", "UNKNOWN", "sim_imsi", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790367, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.825] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:32:13Z", "value" => "UNKNOWN"} [2026-08-21 11:32:14.860] [DEBUG] QUERY OK db=34.4ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:13Z", "UNKNOWN", "sim_iccid2", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790368, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.861] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:32:13Z", "value" => "UNKNOWN"} [2026-08-21 11:32:14.892] [DEBUG] QUERY OK db=28.8ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:13Z", "UNKNOWN", "sim_imsi2", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790369, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.893] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:32:13Z", "value" => "34"} [2026-08-21 11:32:14.932] [DEBUG] QUERY OK db=38.4ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:13Z", "34", "data_usage_mb", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.932] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790370, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.932] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:32:13Z", "value" => "0"} [2026-08-21 11:32:14.966] [DEBUG] QUERY OK db=33.9ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:13Z", "0", "mobile_data_mb", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:14.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790371, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:14.968] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:32: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:32:15.031] [DEBUG] QUERY OK db=62.2ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77769, ~N[2026-08-21 11:32:14], ~N[2026-08-21 11:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:15.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790372, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:32:13Z", message: nil, status_log_id: 77769, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:14], updated_at: ~N[2026-08-21 11:32:14]}} [2026-08-21 11:32:44.332] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:32:44.332] [INFO ] Incoming JSON payload: {"oid":"67fd0ede-69a1-4c6f-a629-394b8088d887","sn":"98251226730001","uploadTime":"2026-08-21T11:32:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"ram_free_mb","value":"918","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:32:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:32:44.334] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "67fd0ede-69a1-4c6f-a629-394b8088d887", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:32:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:32:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:32:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:32:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:32:43Z", "value" => "918"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:32:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:32:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:32:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:32:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:32:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:32:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:32:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:32:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:32:43Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:32:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:32:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:32:43Z", "vendor" => "morefun"} [2026-08-21 11:32:44.334] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:32:44.334] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:32:44.334] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:32:44.335] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=701.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-08-21 11:32:44.336] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=399.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-08-21 11:32:44.336] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:32:44.338] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:32:44.338] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:32:44.381] [DEBUG] QUERY OK source="tms_terminals" db=42.2ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:32:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:32:44.381] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:32:44.383] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=44.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-08-21 11:32:44.429] [DEBUG] QUERY OK source="tms_terminals" db=42.7ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:32:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:32:44.468] [DEBUG] QUERY OK db=38.6ms idle=46.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "67fd0ede-69a1-4c6f-a629-394b8088d887", "2026-08-21T11:32:43Z", ~N[2026-08-21 11:32:44], ~N[2026-08-21 11:32:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:32:44.468] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77770, oid: "67fd0ede-69a1-4c6f-a629-394b8088d887", upload_time: "2026-08-21T11:32:43Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:44], updated_at: ~N[2026-08-21 11:32:44]} [2026-08-21 11:32:44.468] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:32:43Z", "value" => "morefun"} [2026-08-21 11:32:44.522] [DEBUG] QUERY OK db=53.3ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "morefun", "vendor", 77770, ~N[2026-08-21 11:32:44], ~N[2026-08-21 11:32:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:44.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790373, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:44], updated_at: ~N[2026-08-21 11:32:44]}} [2026-08-21 11:32:44.522] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:32:43Z", "value" => "kiosk_launcher"} [2026-08-21 11:32:44.560] [DEBUG] QUERY OK db=36.6ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "kiosk_launcher", "model", 77770, ~N[2026-08-21 11:32:44], ~N[2026-08-21 11:32:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:44.560] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790374, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:44], updated_at: ~N[2026-08-21 11:32:44]}} [2026-08-21 11:32:44.560] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:32:43Z", "value" => "1.0"} [2026-08-21 11:32:44.633] [DEBUG] QUERY OK db=71.7ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "1.0", "app_version", 77770, ~N[2026-08-21 11:32:44], ~N[2026-08-21 11:32:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:44.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790375, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:44], updated_at: ~N[2026-08-21 11:32:44]}} [2026-08-21 11:32:44.634] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:32:43Z", "value" => "13"} [2026-08-21 11:32:44.676] [DEBUG] QUERY OK db=41.8ms idle=74.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "13", "android_version", 77770, ~N[2026-08-21 11:32:44], ~N[2026-08-21 11:32:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:44.676] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790376, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:44], updated_at: ~N[2026-08-21 11:32:44]}} [2026-08-21 11:32:44.676] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:32:43Z", "value" => "918"} [2026-08-21 11:32:44.719] [DEBUG] QUERY OK db=42.3ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "918", "ram_free_mb", 77770, ~N[2026-08-21 11:32:44], ~N[2026-08-21 11:32:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:44.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790377, itemkey: "ram_free_mb", value: "918", timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:44], updated_at: ~N[2026-08-21 11:32:44]}} [2026-08-21 11:32:44.719] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:32:43Z", "value" => "WIFI"} [2026-08-21 11:32:44.764] [DEBUG] QUERY OK db=43.9ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "WIFI", "network_type", 77770, ~N[2026-08-21 11:32:44], ~N[2026-08-21 11:32:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:44.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790378, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:44], updated_at: ~N[2026-08-21 11:32:44]}} [2026-08-21 11:32:44.765] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:32:43Z", "value" => "true"} [2026-08-21 11:32:44.840] [DEBUG] QUERY OK db=74.5ms queue=0.1ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "true", "kiosk_active", 77770, ~N[2026-08-21 11:32:44], ~N[2026-08-21 11:32:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:44.840] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790379, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:44], updated_at: ~N[2026-08-21 11:32:44]}} [2026-08-21 11:32:44.840] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:32:43Z", "value" => ""} [2026-08-21 11:32:44.909] [DEBUG] QUERY OK db=67.3ms queue=1.2ms idle=76.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:32:43Z", "sim_operator", 77770, ~N[2026-08-21 11:32:44], ~N[2026-08-21 11:32:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:44.909] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790380, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:44], updated_at: ~N[2026-08-21 11:32:44]}} [2026-08-21 11:32:44.910] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:32:43Z", "value" => "UNKNOWN"} [2026-08-21 11:32:45.088] [DEBUG] QUERY OK db=178.0ms idle=69.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "UNKNOWN", "sim_number", 77770, ~N[2026-08-21 11:32:44], ~N[2026-08-21 11:32:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:45.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790381, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:44], updated_at: ~N[2026-08-21 11:32:44]}} [2026-08-21 11:32:45.089] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:32:43Z", "value" => "UNKNOWN"} [2026-08-21 11:32:45.151] [DEBUG] QUERY OK db=60.8ms idle=181.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "UNKNOWN", "sim_iccid", 77770, ~N[2026-08-21 11:32:45], ~N[2026-08-21 11:32:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:45.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790382, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:45], updated_at: ~N[2026-08-21 11:32:45]}} [2026-08-21 11:32:45.151] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:32:43Z", "value" => "UNKNOWN"} [2026-08-21 11:32:45.217] [DEBUG] QUERY OK db=65.1ms idle=63.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "UNKNOWN", "sim_imsi", 77770, ~N[2026-08-21 11:32:45], ~N[2026-08-21 11:32:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:45.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790383, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:45], updated_at: ~N[2026-08-21 11:32:45]}} [2026-08-21 11:32:45.217] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:32:43Z", "value" => "UNKNOWN"} [2026-08-21 11:32:45.247] [DEBUG] QUERY OK db=29.5ms idle=66.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "UNKNOWN", "sim_iccid2", 77770, ~N[2026-08-21 11:32:45], ~N[2026-08-21 11:32:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:45.247] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790384, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:45], updated_at: ~N[2026-08-21 11:32:45]}} [2026-08-21 11:32:45.248] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:32:43Z", "value" => "UNKNOWN"} [2026-08-21 11:32:45.289] [DEBUG] QUERY OK db=40.6ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "UNKNOWN", "sim_imsi2", 77770, ~N[2026-08-21 11:32:45], ~N[2026-08-21 11:32:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:45.289] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790385, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:45], updated_at: ~N[2026-08-21 11:32:45]}} [2026-08-21 11:32:45.289] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:32:43Z", "value" => "34"} [2026-08-21 11:32:45.327] [DEBUG] QUERY OK db=37.1ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "34", "data_usage_mb", 77770, ~N[2026-08-21 11:32:45], ~N[2026-08-21 11:32:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:45.327] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790386, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:45], updated_at: ~N[2026-08-21 11:32:45]}} [2026-08-21 11:32:45.327] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:32:43Z", "value" => "0"} [2026-08-21 11:32:45.386] [DEBUG] QUERY OK db=58.4ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "0", "mobile_data_mb", 77770, ~N[2026-08-21 11:32:45], ~N[2026-08-21 11:32:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:45.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790387, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:45], updated_at: ~N[2026-08-21 11:32:45]}} [2026-08-21 11:32:45.388] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:32:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:32:45.414] [DEBUG] QUERY OK db=24.7ms idle=61.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:32:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77770, ~N[2026-08-21 11:32:45], ~N[2026-08-21 11:32:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:32:45.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790388, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:32:43Z", message: nil, status_log_id: 77770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:32:45], updated_at: ~N[2026-08-21 11:32:45]}} [2026-08-21 11:33:14.425] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:33:14.425] [INFO ] Incoming JSON payload: {"oid":"82086982-ad27-4439-b0d7-7a9f09ef3f96","sn":"98251226730001","uploadTime":"2026-08-21T11:33:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"ram_free_mb","value":"918","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:33:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:33:14.426] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "82086982-ad27-4439-b0d7-7a9f09ef3f96", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:33:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:33:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:33:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:33:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:33:14Z", "value" => "918"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:33:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:33:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:33:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:33:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:33:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:33:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:33:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:33:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:33:14Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:33:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:33:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:33:14Z", "vendor" => "morefun"} [2026-08-21 11:33:14.427] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:33:14.427] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:33:14.427] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:33:14.429] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms queue=0.1ms idle=684.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-08-21 11:33:14.430] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=491.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-08-21 11:33:14.431] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:33:14.432] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:33:14.432] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:33:14.467] [DEBUG] QUERY OK source="tms_terminals" db=34.6ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:33:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:33:14.467] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:33:14.468] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=35.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:33:14.499] [DEBUG] QUERY OK source="tms_terminals" db=30.5ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:33:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:33:14.532] [DEBUG] QUERY OK db=33.0ms idle=31.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "82086982-ad27-4439-b0d7-7a9f09ef3f96", "2026-08-21T11:33:14Z", ~N[2026-08-21 11:33:14], ~N[2026-08-21 11:33:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:33:14.533] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77771, oid: "82086982-ad27-4439-b0d7-7a9f09ef3f96", upload_time: "2026-08-21T11:33:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:14], updated_at: ~N[2026-08-21 11:33:14]} [2026-08-21 11:33:14.533] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:33:14Z", "value" => "morefun"} [2026-08-21 11:33:14.568] [DEBUG] QUERY OK db=34.8ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "morefun", "vendor", 77771, ~N[2026-08-21 11:33:14], ~N[2026-08-21 11:33:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:14.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790389, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:14], updated_at: ~N[2026-08-21 11:33:14]}} [2026-08-21 11:33:14.568] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:33:14Z", "value" => "kiosk_launcher"} [2026-08-21 11:33:14.609] [DEBUG] QUERY OK db=40.6ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "kiosk_launcher", "model", 77771, ~N[2026-08-21 11:33:14], ~N[2026-08-21 11:33:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:14.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790390, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:14], updated_at: ~N[2026-08-21 11:33:14]}} [2026-08-21 11:33:14.611] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:33:14Z", "value" => "1.0"} [2026-08-21 11:33:14.661] [DEBUG] QUERY OK db=49.2ms queue=0.1ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "1.0", "app_version", 77771, ~N[2026-08-21 11:33:14], ~N[2026-08-21 11:33:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:14.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790391, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:14], updated_at: ~N[2026-08-21 11:33:14]}} [2026-08-21 11:33:14.661] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:33:14Z", "value" => "13"} [2026-08-21 11:33:14.685] [DEBUG] QUERY OK db=23.5ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "13", "android_version", 77771, ~N[2026-08-21 11:33:14], ~N[2026-08-21 11:33:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:14.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790392, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:14], updated_at: ~N[2026-08-21 11:33:14]}} [2026-08-21 11:33:14.686] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:33:14Z", "value" => "918"} [2026-08-21 11:33:14.718] [DEBUG] QUERY OK db=31.9ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "918", "ram_free_mb", 77771, ~N[2026-08-21 11:33:14], ~N[2026-08-21 11:33:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:14.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790393, itemkey: "ram_free_mb", value: "918", timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:14], updated_at: ~N[2026-08-21 11:33:14]}} [2026-08-21 11:33:14.718] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:33:14Z", "value" => "WIFI"} [2026-08-21 11:33:14.761] [DEBUG] QUERY OK db=42.6ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "WIFI", "network_type", 77771, ~N[2026-08-21 11:33:14], ~N[2026-08-21 11:33:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:14.761] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790394, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:14], updated_at: ~N[2026-08-21 11:33:14]}} [2026-08-21 11:33:14.762] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:33:14Z", "value" => "true"} [2026-08-21 11:33:14.785] [DEBUG] QUERY OK db=22.8ms idle=16.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "true", "kiosk_active", 77771, ~N[2026-08-21 11:33:14], ~N[2026-08-21 11:33:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:14.786] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790395, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:14], updated_at: ~N[2026-08-21 11:33:14]}} [2026-08-21 11:33:14.786] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:33:14Z", "value" => ""} [2026-08-21 11:33:14.859] [DEBUG] QUERY OK db=73.0ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:33:14Z", "sim_operator", 77771, ~N[2026-08-21 11:33:14], ~N[2026-08-21 11:33:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:14.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790396, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:14], updated_at: ~N[2026-08-21 11:33:14]}} [2026-08-21 11:33:14.860] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:33:14Z", "value" => "UNKNOWN"} [2026-08-21 11:33:14.994] [DEBUG] QUERY OK db=133.6ms idle=75.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "UNKNOWN", "sim_number", 77771, ~N[2026-08-21 11:33:14], ~N[2026-08-21 11:33:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:14.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790397, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:14], updated_at: ~N[2026-08-21 11:33:14]}} [2026-08-21 11:33:14.994] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:33:14Z", "value" => "UNKNOWN"} [2026-08-21 11:33:15.037] [DEBUG] QUERY OK db=42.1ms queue=0.1ms idle=135.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "UNKNOWN", "sim_iccid", 77771, ~N[2026-08-21 11:33:14], ~N[2026-08-21 11:33:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:15.037] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790398, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:14], updated_at: ~N[2026-08-21 11:33:14]}} [2026-08-21 11:33:15.037] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:33:14Z", "value" => "UNKNOWN"} [2026-08-21 11:33:15.100] [DEBUG] QUERY OK db=62.4ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "UNKNOWN", "sim_imsi", 77771, ~N[2026-08-21 11:33:15], ~N[2026-08-21 11:33:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:15.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790399, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:15], updated_at: ~N[2026-08-21 11:33:15]}} [2026-08-21 11:33:15.101] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:33:14Z", "value" => "UNKNOWN"} [2026-08-21 11:33:15.139] [DEBUG] QUERY OK db=36.8ms idle=65.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "UNKNOWN", "sim_iccid2", 77771, ~N[2026-08-21 11:33:15], ~N[2026-08-21 11:33:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:15.139] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790400, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:15], updated_at: ~N[2026-08-21 11:33:15]}} [2026-08-21 11:33:15.139] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:33:14Z", "value" => "UNKNOWN"} [2026-08-21 11:33:15.180] [DEBUG] QUERY OK db=40.1ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "UNKNOWN", "sim_imsi2", 77771, ~N[2026-08-21 11:33:15], ~N[2026-08-21 11:33:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:15.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790401, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:15], updated_at: ~N[2026-08-21 11:33:15]}} [2026-08-21 11:33:15.180] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:33:14Z", "value" => "34"} [2026-08-21 11:33:15.220] [DEBUG] QUERY OK db=39.8ms queue=0.1ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "34", "data_usage_mb", 77771, ~N[2026-08-21 11:33:15], ~N[2026-08-21 11:33:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:15.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790402, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:15], updated_at: ~N[2026-08-21 11:33:15]}} [2026-08-21 11:33:15.221] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:33:14Z", "value" => "0"} [2026-08-21 11:33:15.234] [DEBUG] QUERY OK db=13.1ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "0", "mobile_data_mb", 77771, ~N[2026-08-21 11:33:15], ~N[2026-08-21 11:33:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:15.235] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790403, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:15], updated_at: ~N[2026-08-21 11:33:15]}} [2026-08-21 11:33:15.237] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:33:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:33:15.273] [DEBUG] QUERY OK db=35.3ms idle=16.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77771, ~N[2026-08-21 11:33:15], ~N[2026-08-21 11:33:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:15.275] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790404, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:33:14Z", message: nil, status_log_id: 77771, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:15], updated_at: ~N[2026-08-21 11:33:15]}} [2026-08-21 11:33:34.618] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:33:34.619] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T11:33:01Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T11:33:01Z","value":"64"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T11:33:01Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T11:33:01Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T11:33:01Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T11:33:01Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T11:33:01Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T11:33:01Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730002","uploadTime":"2026-08-21T11:33:01Z","vendor":"MoreFun"} [2026-08-21 11:33:34.619] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:33:01Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:33:01Z", "value" => "64"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:33:01Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:33:01Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:33:01Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:33:01Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:33:01Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:33:01Z", "value" => "3.8.7.3"}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:33:01Z", "vendor" => "MoreFun"} [2026-08-21 11:33:34.619] [INFO ] Extracted versions for 98251226730002: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:33:34.619] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:33:34.620] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (MoreFun MF919) - missing version [2026-08-21 11:33:34.627] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms queue=1.0ms idle=1684.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-08-21 11:33:34.629] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms queue=0.1ms idle=817.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 11:33:34.632] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms queue=1.7ms idle=2.6ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:33:34.638] [DEBUG] QUERY OK source="parameter_definitions" db=2.0ms queue=1.8ms idle=4.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-08-21 11:33:34.640] [DEBUG] QUERY OK source="pos_terminal" db=0.9ms idle=6.5ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730002"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:33:34.679] [DEBUG] QUERY OK source="pos_merchant" db=39.4ms queue=0.1ms idle=1.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:33:34.683] [DEBUG] QUERY OK db=0.9ms queue=2.0ms idle=1779.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 ["123451234512345"] [2026-08-21 11:33:34.683] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:33:34.685] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=44.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 ["81748887"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:33:34.685] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748887, using defaults [2026-08-21 11:33:34.688] [DEBUG] QUERY OK source="address" db=2.1ms idle=6.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` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:33:34.688] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730002, pos_merchant.merchantid="123451234512345" [2026-08-21 11:33:34.689] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730002 at priv/ota/98251226730002/params.zip [2026-08-21 11:33:34.738] [DEBUG] QUERY OK db=47.1ms queue=0.5ms idle=4.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "1d0e97aec90e3e967ca3ffe70c80ff6ab9b1777f17aa6269fd773879f36b5bff", 2563, 931, ~U[2026-08-21 11:33:34Z], "priv/ota/98251226730002/params.zip", 13, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:33:34], ~N[2026-08-21 11:33:34]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:33:34.738] [INFO ] AutoPushService: Created push log 49018 for MF919 params.zip [2026-08-21 11:33:34.738] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/params.zip", "requestId" => 2563, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:33:34.739] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-08-21 11:33:34.739] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730002 [2026-08-21 11:33:34.745] [DEBUG] QUERY OK source="config_file_versions" db=4.8ms queue=0.8ms idle=51.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-08-21 11:33:34.756] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730002 at priv/ota/98251226730002/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 11:33:34.811] [DEBUG] QUERY OK db=53.3ms queue=0.3ms idle=19.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "71422d0c70dd6badc3157187d73b20716fd9f06b8e38be036c2182cf456545b4", 1380, 17947, ~U[2026-08-21 11:33:34Z], "priv/ota/98251226730002/l3config.zip", 13, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:33:34], ~N[2026-08-21 11:33:34]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:33:34.812] [INFO ] AutoPushService: Created push log 49019 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:33:34.812] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730002/l3config.zip", "requestId" => 1380, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:33:34.812] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730002 on topic: /ota/pFppbioOCKlo5c8E/98251226730002/update [2026-08-21 11:33:34.820] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730002 [2026-08-21 11:33:34.828] [DEBUG] QUERY OK source="config_file_versions" db=6.9ms queue=0.1ms idle=9.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-08-21 11:33:34.828] [INFO ] KeysConfigService: Generating keys.json for 98251226730002 (MF919) [2026-08-21 11:33:34.832] [DEBUG] QUERY OK source="tms_terminals" db=3.9ms queue=0.1ms idle=10.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:33:34.832] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730002 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730002", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 11:33:34.837] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:33:34.837] [ERROR] KeysConfigService: Failed to generate keys for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:33:34.838] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730002: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:33:34.841] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms queue=0.4ms idle=10.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:33:34.842] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:33:34.842] [INFO ] AutoPushService: Auto-push completed for 98251226730002 [2026-08-21 11:33:34.845] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms idle=10.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:33:34.846] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:33:34.935] [DEBUG] QUERY OK source="tms_terminals" db=87.2ms idle=6.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:33:34], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:33:34.938] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=90.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-08-21 11:33:34.940] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:33:34.941] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.7ms 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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:33:34.942] [INFO ] VersionComplianceChecker: 98251226730002 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:33:35.026] [DEBUG] QUERY OK source="parameter_push_logs" db=83.6ms queue=0.1ms idle=1.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 [13, "application", ~N[2026-08-21 11:03:34]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:33:35.026] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730002 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:33:35.026] [INFO ] AutoPushService: Targeted application push for 98251226730002 (MoreFun MF919) [2026-08-21 11:33:35.028] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=84.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:33:35.040] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms queue=10.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-08-21 11:33:35.052] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730002: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:33:35.057] [DEBUG] QUERY OK source="tms_terminals" db=5.2ms queue=0.1ms idle=23.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:33:35.080] [DEBUG] QUERY OK source="tms_terminals" db=22.5ms queue=0.1ms idle=17.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:33:35], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:33:35.122] [DEBUG] QUERY OK db=39.7ms idle=25.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "organization_id", "2026-08-21T11:33:01Z", ~N[2026-08-21 11:33:35], ~N[2026-08-21 11:33:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:33:35.123] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77772, oid: "organization_id", upload_time: "2026-08-21T11:33:01Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:35], updated_at: ~N[2026-08-21 11:33:35]} [2026-08-21 11:33:35.123] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:33:01Z", "value" => "online"} [2026-08-21 11:33:35.186] [DEBUG] QUERY OK db=61.2ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T11:33:01Z", "online", "status", 77772, ~N[2026-08-21 11:33:35], ~N[2026-08-21 11:33:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:35.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790405, itemkey: "status", value: "online", timestamp: "2026-08-21T11:33:01Z", message: "Terminal status update", status_log_id: 77772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:35], updated_at: ~N[2026-08-21 11:33:35]}} [2026-08-21 11:33:35.187] [INFO ] Setting terminal 98251226730002 status to 'online' from status itemkey [2026-08-21 11:33:35.187] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:33:01Z", "value" => "64"} [2026-08-21 11:33:35.232] [DEBUG] QUERY OK db=39.6ms idle=69.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T11:33:01Z", "64", "battery", 77772, ~N[2026-08-21 11:33:35], ~N[2026-08-21 11:33:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:35.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790406, itemkey: "battery", value: "64", timestamp: "2026-08-21T11:33:01Z", message: "Battery level", status_log_id: 77772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:35], updated_at: ~N[2026-08-21 11:33:35]}} [2026-08-21 11:33:35.232] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:33:01Z", "value" => "online"} [2026-08-21 11:33:35.323] [DEBUG] QUERY OK db=90.7ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T11:33:01Z", "online", "network", 77772, ~N[2026-08-21 11:33:35], ~N[2026-08-21 11:33:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:35.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790407, itemkey: "network", value: "online", timestamp: "2026-08-21T11:33:01Z", message: "Network connectivity", status_log_id: 77772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:35], updated_at: ~N[2026-08-21 11:33:35]}} [2026-08-21 11:33:35.324] [INFO ] Setting terminal 98251226730002 status to 'online' from network itemkey [2026-08-21 11:33:35.324] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:33:01Z", "value" => "0"} [2026-08-21 11:33:35.368] [DEBUG] QUERY OK db=43.6ms idle=92.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T11:33:01Z", "0", "cpu", 77772, ~N[2026-08-21 11:33:35], ~N[2026-08-21 11:33:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:35.368] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790408, itemkey: "cpu", value: "0", timestamp: "2026-08-21T11:33:01Z", message: "CPU usage percentage", status_log_id: 77772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:35], updated_at: ~N[2026-08-21 11:33:35]}} [2026-08-21 11:33:35.368] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:33:01Z", "value" => "1.0.0"} [2026-08-21 11:33:35.426] [DEBUG] QUERY OK db=57.3ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T11:33:01Z", "1.0.0", "parameter_config", 77772, ~N[2026-08-21 11:33:35], ~N[2026-08-21 11:33:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:35.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790409, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T11:33:01Z", message: "Current parameters version", status_log_id: 77772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:35], updated_at: ~N[2026-08-21 11:33:35]}} [2026-08-21 11:33:35.427] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:33:01Z", "value" => "1.0.1"} [2026-08-21 11:33:35.482] [DEBUG] QUERY OK db=54.6ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T11:33:01Z", "1.0.1", "emv_config", 77772, ~N[2026-08-21 11:33:35], ~N[2026-08-21 11:33:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:35.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790410, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T11:33:01Z", message: "Current EMV config version", status_log_id: 77772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:35], updated_at: ~N[2026-08-21 11:33:35]}} [2026-08-21 11:33:35.482] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:33:01Z", "value" => ""} [2026-08-21 11:33:35.515] [DEBUG] QUERY OK db=32.1ms queue=0.6ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T11:33:01Z", "keys_config", 77772, ~N[2026-08-21 11:33:35], ~N[2026-08-21 11:33:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:35.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790411, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T11:33:01Z", message: "Current keys config version", status_log_id: 77772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:35], updated_at: ~N[2026-08-21 11:33:35]}} [2026-08-21 11:33:35.516] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:33:01Z", "value" => "3.8.7.3"} [2026-08-21 11:33:35.553] [DEBUG] QUERY OK db=37.5ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T11:33:01Z", "3.8.7.3", "application", 77772, ~N[2026-08-21 11:33:35], ~N[2026-08-21 11:33:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:35.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790412, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T11:33:01Z", message: "Current application version", status_log_id: 77772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:35], updated_at: ~N[2026-08-21 11:33:35]}} [2026-08-21 11:33:35.555] [WARN ] Unexpected async result [2026-08-21 11:33:35.555] [WARN ] Unexpected async result [2026-08-21 11:33:40.862] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 11:33:40.862] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T02:43:06Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T02:43:06Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T02:43:06Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T02:43:06Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T02:43:06Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T02:43:06Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T02:43:06Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T02:43:06Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T02:43:06Z","vendor":"MoreFun"} [2026-08-21 11:33:40.862] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:43:06Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:43:06Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:43:06Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:43:06Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:43:06Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:43:06Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:43:06Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:43:06Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T02:43:06Z", "vendor" => "MoreFun"} [2026-08-21 11:33:40.862] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:33:40.862] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 11:33:40.863] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 11:33:40.864] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=918.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-08-21 11:33:40.865] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=6.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 11:33:40.868] [DEBUG] QUERY OK source="parameter_template_values" db=2.5ms idle=1.0ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:33:40.880] [DEBUG] QUERY OK source="parameter_definitions" db=5.5ms queue=5.5ms idle=3.2ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:33:40.882] [DEBUG] QUERY OK source="pos_terminal" db=1.5ms idle=12.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:33:40.922] [DEBUG] QUERY OK source="pos_merchant" db=40.2ms idle=2.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:33:40.930] [DEBUG] QUERY OK db=1.0ms queue=6.6ms idle=1005.9ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["123451234512345"] [2026-08-21 11:33:40.930] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:33:40.937] [DEBUG] QUERY OK source="pos_terminal_data" db=3.3ms queue=2.2ms idle=49.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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:33:40.937] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 11:33:40.940] [DEBUG] QUERY OK source="address" db=2.3ms idle=15.3ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:33:40.940] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 11:33:40.951] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 11:33:40.999] [DEBUG] QUERY OK db=44.4ms idle=17.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "bdbd7c4bd8f1b5ad38fe08f8643d1a79ee23371406a440a6f255c158409d5a39", 5122, 932, ~U[2026-08-21 11:33:40Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:33:40], ~N[2026-08-21 11:33:40]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:33:41.001] [INFO ] AutoPushService: Created push log 49020 for MF919 params.zip [2026-08-21 11:33:41.001] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 5122, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:33:41.001] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:33:41.001] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 11:33:41.006] [DEBUG] QUERY OK source="config_file_versions" db=3.8ms queue=0.1ms idle=61.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-08-21 11:33:41.013] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 11:33:41.056] [DEBUG] QUERY OK db=39.3ms queue=0.3ms idle=16.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "587403c4174691178f3dbe3d78487fc887a7759fe6985929326ffb7a4250cb1a", 1444, 17947, ~U[2026-08-21 11:33:41Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:33:41], ~N[2026-08-21 11:33:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:33:41.058] [INFO ] AutoPushService: Created push log 49021 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:33:41.058] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 1444, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:33:41.058] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:33:41.058] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 11:33:41.066] [DEBUG] QUERY OK source="config_file_versions" db=6.7ms queue=0.1ms idle=53.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-08-21 11:33:41.066] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 11:33:41.068] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=11.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:33:41.074] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 11:33:41.082] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:33:41.082] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:33:41.083] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:33:41.094] [DEBUG] QUERY OK source="config_file_versions" db=3.3ms idle=27.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:33:41.096] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:33:41.096] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 11:33:41.102] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:33:41.102] [INFO ] Terminal updated: 98250623730001 [2026-08-21 11:33:41.147] [DEBUG] QUERY OK source="tms_terminals" db=33.5ms queue=0.1ms idle=21.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:33:41], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:33:41.151] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=48.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-08-21 11:33:41.154] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms queue=0.5ms idle=4.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:33:41.159] [DEBUG] QUERY OK source="config_file_versions" db=3.1ms idle=5.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:33:41.160] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:33:41.191] [DEBUG] QUERY OK source="parameter_push_logs" db=27.8ms queue=2.3ms idle=6.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 [19, "application", ~N[2026-08-21 11:03:41]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:33:41.191] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:33:41.191] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 11:33:41.192] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=31.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:33:41.197] [DEBUG] QUERY OK source="config_file_versions" db=5.2ms idle=1.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:33:41.202] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:33:41.206] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=10.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 11:33:41.259] [DEBUG] QUERY OK source="tms_terminals" db=42.8ms idle=18.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:33:41], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:33:41.301] [DEBUG] QUERY OK db=39.0ms idle=55.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T02:43:06Z", ~N[2026-08-21 11:33:41], ~N[2026-08-21 11:33:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:33:41.301] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77773, oid: "organization_id", upload_time: "2026-08-21T02:43:06Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:41], updated_at: ~N[2026-08-21 11:33:41]} [2026-08-21 11:33:41.302] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:43:06Z", "value" => "online"} [2026-08-21 11:33:41.370] [DEBUG] QUERY OK db=67.1ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T02:43:06Z", "online", "status", 77773, ~N[2026-08-21 11:33:41], ~N[2026-08-21 11:33:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:41.370] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790413, itemkey: "status", value: "online", timestamp: "2026-08-21T02:43:06Z", message: "Terminal status update", status_log_id: 77773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:41], updated_at: ~N[2026-08-21 11:33:41]}} [2026-08-21 11:33:41.370] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 11:33:41.388] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:43:06Z", "value" => "51"} [2026-08-21 11:33:41.419] [DEBUG] QUERY OK db=29.7ms idle=88.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T02:43:06Z", "51", "battery", 77773, ~N[2026-08-21 11:33:41], ~N[2026-08-21 11:33:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:41.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790414, itemkey: "battery", value: "51", timestamp: "2026-08-21T02:43:06Z", message: "Battery level", status_log_id: 77773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:41], updated_at: ~N[2026-08-21 11:33:41]}} [2026-08-21 11:33:41.419] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:43:06Z", "value" => "online"} [2026-08-21 11:33:41.480] [DEBUG] QUERY OK db=56.1ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T02:43:06Z", "online", "network", 77773, ~N[2026-08-21 11:33:41], ~N[2026-08-21 11:33:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:41.481] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790415, itemkey: "network", value: "online", timestamp: "2026-08-21T02:43:06Z", message: "Network connectivity", status_log_id: 77773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:41], updated_at: ~N[2026-08-21 11:33:41]}} [2026-08-21 11:33:41.481] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 11:33:41.481] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:43:06Z", "value" => "0"} [2026-08-21 11:33:41.508] [DEBUG] QUERY OK db=26.8ms idle=62.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T02:43:06Z", "0", "cpu", 77773, ~N[2026-08-21 11:33:41], ~N[2026-08-21 11:33:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:41.508] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790416, itemkey: "cpu", value: "0", timestamp: "2026-08-21T02:43:06Z", message: "CPU usage percentage", status_log_id: 77773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:41], updated_at: ~N[2026-08-21 11:33:41]}} [2026-08-21 11:33:41.509] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:43:06Z", "value" => "1.0.0"} [2026-08-21 11:33:41.549] [DEBUG] QUERY OK db=40.2ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T02:43:06Z", "1.0.0", "parameter_config", 77773, ~N[2026-08-21 11:33:41], ~N[2026-08-21 11:33:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:41.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790417, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T02:43:06Z", message: "Current parameters version", status_log_id: 77773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:41], updated_at: ~N[2026-08-21 11:33:41]}} [2026-08-21 11:33:41.550] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:43:06Z", "value" => "1.0.1"} [2026-08-21 11:33:41.598] [DEBUG] QUERY OK db=43.9ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T02:43:06Z", "1.0.1", "emv_config", 77773, ~N[2026-08-21 11:33:41], ~N[2026-08-21 11:33:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:41.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790418, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T02:43:06Z", message: "Current EMV config version", status_log_id: 77773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:41], updated_at: ~N[2026-08-21 11:33:41]}} [2026-08-21 11:33:41.598] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:43:06Z", "value" => ""} [2026-08-21 11:33:41.650] [DEBUG] QUERY OK db=51.7ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T02:43:06Z", "keys_config", 77773, ~N[2026-08-21 11:33:41], ~N[2026-08-21 11:33:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:41.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790419, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T02:43:06Z", message: "Current keys config version", status_log_id: 77773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:41], updated_at: ~N[2026-08-21 11:33:41]}} [2026-08-21 11:33:41.651] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:43:06Z", "value" => "3.8.7.3"} [2026-08-21 11:33:41.863] [DEBUG] QUERY OK db=212.2ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T02:43:06Z", "3.8.7.3", "application", 77773, ~N[2026-08-21 11:33:41], ~N[2026-08-21 11:33:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:41.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790420, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T02:43:06Z", message: "Current application version", status_log_id: 77773, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:41], updated_at: ~N[2026-08-21 11:33:41]}} [2026-08-21 11:33:41.864] [WARN ] Unexpected async result [2026-08-21 11:33:41.864] [WARN ] Unexpected async result [2026-08-21 11:33:44.786] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:33:44.786] [INFO ] Incoming JSON payload: {"oid":"ab7a5067-5b29-4832-8164-a61a8995fedf","sn":"98251226730001","uploadTime":"2026-08-21T11:33:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"ram_free_mb","value":"919","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:33:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:33:44.794] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ab7a5067-5b29-4832-8164-a61a8995fedf", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:33:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:33:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:33:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:33:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:33:44Z", "value" => "919"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:33:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:33:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:33:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:33:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:33:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:33:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:33:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:33:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:33:44Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:33:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:33:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:33:44Z", "vendor" => "morefun"} [2026-08-21 11:33:44.794] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:33:44.794] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:33:44.794] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:33:44.811] [DEBUG] QUERY OK source="parameter_templates" db=15.8ms queue=0.1ms idle=1850.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-08-21 11:33:44.824] [DEBUG] QUERY OK source="parameter_templates" db=6.2ms queue=6.8ms idle=938.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-08-21 11:33:44.824] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:33:44.830] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=16.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 11:33:44.830] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:33:44.872] [DEBUG] QUERY OK source="tms_terminals" db=41.4ms idle=6.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:33:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:33:44.872] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:33:44.875] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=43.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:33:44.935] [DEBUG] QUERY OK source="tms_terminals" db=57.0ms queue=0.1ms idle=6.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:33:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:33:44.972] [DEBUG] QUERY OK db=36.1ms idle=48.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ab7a5067-5b29-4832-8164-a61a8995fedf", "2026-08-21T11:33:44Z", ~N[2026-08-21 11:33:44], ~N[2026-08-21 11:33:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:33:44.972] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77775, oid: "ab7a5067-5b29-4832-8164-a61a8995fedf", upload_time: "2026-08-21T11:33:44Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:44], updated_at: ~N[2026-08-21 11:33:44]} [2026-08-21 11:33:44.972] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:33:44Z", "value" => "morefun"} [2026-08-21 11:33:45.030] [DEBUG] QUERY OK db=53.9ms queue=1.8ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "morefun", "vendor", 77775, ~N[2026-08-21 11:33:44], ~N[2026-08-21 11:33:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790429, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:44], updated_at: ~N[2026-08-21 11:33:44]}} [2026-08-21 11:33:45.030] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:33:44Z", "value" => "kiosk_launcher"} [2026-08-21 11:33:45.069] [DEBUG] QUERY OK db=38.3ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "kiosk_launcher", "model", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790431, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:33:45.069] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:33:44Z", "value" => "1.0"} [2026-08-21 11:33:45.146] [DEBUG] QUERY OK db=70.6ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "1.0", "app_version", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.146] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790433, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:33:45.146] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:33:44Z", "value" => "13"} [2026-08-21 11:33:45.205] [DEBUG] QUERY OK db=57.9ms idle=77.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "13", "android_version", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790435, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:33:45.205] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:33:44Z", "value" => "919"} [2026-08-21 11:33:45.287] [DEBUG] QUERY OK db=81.2ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "919", "ram_free_mb", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790437, itemkey: "ram_free_mb", value: "919", timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:33:45.290] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:33:44Z", "value" => "WIFI"} [2026-08-21 11:33:45.335] [DEBUG] QUERY OK db=44.3ms idle=85.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "WIFI", "network_type", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.335] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790439, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:33:45.336] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:33:44Z", "value" => "true"} [2026-08-21 11:33:45.387] [DEBUG] QUERY OK db=50.1ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "true", "kiosk_active", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790441, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:33:45.387] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:33:44Z", "value" => ""} [2026-08-21 11:33:45.433] [DEBUG] QUERY OK db=42.2ms idle=56.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:33:44Z", "sim_operator", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.433] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790443, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:33:45.434] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:33:44Z", "value" => "UNKNOWN"} [2026-08-21 11:33:45.505] [DEBUG] QUERY OK db=66.3ms queue=0.3ms idle=51.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "UNKNOWN", "sim_number", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790445, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:33:45.510] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:33:44Z", "value" => "UNKNOWN"} [2026-08-21 11:33:45.556] [DEBUG] QUERY OK db=43.6ms queue=1.3ms idle=77.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "UNKNOWN", "sim_iccid", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790447, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:33:45.559] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:33:44Z", "value" => "UNKNOWN"} [2026-08-21 11:33:45.617] [DEBUG] QUERY OK db=57.4ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "UNKNOWN", "sim_imsi", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790449, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:33:45.617] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:33:44Z", "value" => "UNKNOWN"} [2026-08-21 11:33:45.670] [DEBUG] QUERY OK db=52.0ms idle=61.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "UNKNOWN", "sim_iccid2", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790451, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:33:45.670] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:33:44Z", "value" => "UNKNOWN"} [2026-08-21 11:33:45.743] [DEBUG] QUERY OK db=72.4ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "UNKNOWN", "sim_imsi2", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790453, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:33:45.743] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:33:44Z", "value" => "34"} [2026-08-21 11:33:45.828] [DEBUG] QUERY OK db=83.9ms idle=74.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "34", "data_usage_mb", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790455, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:33:45.835] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:33:44Z", "value" => "0"} [2026-08-21 11:33:45.969] [DEBUG] QUERY OK db=125.4ms idle=100.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "0", "mobile_data_mb", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:45.969] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790457, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:33:45.989] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:33:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:33:46.060] [DEBUG] QUERY OK db=66.9ms idle=89.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77775, ~N[2026-08-21 11:33:45], ~N[2026-08-21 11:33:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:33:46.062] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790460, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:33:44Z", message: nil, status_log_id: 77775, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:33:45], updated_at: ~N[2026-08-21 11:33:45]}} [2026-08-21 11:34:14.892] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:34:14.892] [INFO ] Incoming JSON payload: {"oid":"b4d0062a-3517-4b29-91c4-c70bac808984","sn":"98251226730001","uploadTime":"2026-08-21T11:34:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"ram_free_mb","value":"923","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:34:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:34:14.895] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b4d0062a-3517-4b29-91c4-c70bac808984", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:34:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:34:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:34:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:34:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:34:14Z", "value" => "923"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:34:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:34:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:34:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:34:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:34:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:34:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:34:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:34:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:34:14Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:34:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:34:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:34:14Z", "vendor" => "morefun"} [2026-08-21 11:34:14.896] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:34:14.896] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:34:14.896] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:34:14.899] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=942.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-08-21 11:34:14.906] [DEBUG] QUERY OK source="parameter_templates" db=4.8ms idle=829.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-08-21 11:34:14.906] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:34:14.908] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=8.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:34:14.908] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:34:15.002] [DEBUG] QUERY OK source="tms_terminals" db=93.1ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:34:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:34:15.002] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:34:15.006] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=96.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:34:15.071] [DEBUG] QUERY OK source="tms_terminals" db=64.8ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:34:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:34:15.144] [DEBUG] QUERY OK db=68.0ms idle=5.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b4d0062a-3517-4b29-91c4-c70bac808984", "2026-08-21T11:34:14Z", ~N[2026-08-21 11:34:15], ~N[2026-08-21 11:34:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:34:15.144] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77778, oid: "b4d0062a-3517-4b29-91c4-c70bac808984", upload_time: "2026-08-21T11:34:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:15], updated_at: ~N[2026-08-21 11:34:15]} [2026-08-21 11:34:15.144] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:34:14Z", "value" => "morefun"} [2026-08-21 11:34:15.254] [DEBUG] QUERY OK db=109.5ms idle=62.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "morefun", "vendor", 77778, ~N[2026-08-21 11:34:15], ~N[2026-08-21 11:34:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:15.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790462, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:15], updated_at: ~N[2026-08-21 11:34:15]}} [2026-08-21 11:34:15.255] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:34:14Z", "value" => "kiosk_launcher"} [2026-08-21 11:34:15.349] [DEBUG] QUERY OK db=93.6ms idle=111.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "kiosk_launcher", "model", 77778, ~N[2026-08-21 11:34:15], ~N[2026-08-21 11:34:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:15.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790464, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:15], updated_at: ~N[2026-08-21 11:34:15]}} [2026-08-21 11:34:15.349] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:34:14Z", "value" => "1.0"} [2026-08-21 11:34:15.493] [DEBUG] QUERY OK db=143.1ms idle=95.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "1.0", "app_version", 77778, ~N[2026-08-21 11:34:15], ~N[2026-08-21 11:34:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:15.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790466, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:15], updated_at: ~N[2026-08-21 11:34:15]}} [2026-08-21 11:34:15.493] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:34:14Z", "value" => "13"} [2026-08-21 11:34:15.589] [DEBUG] QUERY OK db=95.0ms idle=144.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "13", "android_version", 77778, ~N[2026-08-21 11:34:15], ~N[2026-08-21 11:34:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:15.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790468, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:15], updated_at: ~N[2026-08-21 11:34:15]}} [2026-08-21 11:34:15.589] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:34:14Z", "value" => "923"} [2026-08-21 11:34:15.640] [DEBUG] QUERY OK db=51.1ms idle=96.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "923", "ram_free_mb", 77778, ~N[2026-08-21 11:34:15], ~N[2026-08-21 11:34:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:15.642] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790470, itemkey: "ram_free_mb", value: "923", timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:15], updated_at: ~N[2026-08-21 11:34:15]}} [2026-08-21 11:34:15.642] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:34:14Z", "value" => "WIFI"} [2026-08-21 11:34:15.700] [DEBUG] QUERY OK db=57.7ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "WIFI", "network_type", 77778, ~N[2026-08-21 11:34:15], ~N[2026-08-21 11:34:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:15.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790472, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:15], updated_at: ~N[2026-08-21 11:34:15]}} [2026-08-21 11:34:15.708] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:34:14Z", "value" => "true"} [2026-08-21 11:34:15.761] [DEBUG] QUERY OK db=52.4ms idle=67.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "true", "kiosk_active", 77778, ~N[2026-08-21 11:34:15], ~N[2026-08-21 11:34:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:15.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790474, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:15], updated_at: ~N[2026-08-21 11:34:15]}} [2026-08-21 11:34:15.763] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:34:14Z", "value" => ""} [2026-08-21 11:34:15.815] [DEBUG] QUERY OK db=46.9ms queue=5.2ms idle=62.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:34:14Z", "sim_operator", 77778, ~N[2026-08-21 11:34:15], ~N[2026-08-21 11:34:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:15.815] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790476, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:15], updated_at: ~N[2026-08-21 11:34:15]}} [2026-08-21 11:34:15.816] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:34:14Z", "value" => "UNKNOWN"} [2026-08-21 11:34:15.892] [DEBUG] QUERY OK db=75.9ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "UNKNOWN", "sim_number", 77778, ~N[2026-08-21 11:34:15], ~N[2026-08-21 11:34:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:15.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790478, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:15], updated_at: ~N[2026-08-21 11:34:15]}} [2026-08-21 11:34:15.892] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:34:14Z", "value" => "UNKNOWN"} [2026-08-21 11:34:15.954] [DEBUG] QUERY OK db=60.8ms queue=0.7ms idle=77.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "UNKNOWN", "sim_iccid", 77778, ~N[2026-08-21 11:34:15], ~N[2026-08-21 11:34:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:15.955] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790480, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:15], updated_at: ~N[2026-08-21 11:34:15]}} [2026-08-21 11:34:15.955] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:34:14Z", "value" => "UNKNOWN"} [2026-08-21 11:34:15.997] [DEBUG] QUERY OK db=41.9ms idle=63.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "UNKNOWN", "sim_imsi", 77778, ~N[2026-08-21 11:34:15], ~N[2026-08-21 11:34:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:15.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790482, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:15], updated_at: ~N[2026-08-21 11:34:15]}} [2026-08-21 11:34:15.997] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:34:14Z", "value" => "UNKNOWN"} [2026-08-21 11:34:16.058] [DEBUG] QUERY OK db=60.5ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "UNKNOWN", "sim_iccid2", 77778, ~N[2026-08-21 11:34:15], ~N[2026-08-21 11:34:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:16.059] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790484, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:15], updated_at: ~N[2026-08-21 11:34:15]}} [2026-08-21 11:34:16.059] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:34:14Z", "value" => "UNKNOWN"} [2026-08-21 11:34:16.137] [DEBUG] QUERY OK db=76.8ms idle=62.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "UNKNOWN", "sim_imsi2", 77778, ~N[2026-08-21 11:34:16], ~N[2026-08-21 11:34:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:16.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790486, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:16], updated_at: ~N[2026-08-21 11:34:16]}} [2026-08-21 11:34:16.137] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:34:14Z", "value" => "34"} [2026-08-21 11:34:16.180] [DEBUG] QUERY OK db=42.6ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "34", "data_usage_mb", 77778, ~N[2026-08-21 11:34:16], ~N[2026-08-21 11:34:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:16.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790488, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:16], updated_at: ~N[2026-08-21 11:34:16]}} [2026-08-21 11:34:16.182] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:34:14Z", "value" => "0"} [2026-08-21 11:34:16.223] [DEBUG] QUERY OK db=39.7ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "0", "mobile_data_mb", 77778, ~N[2026-08-21 11:34:16], ~N[2026-08-21 11:34:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:16.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790490, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:16], updated_at: ~N[2026-08-21 11:34:16]}} [2026-08-21 11:34:16.224] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:34:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:34:16.284] [DEBUG] QUERY OK db=57.0ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77778, ~N[2026-08-21 11:34:16], ~N[2026-08-21 11:34:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:16.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790492, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:34:14Z", message: nil, status_log_id: 77778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:16], updated_at: ~N[2026-08-21 11:34:16]}} [2026-08-21 11:34:16.285] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:34:16.285] [INFO ] Incoming JSON payload: {"oid":"82a7b8cd-afdc-4b88-a3f1-a11fcbed9744","sn":"98251226730002","uploadTime":"2026-08-21T11:33:41Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"ram_free_mb","value":"998","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:33:41Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:34:16.288] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "82a7b8cd-afdc-4b88-a3f1-a11fcbed9744", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:33:41Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:33:41Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:33:41Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:33:41Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:33:41Z", "value" => "998"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:33:41Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:33:41Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:33:41Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:33:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:33:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:33:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:33:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:33:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:33:41Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:33:41Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:33:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:33:41Z", "vendor" => "morefun"} [2026-08-21 11:34:16.288] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:34:16.288] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:34:16.288] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:34:16.289] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=64.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-08-21 11:34:16.289] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=5.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-08-21 11:34:16.289] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:34:16.290] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:34:16.367] [DEBUG] QUERY OK source="tms_terminals" db=33.1ms queue=42.2ms idle=2.0ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 11:34:16], 13] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 11:34:16.367] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:34:16.367] [INFO ] Event published: terminal_updated [2026-08-21 11:34:16.368] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 11:34:16.368] [INFO ] Processing terminal_updated event for terminal 13 [2026-08-21 11:34:16.368] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 11:34:16.369] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.7ms idle=77.6ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 11:34:16], 13] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 11:34:16.369] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=0.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [13] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 11:34:16.370] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 11:34:16.370] [INFO ] Applied 0 rules to terminal 98251226730002 [2026-08-21 11:34:16.437] [DEBUG] QUERY OK source="tms_terminals" db=26.6ms queue=41.8ms idle=2.1ms 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-08-21 11:34:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:34:16.438] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:34:16.442] [DEBUG] QUERY OK source="tms_terminals" db=4.0ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:34:16.510] [DEBUG] QUERY OK source="tms_terminals" db=24.8ms queue=41.8ms idle=6.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:34:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:34:16.546] [DEBUG] QUERY OK db=34.9ms idle=69.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "82a7b8cd-afdc-4b88-a3f1-a11fcbed9744", "2026-08-21T11:33:41Z", ~N[2026-08-21 11:34:16], ~N[2026-08-21 11:34:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:34:16.546] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77779, oid: "82a7b8cd-afdc-4b88-a3f1-a11fcbed9744", upload_time: "2026-08-21T11:33:41Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:16], updated_at: ~N[2026-08-21 11:34:16]} [2026-08-21 11:34:16.548] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:33:41Z", "value" => "morefun"} [2026-08-21 11:34:16.617] [DEBUG] QUERY OK db=64.1ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "morefun", "vendor", 77779, ~N[2026-08-21 11:34:16], ~N[2026-08-21 11:34:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:16.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790493, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:16], updated_at: ~N[2026-08-21 11:34:16]}} [2026-08-21 11:34:16.617] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:33:41Z", "value" => "kiosk_launcher"} [2026-08-21 11:34:16.661] [DEBUG] QUERY OK db=43.5ms idle=72.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "kiosk_launcher", "model", 77779, ~N[2026-08-21 11:34:16], ~N[2026-08-21 11:34:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:16.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790495, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:16], updated_at: ~N[2026-08-21 11:34:16]}} [2026-08-21 11:34:16.662] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:33:41Z", "value" => "1.0"} [2026-08-21 11:34:16.712] [DEBUG] QUERY OK db=49.8ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "1.0", "app_version", 77779, ~N[2026-08-21 11:34:16], ~N[2026-08-21 11:34:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:16.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790497, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:16], updated_at: ~N[2026-08-21 11:34:16]}} [2026-08-21 11:34:16.718] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:33:41Z", "value" => "13"} [2026-08-21 11:34:16.783] [DEBUG] QUERY OK db=63.7ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "13", "android_version", 77779, ~N[2026-08-21 11:34:16], ~N[2026-08-21 11:34:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:16.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790499, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:16], updated_at: ~N[2026-08-21 11:34:16]}} [2026-08-21 11:34:16.783] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:33:41Z", "value" => "998"} [2026-08-21 11:34:16.887] [DEBUG] QUERY OK db=102.0ms queue=1.2ms idle=71.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "998", "ram_free_mb", 77779, ~N[2026-08-21 11:34:16], ~N[2026-08-21 11:34:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:16.887] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790501, itemkey: "ram_free_mb", value: "998", timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:16], updated_at: ~N[2026-08-21 11:34:16]}} [2026-08-21 11:34:16.887] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:33:41Z", "value" => "WIFI"} [2026-08-21 11:34:16.975] [DEBUG] QUERY OK db=71.6ms idle=120.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "WIFI", "network_type", 77779, ~N[2026-08-21 11:34:16], ~N[2026-08-21 11:34:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:16.975] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790503, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:16], updated_at: ~N[2026-08-21 11:34:16]}} [2026-08-21 11:34:16.975] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:33:41Z", "value" => "true"} [2026-08-21 11:34:17.049] [DEBUG] QUERY OK db=72.7ms idle=89.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "true", "kiosk_active", 77779, ~N[2026-08-21 11:34:16], ~N[2026-08-21 11:34:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:17.049] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790505, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:16], updated_at: ~N[2026-08-21 11:34:16]}} [2026-08-21 11:34:17.049] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:33:41Z", "value" => ""} [2026-08-21 11:34:17.093] [DEBUG] QUERY OK db=43.2ms idle=74.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:33:41Z", "sim_operator", 77779, ~N[2026-08-21 11:34:17], ~N[2026-08-21 11:34:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:17.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790507, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:17], updated_at: ~N[2026-08-21 11:34:17]}} [2026-08-21 11:34:17.093] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:33:41Z", "value" => "UNKNOWN"} [2026-08-21 11:34:17.143] [DEBUG] QUERY OK db=50.2ms queue=0.1ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "UNKNOWN", "sim_number", 77779, ~N[2026-08-21 11:34:17], ~N[2026-08-21 11:34:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:17.144] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790509, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:17], updated_at: ~N[2026-08-21 11:34:17]}} [2026-08-21 11:34:17.144] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:33:41Z", "value" => "UNKNOWN"} [2026-08-21 11:34:17.202] [DEBUG] QUERY OK db=57.1ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "UNKNOWN", "sim_iccid", 77779, ~N[2026-08-21 11:34:17], ~N[2026-08-21 11:34:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:17.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790511, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:17], updated_at: ~N[2026-08-21 11:34:17]}} [2026-08-21 11:34:17.205] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:33:41Z", "value" => "UNKNOWN"} [2026-08-21 11:34:17.261] [DEBUG] QUERY OK db=56.4ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "UNKNOWN", "sim_imsi", 77779, ~N[2026-08-21 11:34:17], ~N[2026-08-21 11:34:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:17.262] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790513, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:17], updated_at: ~N[2026-08-21 11:34:17]}} [2026-08-21 11:34:17.263] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:33:41Z", "value" => "UNKNOWN"} [2026-08-21 11:34:17.321] [DEBUG] QUERY OK db=56.2ms queue=1.0ms idle=62.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "UNKNOWN", "sim_iccid2", 77779, ~N[2026-08-21 11:34:17], ~N[2026-08-21 11:34:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:17.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790515, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:17], updated_at: ~N[2026-08-21 11:34:17]}} [2026-08-21 11:34:17.323] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:33:41Z", "value" => "UNKNOWN"} [2026-08-21 11:34:17.401] [DEBUG] QUERY OK db=78.0ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "UNKNOWN", "sim_imsi2", 77779, ~N[2026-08-21 11:34:17], ~N[2026-08-21 11:34:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:17.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790517, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:17], updated_at: ~N[2026-08-21 11:34:17]}} [2026-08-21 11:34:17.402] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:33:41Z", "value" => "1"} [2026-08-21 11:34:17.445] [DEBUG] QUERY OK db=43.3ms idle=81.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "1", "data_usage_mb", 77779, ~N[2026-08-21 11:34:17], ~N[2026-08-21 11:34:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:17.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790519, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:17], updated_at: ~N[2026-08-21 11:34:17]}} [2026-08-21 11:34:17.450] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:33:41Z", "value" => "0"} [2026-08-21 11:34:17.519] [DEBUG] QUERY OK db=68.2ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "0", "mobile_data_mb", 77779, ~N[2026-08-21 11:34:17], ~N[2026-08-21 11:34:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:17.519] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790521, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:17], updated_at: ~N[2026-08-21 11:34:17]}} [2026-08-21 11:34:17.528] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:33:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:34:17.625] [DEBUG] QUERY OK db=90.3ms queue=0.1ms idle=88.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:33:41Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77779, ~N[2026-08-21 11:34:17], ~N[2026-08-21 11:34:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:17.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790523, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:33:41Z", message: nil, status_log_id: 77779, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:17], updated_at: ~N[2026-08-21 11:34:17]}} [2026-08-21 11:34:45.009] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:34:45.009] [INFO ] Incoming JSON payload: {"oid":"0ce9fab8-2a91-4153-95c6-29bbcae16305","sn":"98251226730001","uploadTime":"2026-08-21T11:34:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:34:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:34:45.019] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0ce9fab8-2a91-4153-95c6-29bbcae16305", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:34:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:34:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:34:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:34:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:34:44Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:34:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:34:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:34:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:34:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:34:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:34:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:34:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:34:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:34:44Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:34:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:34:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:34:44Z", "vendor" => "morefun"} [2026-08-21 11:34:45.021] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:34:45.028] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:34:45.031] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:34:45.035] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms idle=1073.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-08-21 11:34:45.037] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=1.3ms idle=811.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-08-21 11:34:45.037] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:34:45.043] [DEBUG] QUERY OK source="tms_terminals" db=3.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-08-21 11:34:45.044] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:34:45.052] [DEBUG] QUERY OK source="tms_terminals" db=7.7ms idle=6.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:34:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:34:45.052] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:34:45.057] [DEBUG] QUERY OK source="tms_terminals" db=5.0ms idle=8.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:34:45.091] [DEBUG] QUERY OK source="tms_terminals" db=31.3ms idle=8.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:34:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:34:45.160] [DEBUG] QUERY OK db=56.2ms idle=45.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0ce9fab8-2a91-4153-95c6-29bbcae16305", "2026-08-21T11:34:44Z", ~N[2026-08-21 11:34:45], ~N[2026-08-21 11:34:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:34:45.161] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77782, oid: "0ce9fab8-2a91-4153-95c6-29bbcae16305", upload_time: "2026-08-21T11:34:44Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:45], updated_at: ~N[2026-08-21 11:34:45]} [2026-08-21 11:34:45.166] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:34:44Z", "value" => "morefun"} [2026-08-21 11:34:45.215] [DEBUG] QUERY OK db=46.7ms queue=2.2ms idle=75.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "morefun", "vendor", 77782, ~N[2026-08-21 11:34:45], ~N[2026-08-21 11:34:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:45.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790526, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:45], updated_at: ~N[2026-08-21 11:34:45]}} [2026-08-21 11:34:45.220] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:34:44Z", "value" => "kiosk_launcher"} [2026-08-21 11:34:45.268] [DEBUG] QUERY OK db=47.1ms queue=0.1ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "kiosk_launcher", "model", 77782, ~N[2026-08-21 11:34:45], ~N[2026-08-21 11:34:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:45.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790528, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:45], updated_at: ~N[2026-08-21 11:34:45]}} [2026-08-21 11:34:45.270] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:34:44Z", "value" => "1.0"} [2026-08-21 11:34:45.352] [DEBUG] QUERY OK db=82.0ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "1.0", "app_version", 77782, ~N[2026-08-21 11:34:45], ~N[2026-08-21 11:34:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:45.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790530, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:45], updated_at: ~N[2026-08-21 11:34:45]}} [2026-08-21 11:34:45.353] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:34:44Z", "value" => "13"} [2026-08-21 11:34:45.400] [DEBUG] QUERY OK db=40.6ms queue=6.5ms idle=85.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "13", "android_version", 77782, ~N[2026-08-21 11:34:45], ~N[2026-08-21 11:34:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:45.400] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790532, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:45], updated_at: ~N[2026-08-21 11:34:45]}} [2026-08-21 11:34:45.401] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:34:44Z", "value" => "921"} [2026-08-21 11:34:45.446] [DEBUG] QUERY OK db=44.9ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "921", "ram_free_mb", 77782, ~N[2026-08-21 11:34:45], ~N[2026-08-21 11:34:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:45.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790534, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:45], updated_at: ~N[2026-08-21 11:34:45]}} [2026-08-21 11:34:45.447] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:34:44Z", "value" => "WIFI"} [2026-08-21 11:34:45.497] [DEBUG] QUERY OK db=48.4ms idle=48.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "WIFI", "network_type", 77782, ~N[2026-08-21 11:34:45], ~N[2026-08-21 11:34:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:45.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790536, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:45], updated_at: ~N[2026-08-21 11:34:45]}} [2026-08-21 11:34:45.504] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:34:44Z", "value" => "true"} [2026-08-21 11:34:45.568] [DEBUG] QUERY OK db=63.7ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "true", "kiosk_active", 77782, ~N[2026-08-21 11:34:45], ~N[2026-08-21 11:34:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:45.569] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790538, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:45], updated_at: ~N[2026-08-21 11:34:45]}} [2026-08-21 11:34:45.569] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:34:44Z", "value" => ""} [2026-08-21 11:34:45.639] [DEBUG] QUERY OK db=69.6ms idle=72.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:34:44Z", "sim_operator", 77782, ~N[2026-08-21 11:34:45], ~N[2026-08-21 11:34:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:45.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790540, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:45], updated_at: ~N[2026-08-21 11:34:45]}} [2026-08-21 11:34:45.642] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:34:44Z", "value" => "UNKNOWN"} [2026-08-21 11:34:45.677] [DEBUG] QUERY OK db=34.7ms decode=0.2ms idle=74.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "UNKNOWN", "sim_number", 77782, ~N[2026-08-21 11:34:45], ~N[2026-08-21 11:34:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:45.678] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790542, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:45], updated_at: ~N[2026-08-21 11:34:45]}} [2026-08-21 11:34:45.680] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:34:44Z", "value" => "UNKNOWN"} [2026-08-21 11:34:45.753] [DEBUG] QUERY OK db=71.9ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "UNKNOWN", "sim_iccid", 77782, ~N[2026-08-21 11:34:45], ~N[2026-08-21 11:34:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:45.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790544, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:45], updated_at: ~N[2026-08-21 11:34:45]}} [2026-08-21 11:34:45.757] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:34:44Z", "value" => "UNKNOWN"} [2026-08-21 11:34:45.838] [DEBUG] QUERY OK db=80.0ms idle=80.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "UNKNOWN", "sim_imsi", 77782, ~N[2026-08-21 11:34:45], ~N[2026-08-21 11:34:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:45.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790546, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:45], updated_at: ~N[2026-08-21 11:34:45]}} [2026-08-21 11:34:45.838] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:34:44Z", "value" => "UNKNOWN"} [2026-08-21 11:34:45.946] [DEBUG] QUERY OK db=107.4ms idle=86.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "UNKNOWN", "sim_iccid2", 77782, ~N[2026-08-21 11:34:45], ~N[2026-08-21 11:34:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:45.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790548, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:45], updated_at: ~N[2026-08-21 11:34:45]}} [2026-08-21 11:34:45.947] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:34:44Z", "value" => "UNKNOWN"} [2026-08-21 11:34:46.033] [DEBUG] QUERY OK db=86.1ms idle=108.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "UNKNOWN", "sim_imsi2", 77782, ~N[2026-08-21 11:34:45], ~N[2026-08-21 11:34:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:46.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790550, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:45], updated_at: ~N[2026-08-21 11:34:45]}} [2026-08-21 11:34:46.034] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:34:44Z", "value" => "34"} [2026-08-21 11:34:46.083] [DEBUG] QUERY OK db=47.7ms idle=88.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "34", "data_usage_mb", 77782, ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:46.083] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790552, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]}} [2026-08-21 11:34:46.083] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:34:44Z", "value" => "0"} [2026-08-21 11:34:46.135] [DEBUG] QUERY OK db=51.6ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "0", "mobile_data_mb", 77782, ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:46.136] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790554, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]}} [2026-08-21 11:34:46.136] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:34:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:34:46.190] [DEBUG] QUERY OK db=38.8ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77782, ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:46.195] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790556, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:34:44Z", message: nil, status_log_id: 77782, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]}} [2026-08-21 11:34:46.195] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:34:46.195] [INFO ] Incoming JSON payload: {"oid":"ebaa460c-a5d7-4aae-8c0d-988c3e12693a","sn":"98251226730002","uploadTime":"2026-08-21T11:34:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"ram_free_mb","value":"994","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:34:12Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:34:46.198] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ebaa460c-a5d7-4aae-8c0d-988c3e12693a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:34:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:34:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:34:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:34:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:34:12Z", "value" => "994"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:34:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:34:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:34:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:34:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:34:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:34:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:34:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:34:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:34:12Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:34:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:34:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:34:12Z", "vendor" => "morefun"} [2026-08-21 11:34:46.198] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:34:46.198] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:34:46.198] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:34:46.199] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=63.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 11:34:46.200] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=11.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:34:46.200] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:34:46.200] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:34:46.201] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:34:46.229] [DEBUG] QUERY OK source="tms_terminals" db=28.5ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:34:46], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:34:46.230] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:34:46.232] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:34:46.291] [DEBUG] QUERY OK source="tms_terminals" db=58.1ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:34:46], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:34:46.341] [DEBUG] QUERY OK db=49.4ms idle=44.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "ebaa460c-a5d7-4aae-8c0d-988c3e12693a", "2026-08-21T11:34:12Z", ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:34:46.342] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77783, oid: "ebaa460c-a5d7-4aae-8c0d-988c3e12693a", upload_time: "2026-08-21T11:34:12Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]} [2026-08-21 11:34:46.345] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:34:12Z", "value" => "morefun"} [2026-08-21 11:34:46.401] [DEBUG] QUERY OK db=55.0ms queue=0.3ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "morefun", "vendor", 77783, ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:46.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790557, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]}} [2026-08-21 11:34:46.401] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:34:12Z", "value" => "kiosk_launcher"} [2026-08-21 11:34:46.473] [DEBUG] QUERY OK db=69.4ms queue=1.0ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "kiosk_launcher", "model", 77783, ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:46.477] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790560, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]}} [2026-08-21 11:34:46.477] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:34:12Z", "value" => "1.0"} [2026-08-21 11:34:46.574] [DEBUG] QUERY OK db=90.8ms queue=6.1ms idle=76.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "1.0", "app_version", 77783, ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:46.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790562, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]}} [2026-08-21 11:34:46.575] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:34:12Z", "value" => "13"} [2026-08-21 11:34:46.604] [DEBUG] QUERY OK db=29.2ms idle=102.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "13", "android_version", 77783, ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:46.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790564, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]}} [2026-08-21 11:34:46.608] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:34:12Z", "value" => "994"} [2026-08-21 11:34:46.667] [DEBUG] QUERY OK db=58.3ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "994", "ram_free_mb", 77783, ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:46.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790566, itemkey: "ram_free_mb", value: "994", timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]}} [2026-08-21 11:34:46.667] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:34:12Z", "value" => "WIFI"} [2026-08-21 11:34:46.707] [DEBUG] QUERY OK db=39.0ms idle=63.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "WIFI", "network_type", 77783, ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:46.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790568, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]}} [2026-08-21 11:34:46.711] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:34:12Z", "value" => "true"} [2026-08-21 11:34:46.764] [DEBUG] QUERY OK db=53.0ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "true", "kiosk_active", 77783, ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:46.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790570, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]}} [2026-08-21 11:34:46.770] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:34:12Z", "value" => ""} [2026-08-21 11:34:46.846] [DEBUG] QUERY OK db=75.3ms queue=0.1ms idle=64.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:34:12Z", "sim_operator", 77783, ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:46.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790572, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]}} [2026-08-21 11:34:46.847] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:34:12Z", "value" => "UNKNOWN"} [2026-08-21 11:34:46.914] [DEBUG] QUERY OK db=63.0ms idle=86.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "UNKNOWN", "sim_number", 77783, ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:46.914] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790574, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]}} [2026-08-21 11:34:46.915] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:34:12Z", "value" => "UNKNOWN"} [2026-08-21 11:34:46.951] [DEBUG] QUERY OK db=35.7ms idle=68.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "UNKNOWN", "sim_iccid", 77783, ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:46.952] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790576, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]}} [2026-08-21 11:34:46.952] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:34:12Z", "value" => "UNKNOWN"} [2026-08-21 11:34:47.012] [DEBUG] QUERY OK db=60.2ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "UNKNOWN", "sim_imsi", 77783, ~N[2026-08-21 11:34:46], ~N[2026-08-21 11:34:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:47.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790578, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:46], updated_at: ~N[2026-08-21 11:34:46]}} [2026-08-21 11:34:47.013] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:34:12Z", "value" => "UNKNOWN"} [2026-08-21 11:34:47.062] [DEBUG] QUERY OK db=46.2ms idle=64.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "UNKNOWN", "sim_iccid2", 77783, ~N[2026-08-21 11:34:47], ~N[2026-08-21 11:34:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:47.062] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790580, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:47], updated_at: ~N[2026-08-21 11:34:47]}} [2026-08-21 11:34:47.062] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:34:12Z", "value" => "UNKNOWN"} [2026-08-21 11:34:47.133] [DEBUG] QUERY OK db=69.9ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "UNKNOWN", "sim_imsi2", 77783, ~N[2026-08-21 11:34:47], ~N[2026-08-21 11:34:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:47.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790582, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:47], updated_at: ~N[2026-08-21 11:34:47]}} [2026-08-21 11:34:47.134] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:34:12Z", "value" => "1"} [2026-08-21 11:34:47.181] [DEBUG] QUERY OK db=44.7ms idle=74.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "1", "data_usage_mb", 77783, ~N[2026-08-21 11:34:47], ~N[2026-08-21 11:34:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:47.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790584, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:47], updated_at: ~N[2026-08-21 11:34:47]}} [2026-08-21 11:34:47.182] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:34:12Z", "value" => "0"} [2026-08-21 11:34:47.254] [DEBUG] QUERY OK db=69.5ms idle=52.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "0", "mobile_data_mb", 77783, ~N[2026-08-21 11:34:47], ~N[2026-08-21 11:34:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:47.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790586, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:47], updated_at: ~N[2026-08-21 11:34:47]}} [2026-08-21 11:34:47.255] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:34:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:34:47.317] [DEBUG] QUERY OK db=58.4ms idle=6.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:12Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77783, ~N[2026-08-21 11:34:47], ~N[2026-08-21 11:34:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:47.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790588, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:34:12Z", message: nil, status_log_id: 77783, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:47], updated_at: ~N[2026-08-21 11:34:47]}} [2026-08-21 11:34:47.914] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 11:34:47.914] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T15:34:45Z","org.device":[{"itemkey":"battery","value":52,"timestamp":"2026-08-21T15:34:45Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T15:34:45Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T15:34:45Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T15:34:45Z","message":""}]} [2026-08-21 11:34:47.918] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T15:34:45Z", "value" => 52}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T15:34:45Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T15:34:45Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T15:34:45Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T15:34:45Z"} [2026-08-21 11:34:47.921] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:34:47.924] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=667.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:34:47.924] [INFO ] Terminal updated: 61250415798001 [2026-08-21 11:34:48.059] [DEBUG] QUERY OK source="tms_terminals" db=135.0ms idle=607.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:34:47], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:34:48.060] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=136.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:34:48.106] [DEBUG] QUERY OK source="tms_terminals" db=43.8ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:34:48], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:34:48.193] [DEBUG] QUERY OK db=79.8ms idle=53.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T15:34:45Z", ~N[2026-08-21 11:34:48], ~N[2026-08-21 11:34:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:34:48.194] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77785, oid: "org-id-placeholder", upload_time: "2026-08-21T15:34:45Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:48], updated_at: ~N[2026-08-21 11:34:48]} [2026-08-21 11:34:48.194] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T15:34:45Z", "value" => 52} [2026-08-21 11:34:48.240] [DEBUG] QUERY OK db=46.0ms idle=89.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:34:45Z", "52", "battery", 77785, ~N[2026-08-21 11:34:48], ~N[2026-08-21 11:34:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:48.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790589, itemkey: "battery", value: "52", timestamp: "2026-08-21T15:34:45Z", message: nil, status_log_id: 77785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:48], updated_at: ~N[2026-08-21 11:34:48]}} [2026-08-21 11:34:48.243] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T15:34:45Z", "value" => 50} [2026-08-21 11:34:48.292] [DEBUG] QUERY OK db=49.3ms queue=0.1ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T15:34:45Z", "50", "memory", 77785, ~N[2026-08-21 11:34:48], ~N[2026-08-21 11:34:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:48.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790591, itemkey: "memory", value: "50", timestamp: "2026-08-21T15:34:45Z", message: "Normal", status_log_id: 77785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:48], updated_at: ~N[2026-08-21 11:34:48]}} [2026-08-21 11:34:48.294] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T15:34:45Z", "value" => 50} [2026-08-21 11:34:48.353] [DEBUG] QUERY OK db=58.0ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:34:45Z", "50", "cpu", 77785, ~N[2026-08-21 11:34:48], ~N[2026-08-21 11:34:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:48.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790593, itemkey: "cpu", value: "50", timestamp: "2026-08-21T15:34:45Z", message: nil, status_log_id: 77785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:48], updated_at: ~N[2026-08-21 11:34:48]}} [2026-08-21 11:34:48.354] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T15:34:45Z", "value" => "online"} [2026-08-21 11:34:48.411] [DEBUG] QUERY OK db=56.4ms idle=62.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:34:45Z", "online", "network", 77785, ~N[2026-08-21 11:34:48], ~N[2026-08-21 11:34:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:34:48.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790595, itemkey: "network", value: "online", timestamp: "2026-08-21T15:34:45Z", message: nil, status_log_id: 77785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:34:48], updated_at: ~N[2026-08-21 11:34:48]}} [2026-08-21 11:34:48.411] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 11:35:15.123] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:35:15.123] [INFO ] Incoming JSON payload: {"oid":"3de8b9e3-92f1-464d-9d59-82b11e2f0556","sn":"98251226730001","uploadTime":"2026-08-21T11:35:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"ram_free_mb","value":"919","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:35:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:35:15.125] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3de8b9e3-92f1-464d-9d59-82b11e2f0556", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:35:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:35:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:35:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:35:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:35:14Z", "value" => "919"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:35:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:35:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:35:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:35:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:35:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:35:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:35:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:35:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:35:14Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:35:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:35:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:35:14Z", "vendor" => "morefun"} [2026-08-21 11:35:15.126] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:35:15.126] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:35:15.128] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:35:15.132] [DEBUG] QUERY OK source="parameter_templates" db=3.0ms queue=0.1ms idle=1161.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-08-21 11:35:15.133] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=728.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-08-21 11:35:15.134] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:35:15.136] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms queue=0.1ms idle=2.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:35:15.143] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:35:15.231] [DEBUG] QUERY OK source="tms_terminals" db=84.5ms queue=0.1ms idle=12.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:35:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:35:15.231] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:35:15.238] [DEBUG] QUERY OK source="tms_terminals" db=4.9ms queue=0.2ms idle=96.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 11:35:15.286] [DEBUG] QUERY OK source="tms_terminals" db=42.7ms queue=0.8ms idle=10.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:35:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:35:15.321] [DEBUG] QUERY OK db=35.4ms idle=49.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "3de8b9e3-92f1-464d-9d59-82b11e2f0556", "2026-08-21T11:35:14Z", ~N[2026-08-21 11:35:15], ~N[2026-08-21 11:35:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:35:15.322] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77787, oid: "3de8b9e3-92f1-464d-9d59-82b11e2f0556", upload_time: "2026-08-21T11:35:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:15], updated_at: ~N[2026-08-21 11:35:15]} [2026-08-21 11:35:15.322] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:35:14Z", "value" => "morefun"} [2026-08-21 11:35:15.364] [DEBUG] QUERY OK db=41.8ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "morefun", "vendor", 77787, ~N[2026-08-21 11:35:15], ~N[2026-08-21 11:35:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:15.364] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790597, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:15], updated_at: ~N[2026-08-21 11:35:15]}} [2026-08-21 11:35:15.365] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:35:14Z", "value" => "kiosk_launcher"} [2026-08-21 11:35:15.393] [DEBUG] QUERY OK db=28.1ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "kiosk_launcher", "model", 77787, ~N[2026-08-21 11:35:15], ~N[2026-08-21 11:35:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:15.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790598, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:15], updated_at: ~N[2026-08-21 11:35:15]}} [2026-08-21 11:35:15.393] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:35:14Z", "value" => "1.0"} [2026-08-21 11:35:15.442] [DEBUG] QUERY OK db=48.3ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "1.0", "app_version", 77787, ~N[2026-08-21 11:35:15], ~N[2026-08-21 11:35:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:15.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790599, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:15], updated_at: ~N[2026-08-21 11:35:15]}} [2026-08-21 11:35:15.443] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:35:14Z", "value" => "13"} [2026-08-21 11:35:15.483] [DEBUG] QUERY OK db=40.1ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "13", "android_version", 77787, ~N[2026-08-21 11:35:15], ~N[2026-08-21 11:35:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:15.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790600, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:15], updated_at: ~N[2026-08-21 11:35:15]}} [2026-08-21 11:35:15.485] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:35:14Z", "value" => "919"} [2026-08-21 11:35:15.535] [DEBUG] QUERY OK db=48.8ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "919", "ram_free_mb", 77787, ~N[2026-08-21 11:35:15], ~N[2026-08-21 11:35:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:15.536] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790601, itemkey: "ram_free_mb", value: "919", timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:15], updated_at: ~N[2026-08-21 11:35:15]}} [2026-08-21 11:35:15.536] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:35:14Z", "value" => "WIFI"} [2026-08-21 11:35:15.578] [DEBUG] QUERY OK db=39.9ms queue=1.0ms idle=54.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "WIFI", "network_type", 77787, ~N[2026-08-21 11:35:15], ~N[2026-08-21 11:35:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:15.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790602, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:15], updated_at: ~N[2026-08-21 11:35:15]}} [2026-08-21 11:35:15.578] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:35:14Z", "value" => "true"} [2026-08-21 11:35:15.627] [DEBUG] QUERY OK db=46.9ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "true", "kiosk_active", 77787, ~N[2026-08-21 11:35:15], ~N[2026-08-21 11:35:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:15.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790603, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:15], updated_at: ~N[2026-08-21 11:35:15]}} [2026-08-21 11:35:15.636] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:35:14Z", "value" => ""} [2026-08-21 11:35:15.673] [DEBUG] QUERY OK db=23.6ms queue=0.6ms idle=69.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:35:14Z", "sim_operator", 77787, ~N[2026-08-21 11:35:15], ~N[2026-08-21 11:35:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:15.674] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790604, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:15], updated_at: ~N[2026-08-21 11:35:15]}} [2026-08-21 11:35:15.674] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:35:14Z", "value" => "UNKNOWN"} [2026-08-21 11:35:15.725] [DEBUG] QUERY OK db=49.8ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "UNKNOWN", "sim_number", 77787, ~N[2026-08-21 11:35:15], ~N[2026-08-21 11:35:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:15.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790605, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:15], updated_at: ~N[2026-08-21 11:35:15]}} [2026-08-21 11:35:15.729] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:35:14Z", "value" => "UNKNOWN"} [2026-08-21 11:35:15.772] [DEBUG] QUERY OK db=42.6ms queue=0.1ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "UNKNOWN", "sim_iccid", 77787, ~N[2026-08-21 11:35:15], ~N[2026-08-21 11:35:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:15.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790606, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:15], updated_at: ~N[2026-08-21 11:35:15]}} [2026-08-21 11:35:15.775] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:35:14Z", "value" => "UNKNOWN"} [2026-08-21 11:35:15.834] [DEBUG] QUERY OK db=58.5ms idle=51.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "UNKNOWN", "sim_imsi", 77787, ~N[2026-08-21 11:35:15], ~N[2026-08-21 11:35:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:15.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790607, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:15], updated_at: ~N[2026-08-21 11:35:15]}} [2026-08-21 11:35:15.835] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:35:14Z", "value" => "UNKNOWN"} [2026-08-21 11:35:15.937] [DEBUG] QUERY OK db=102.3ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "UNKNOWN", "sim_iccid2", 77787, ~N[2026-08-21 11:35:15], ~N[2026-08-21 11:35:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:15.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790608, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:15], updated_at: ~N[2026-08-21 11:35:15]}} [2026-08-21 11:35:15.938] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:35:14Z", "value" => "UNKNOWN"} [2026-08-21 11:35:16.005] [DEBUG] QUERY OK db=65.5ms queue=1.5ms idle=103.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "UNKNOWN", "sim_imsi2", 77787, ~N[2026-08-21 11:35:15], ~N[2026-08-21 11:35:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:16.006] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790609, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:15], updated_at: ~N[2026-08-21 11:35:15]}} [2026-08-21 11:35:16.006] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:35:14Z", "value" => "34"} [2026-08-21 11:35:16.239] [DEBUG] QUERY OK db=232.6ms idle=69.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "34", "data_usage_mb", 77787, ~N[2026-08-21 11:35:16], ~N[2026-08-21 11:35:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:16.241] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790610, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:16], updated_at: ~N[2026-08-21 11:35:16]}} [2026-08-21 11:35:16.241] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:35:14Z", "value" => "0"} [2026-08-21 11:35:16.319] [DEBUG] QUERY OK db=77.7ms idle=236.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "0", "mobile_data_mb", 77787, ~N[2026-08-21 11:35:16], ~N[2026-08-21 11:35:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:16.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790611, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:16], updated_at: ~N[2026-08-21 11:35:16]}} [2026-08-21 11:35:16.320] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:35:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:35:16.399] [DEBUG] QUERY OK db=74.4ms queue=0.7ms idle=82.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77787, ~N[2026-08-21 11:35:16], ~N[2026-08-21 11:35:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:16.405] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790612, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:35:14Z", message: nil, status_log_id: 77787, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:16], updated_at: ~N[2026-08-21 11:35:16]}} [2026-08-21 11:35:16.406] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:35:16.407] [INFO ] Incoming JSON payload: {"oid":"ffb41e21-a400-4be1-97d7-d26f1f4697aa","sn":"98251226730002","uploadTime":"2026-08-21T11:34:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"ram_free_mb","value":"1000","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:34:42Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.re (truncated) [2026-08-21 11:35:16.412] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ffb41e21-a400-4be1-97d7-d26f1f4697aa", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:34:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:34:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:34:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:34:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:34:42Z", "value" => "1000"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:34:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:34:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:34:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:34:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:34:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:34:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:34:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:34:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:34:42Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:34:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:34:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:34:42Z", "vendor" => "morefun"} [2026-08-21 11:35:16.413] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:35:16.413] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:35:16.413] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:35:16.415] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.7ms idle=16.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 11:35:16.421] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms queue=4.3ms idle=0.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:35:16.421] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:35:16.424] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=0.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:35:16.424] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:35:16.446] [DEBUG] QUERY OK source="tms_terminals" db=22.3ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:35:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:35:16.447] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:35:16.450] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms idle=24.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:35:16.509] [DEBUG] QUERY OK source="tms_terminals" db=58.3ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:35:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:35:16.567] [DEBUG] QUERY OK db=57.4ms idle=59.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "ffb41e21-a400-4be1-97d7-d26f1f4697aa", "2026-08-21T11:34:42Z", ~N[2026-08-21 11:35:16], ~N[2026-08-21 11:35:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:35:16.567] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77788, oid: "ffb41e21-a400-4be1-97d7-d26f1f4697aa", upload_time: "2026-08-21T11:34:42Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:16], updated_at: ~N[2026-08-21 11:35:16]} [2026-08-21 11:35:16.568] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:34:42Z", "value" => "morefun"} [2026-08-21 11:35:16.627] [DEBUG] QUERY OK db=58.8ms idle=0.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "morefun", "vendor", 77788, ~N[2026-08-21 11:35:16], ~N[2026-08-21 11:35:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:16.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790613, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:16], updated_at: ~N[2026-08-21 11:35:16]}} [2026-08-21 11:35:16.627] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:34:42Z", "value" => "kiosk_launcher"} [2026-08-21 11:35:16.697] [DEBUG] QUERY OK db=68.9ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "kiosk_launcher", "model", 77788, ~N[2026-08-21 11:35:16], ~N[2026-08-21 11:35:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:16.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790614, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:16], updated_at: ~N[2026-08-21 11:35:16]}} [2026-08-21 11:35:16.697] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:34:42Z", "value" => "1.0"} [2026-08-21 11:35:16.862] [DEBUG] QUERY OK db=165.0ms idle=70.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "1.0", "app_version", 77788, ~N[2026-08-21 11:35:16], ~N[2026-08-21 11:35:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:16.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790615, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:16], updated_at: ~N[2026-08-21 11:35:16]}} [2026-08-21 11:35:16.863] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:34:42Z", "value" => "13"} [2026-08-21 11:35:16.964] [DEBUG] QUERY OK db=100.5ms idle=166.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "13", "android_version", 77788, ~N[2026-08-21 11:35:16], ~N[2026-08-21 11:35:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:16.964] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790616, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:16], updated_at: ~N[2026-08-21 11:35:16]}} [2026-08-21 11:35:16.964] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:34:42Z", "value" => "1000"} [2026-08-21 11:35:17.088] [DEBUG] QUERY OK db=123.0ms idle=102.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "1000", "ram_free_mb", 77788, ~N[2026-08-21 11:35:16], ~N[2026-08-21 11:35:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:17.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790617, itemkey: "ram_free_mb", value: "1000", timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:16], updated_at: ~N[2026-08-21 11:35:16]}} [2026-08-21 11:35:17.088] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:34:42Z", "value" => "WIFI"} [2026-08-21 11:35:17.146] [DEBUG] QUERY OK db=57.2ms idle=124.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "WIFI", "network_type", 77788, ~N[2026-08-21 11:35:17], ~N[2026-08-21 11:35:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:17.146] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790618, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:17], updated_at: ~N[2026-08-21 11:35:17]}} [2026-08-21 11:35:17.146] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:34:42Z", "value" => "true"} [2026-08-21 11:35:17.185] [DEBUG] QUERY OK db=38.3ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "true", "kiosk_active", 77788, ~N[2026-08-21 11:35:17], ~N[2026-08-21 11:35:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:17.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790619, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:17], updated_at: ~N[2026-08-21 11:35:17]}} [2026-08-21 11:35:17.189] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:34:42Z", "value" => ""} [2026-08-21 11:35:17.226] [DEBUG] QUERY OK db=36.6ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:34:42Z", "sim_operator", 77788, ~N[2026-08-21 11:35:17], ~N[2026-08-21 11:35:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:17.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790620, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:17], updated_at: ~N[2026-08-21 11:35:17]}} [2026-08-21 11:35:17.226] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:34:42Z", "value" => "UNKNOWN"} [2026-08-21 11:35:17.269] [DEBUG] QUERY OK db=42.1ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "UNKNOWN", "sim_number", 77788, ~N[2026-08-21 11:35:17], ~N[2026-08-21 11:35:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:17.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790621, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:17], updated_at: ~N[2026-08-21 11:35:17]}} [2026-08-21 11:35:17.270] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:34:42Z", "value" => "UNKNOWN"} [2026-08-21 11:35:17.299] [DEBUG] QUERY OK db=28.1ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "UNKNOWN", "sim_iccid", 77788, ~N[2026-08-21 11:35:17], ~N[2026-08-21 11:35:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:17.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790622, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:17], updated_at: ~N[2026-08-21 11:35:17]}} [2026-08-21 11:35:17.299] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:34:42Z", "value" => "UNKNOWN"} [2026-08-21 11:35:17.352] [DEBUG] QUERY OK db=48.6ms queue=4.1ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "UNKNOWN", "sim_imsi", 77788, ~N[2026-08-21 11:35:17], ~N[2026-08-21 11:35:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:17.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790623, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:17], updated_at: ~N[2026-08-21 11:35:17]}} [2026-08-21 11:35:17.353] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:34:42Z", "value" => "UNKNOWN"} [2026-08-21 11:35:17.415] [DEBUG] QUERY OK db=62.0ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "UNKNOWN", "sim_iccid2", 77788, ~N[2026-08-21 11:35:17], ~N[2026-08-21 11:35:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:17.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790624, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:17], updated_at: ~N[2026-08-21 11:35:17]}} [2026-08-21 11:35:17.418] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:34:42Z", "value" => "UNKNOWN"} [2026-08-21 11:35:17.478] [DEBUG] QUERY OK db=59.3ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "UNKNOWN", "sim_imsi2", 77788, ~N[2026-08-21 11:35:17], ~N[2026-08-21 11:35:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:17.478] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790625, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:17], updated_at: ~N[2026-08-21 11:35:17]}} [2026-08-21 11:35:17.478] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:34:42Z", "value" => "1"} [2026-08-21 11:35:17.528] [DEBUG] QUERY OK db=45.5ms queue=3.2ms idle=54.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "1", "data_usage_mb", 77788, ~N[2026-08-21 11:35:17], ~N[2026-08-21 11:35:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:17.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790626, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:17], updated_at: ~N[2026-08-21 11:35:17]}} [2026-08-21 11:35:17.529] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:34:42Z", "value" => "0"} [2026-08-21 11:35:17.585] [DEBUG] QUERY OK db=55.6ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "0", "mobile_data_mb", 77788, ~N[2026-08-21 11:35:17], ~N[2026-08-21 11:35:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:17.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790627, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:17], updated_at: ~N[2026-08-21 11:35:17]}} [2026-08-21 11:35:17.586] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:34:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:35:17.629] [DEBUG] QUERY OK db=42.6ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:34:42Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77788, ~N[2026-08-21 11:35:17], ~N[2026-08-21 11:35:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:17.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790628, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:34:42Z", message: nil, status_log_id: 77788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:17], updated_at: ~N[2026-08-21 11:35:17]}} [2026-08-21 11:35:45.464] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:35:45.466] [INFO ] Incoming JSON payload: {"oid":"28a125ce-8aee-4930-83a0-7eb915bd4d67","sn":"98251226730001","uploadTime":"2026-08-21T11:35:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:35:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:35:45.467] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "28a125ce-8aee-4930-83a0-7eb915bd4d67", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:35:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:35:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:35:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:35:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:35:44Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:35:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:35:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:35:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:35:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:35:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:35:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:35:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:35:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:35:44Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:35:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:35:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:35:44Z", "vendor" => "morefun"} [2026-08-21 11:35:45.467] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:35:45.467] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:35:45.467] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:35:45.469] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=1444.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 11:35:45.470] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=442.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-08-21 11:35:45.470] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:35:45.471] [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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:35:45.472] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:35:45.583] [DEBUG] QUERY OK source="tms_terminals" db=111.2ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:35:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:35:45.583] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:35:45.584] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=112.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-08-21 11:35:45.653] [DEBUG] QUERY OK source="tms_terminals" db=68.0ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:35:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:35:45.723] [DEBUG] QUERY OK db=69.8ms idle=68.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "28a125ce-8aee-4930-83a0-7eb915bd4d67", "2026-08-21T11:35:44Z", ~N[2026-08-21 11:35:45], ~N[2026-08-21 11:35:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:35:45.723] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77789, oid: "28a125ce-8aee-4930-83a0-7eb915bd4d67", upload_time: "2026-08-21T11:35:44Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:45], updated_at: ~N[2026-08-21 11:35:45]} [2026-08-21 11:35:45.727] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:35:44Z", "value" => "morefun"} [2026-08-21 11:35:45.829] [DEBUG] QUERY OK db=101.9ms idle=3.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "morefun", "vendor", 77789, ~N[2026-08-21 11:35:45], ~N[2026-08-21 11:35:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:45.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790629, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:45], updated_at: ~N[2026-08-21 11:35:45]}} [2026-08-21 11:35:45.829] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:35:44Z", "value" => "kiosk_launcher"} [2026-08-21 11:35:45.943] [DEBUG] QUERY OK db=113.3ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "kiosk_launcher", "model", 77789, ~N[2026-08-21 11:35:45], ~N[2026-08-21 11:35:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:45.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790630, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:45], updated_at: ~N[2026-08-21 11:35:45]}} [2026-08-21 11:35:45.944] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:35:44Z", "value" => "1.0"} [2026-08-21 11:35:46.016] [DEBUG] QUERY OK db=72.0ms idle=115.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "1.0", "app_version", 77789, ~N[2026-08-21 11:35:45], ~N[2026-08-21 11:35:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:46.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790631, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:45], updated_at: ~N[2026-08-21 11:35:45]}} [2026-08-21 11:35:46.017] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:35:44Z", "value" => "13"} [2026-08-21 11:35:46.105] [DEBUG] QUERY OK db=87.2ms idle=74.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "13", "android_version", 77789, ~N[2026-08-21 11:35:46], ~N[2026-08-21 11:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:46.105] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790632, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:46], updated_at: ~N[2026-08-21 11:35:46]}} [2026-08-21 11:35:46.105] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:35:44Z", "value" => "921"} [2026-08-21 11:35:46.189] [DEBUG] QUERY OK db=83.4ms idle=76.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "921", "ram_free_mb", 77789, ~N[2026-08-21 11:35:46], ~N[2026-08-21 11:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:46.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790633, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:46], updated_at: ~N[2026-08-21 11:35:46]}} [2026-08-21 11:35:46.189] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:35:44Z", "value" => "WIFI"} [2026-08-21 11:35:46.279] [DEBUG] QUERY OK db=89.8ms idle=84.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "WIFI", "network_type", 77789, ~N[2026-08-21 11:35:46], ~N[2026-08-21 11:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:46.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790634, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:46], updated_at: ~N[2026-08-21 11:35:46]}} [2026-08-21 11:35:46.280] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:35:44Z", "value" => "true"} [2026-08-21 11:35:46.321] [DEBUG] QUERY OK db=40.3ms idle=91.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "true", "kiosk_active", 77789, ~N[2026-08-21 11:35:46], ~N[2026-08-21 11:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:46.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790635, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:46], updated_at: ~N[2026-08-21 11:35:46]}} [2026-08-21 11:35:46.321] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:35:44Z", "value" => ""} [2026-08-21 11:35:46.345] [DEBUG] QUERY OK db=23.6ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:35:44Z", "sim_operator", 77789, ~N[2026-08-21 11:35:46], ~N[2026-08-21 11:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:46.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790636, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:46], updated_at: ~N[2026-08-21 11:35:46]}} [2026-08-21 11:35:46.346] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:35:44Z", "value" => "UNKNOWN"} [2026-08-21 11:35:46.398] [DEBUG] QUERY OK db=51.2ms queue=0.9ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "UNKNOWN", "sim_number", 77789, ~N[2026-08-21 11:35:46], ~N[2026-08-21 11:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:46.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790637, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:46], updated_at: ~N[2026-08-21 11:35:46]}} [2026-08-21 11:35:46.398] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:35:44Z", "value" => "UNKNOWN"} [2026-08-21 11:35:46.478] [DEBUG] QUERY OK db=79.0ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "UNKNOWN", "sim_iccid", 77789, ~N[2026-08-21 11:35:46], ~N[2026-08-21 11:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:46.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790638, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:46], updated_at: ~N[2026-08-21 11:35:46]}} [2026-08-21 11:35:46.480] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:35:44Z", "value" => "UNKNOWN"} [2026-08-21 11:35:46.527] [DEBUG] QUERY OK db=45.1ms idle=81.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "UNKNOWN", "sim_imsi", 77789, ~N[2026-08-21 11:35:46], ~N[2026-08-21 11:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:46.527] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790639, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:46], updated_at: ~N[2026-08-21 11:35:46]}} [2026-08-21 11:35:46.527] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:35:44Z", "value" => "UNKNOWN"} [2026-08-21 11:35:46.590] [DEBUG] QUERY OK db=62.0ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "UNKNOWN", "sim_iccid2", 77789, ~N[2026-08-21 11:35:46], ~N[2026-08-21 11:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:46.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790640, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:46], updated_at: ~N[2026-08-21 11:35:46]}} [2026-08-21 11:35:46.595] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:35:44Z", "value" => "UNKNOWN"} [2026-08-21 11:35:46.637] [DEBUG] QUERY OK db=37.7ms idle=73.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "UNKNOWN", "sim_imsi2", 77789, ~N[2026-08-21 11:35:46], ~N[2026-08-21 11:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:46.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790641, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:46], updated_at: ~N[2026-08-21 11:35:46]}} [2026-08-21 11:35:46.637] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:35:44Z", "value" => "34"} [2026-08-21 11:35:46.692] [DEBUG] QUERY OK db=54.0ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "34", "data_usage_mb", 77789, ~N[2026-08-21 11:35:46], ~N[2026-08-21 11:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:46.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790642, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:46], updated_at: ~N[2026-08-21 11:35:46]}} [2026-08-21 11:35:46.692] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:35:44Z", "value" => "0"} [2026-08-21 11:35:46.733] [DEBUG] QUERY OK db=40.7ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "0", "mobile_data_mb", 77789, ~N[2026-08-21 11:35:46], ~N[2026-08-21 11:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:46.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790643, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:46], updated_at: ~N[2026-08-21 11:35:46]}} [2026-08-21 11:35:46.735] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:35:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:35:46.789] [DEBUG] QUERY OK db=47.1ms queue=2.3ms idle=43.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77789, ~N[2026-08-21 11:35:46], ~N[2026-08-21 11:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:46.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790644, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:35:44Z", message: nil, status_log_id: 77789, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:46], updated_at: ~N[2026-08-21 11:35:46]}} [2026-08-21 11:35:46.799] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:35:46.799] [INFO ] Incoming JSON payload: {"oid":"05ed619e-2f65-4c66-b778-94cb4d15c90d","sn":"98251226730002","uploadTime":"2026-08-21T11:35:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"ram_free_mb","value":"1003","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:35:12Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.re (truncated) [2026-08-21 11:35:46.803] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "05ed619e-2f65-4c66-b778-94cb4d15c90d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:35:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:35:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:35:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:35:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:35:12Z", "value" => "1003"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:35:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:35:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:35:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:35:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:35:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:35:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:35:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:35:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:35:12Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:35:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:35:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:35:12Z", "vendor" => "morefun"} [2026-08-21 11:35:46.803] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:35:46.803] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:35:46.803] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:35:46.815] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=81.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-08-21 11:35:46.821] [DEBUG] QUERY OK source="parameter_templates" db=5.4ms idle=30.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-08-21 11:35:46.821] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:35:46.822] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=6.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:35:46.830] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:35:46.883] [DEBUG] QUERY OK source="tms_terminals" db=51.2ms idle=8.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:35:46], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:35:46.883] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:35:46.885] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.7ms idle=60.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:35:46.946] [DEBUG] QUERY OK source="tms_terminals" db=60.7ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:35:46], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:35:47.055] [DEBUG] QUERY OK db=109.2ms idle=61.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "05ed619e-2f65-4c66-b778-94cb4d15c90d", "2026-08-21T11:35:12Z", ~N[2026-08-21 11:35:46], ~N[2026-08-21 11:35:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:35:47.056] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77790, oid: "05ed619e-2f65-4c66-b778-94cb4d15c90d", upload_time: "2026-08-21T11:35:12Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:46], updated_at: ~N[2026-08-21 11:35:46]} [2026-08-21 11:35:47.056] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:35:12Z", "value" => "morefun"} [2026-08-21 11:35:47.108] [DEBUG] QUERY OK db=51.3ms idle=19.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "morefun", "vendor", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790645, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.109] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:35:12Z", "value" => "kiosk_launcher"} [2026-08-21 11:35:47.151] [DEBUG] QUERY OK db=41.8ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "kiosk_launcher", "model", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790646, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.152] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:35:12Z", "value" => "1.0"} [2026-08-21 11:35:47.203] [DEBUG] QUERY OK db=50.6ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "1.0", "app_version", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790647, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.204] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:35:12Z", "value" => "13"} [2026-08-21 11:35:47.257] [DEBUG] QUERY OK db=52.2ms queue=1.0ms idle=52.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "13", "android_version", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.258] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790648, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.258] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:35:12Z", "value" => "1003"} [2026-08-21 11:35:47.317] [DEBUG] QUERY OK db=54.0ms queue=3.3ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "1003", "ram_free_mb", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.318] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790649, itemkey: "ram_free_mb", value: "1003", timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.318] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:35:12Z", "value" => "WIFI"} [2026-08-21 11:35:47.376] [DEBUG] QUERY OK db=56.8ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "WIFI", "network_type", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790650, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.376] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:35:12Z", "value" => "true"} [2026-08-21 11:35:47.434] [DEBUG] QUERY OK db=57.2ms idle=60.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "true", "kiosk_active", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790651, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.438] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:35:12Z", "value" => ""} [2026-08-21 11:35:47.561] [DEBUG] QUERY OK db=121.3ms idle=64.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:35:12Z", "sim_operator", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.562] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790652, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.563] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:35:12Z", "value" => "UNKNOWN"} [2026-08-21 11:35:47.624] [DEBUG] QUERY OK db=57.3ms idle=132.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "UNKNOWN", "sim_number", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790653, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.625] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:35:12Z", "value" => "UNKNOWN"} [2026-08-21 11:35:47.676] [DEBUG] QUERY OK db=49.6ms queue=0.4ms idle=64.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "UNKNOWN", "sim_iccid", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.676] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790654, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.676] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:35:12Z", "value" => "UNKNOWN"} [2026-08-21 11:35:47.739] [DEBUG] QUERY OK db=55.6ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "UNKNOWN", "sim_imsi", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790655, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.740] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:35:12Z", "value" => "UNKNOWN"} [2026-08-21 11:35:47.785] [DEBUG] QUERY OK db=44.3ms idle=64.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "UNKNOWN", "sim_iccid2", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.785] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790656, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.785] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:35:12Z", "value" => "UNKNOWN"} [2026-08-21 11:35:47.824] [DEBUG] QUERY OK db=38.8ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "UNKNOWN", "sim_imsi2", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790657, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.825] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:35:12Z", "value" => "1"} [2026-08-21 11:35:47.870] [DEBUG] QUERY OK db=39.2ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "1", "data_usage_mb", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790658, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.871] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:35:12Z", "value" => "0"} [2026-08-21 11:35:47.916] [DEBUG] QUERY OK db=44.9ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "0", "mobile_data_mb", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.917] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790659, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:47.918] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:35:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:35:47.988] [DEBUG] QUERY OK db=68.7ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:12Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77790, ~N[2026-08-21 11:35:47], ~N[2026-08-21 11:35:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:47.988] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790660, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:35:12Z", message: nil, status_log_id: 77790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:47], updated_at: ~N[2026-08-21 11:35:47]}} [2026-08-21 11:35:58.590] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 11:35:58.590] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T02:45:23Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T02:45:23Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T02:45:23Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T02:45:23Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T02:45:23Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T02:45:23Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T02:45:23Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T02:45:23Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T02:45:23Z","vendor":"MoreFun"} [2026-08-21 11:35:58.591] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:45:23Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:45:23Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:45:23Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:45:23Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:45:23Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:45:23Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:45:23Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:45:23Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T02:45:23Z", "vendor" => "MoreFun"} [2026-08-21 11:35:58.591] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:35:58.591] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 11:35:58.591] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 11:35:58.592] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=612.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-08-21 11:35:58.594] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=412.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 11:35:58.595] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms 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-08-21 11:35:58.597] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.6ms idle=2.3ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:35:58.599] [DEBUG] QUERY OK source="pos_terminal" db=0.8ms idle=3.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:35:58.638] [DEBUG] QUERY OK source="pos_merchant" db=39.3ms idle=1.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:35:58.643] [DEBUG] QUERY OK db=3.9ms queue=0.8ms idle=1673.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 ["123451234512345"] [2026-08-21 11:35:58.644] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:35:58.645] [DEBUG] QUERY OK source="pos_terminal_data" db=1.0ms idle=45.0ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:35:58.645] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 11:35:58.646] [DEBUG] QUERY OK source="address" db=0.7ms idle=6.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` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:35:58.646] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 11:35:58.651] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 11:35:58.740] [DEBUG] QUERY OK db=87.4ms idle=6.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e0e5e0914c00727094e2c2f4a370e63d27b3b9fa1937866d27d27a37c75e2189", 5346, 932, ~U[2026-08-21 11:35:58Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:35:58], ~N[2026-08-21 11:35:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:35:58.740] [INFO ] AutoPushService: Created push log 49024 for MF919 params.zip [2026-08-21 11:35:58.740] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 5346, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:35:58.740] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:35:58.740] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 11:35:58.742] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=94.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 11:35:58.754] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 11:35:58.795] [DEBUG] QUERY OK db=39.3ms idle=16.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "9053c1b02a9cad7eb2be281f07f8bb744a26e136623a606c3db986e1ca4ba4e5", 325, 17947, ~U[2026-08-21 11:35:58Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:35:58], ~N[2026-08-21 11:35:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:35:58.795] [INFO ] AutoPushService: Created push log 49025 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:35:58.795] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 325, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:35:58.796] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:35:58.796] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 11:35:58.798] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=56.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-08-21 11:35:58.799] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 11:35:58.804] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=6.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:35:58.805] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 11:35:58.813] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:35:58.814] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:35:58.814] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:35:58.815] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=15.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:35:58.818] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:35:58.818] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 11:35:58.820] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:35:58.820] [INFO ] Terminal updated: 98250623730001 [2026-08-21 11:35:58.860] [DEBUG] QUERY OK source="tms_terminals" db=36.3ms queue=0.1ms idle=8.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:35:58], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:35:58.863] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=41.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-08-21 11:35:58.866] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms idle=2.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:35:58.872] [DEBUG] QUERY OK source="config_file_versions" db=1.9ms idle=7.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:35:58.872] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:35:58.946] [DEBUG] QUERY OK source="parameter_push_logs" db=72.8ms queue=0.1ms idle=6.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 [19, "application", ~N[2026-08-21 11:05:58]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:35:58.946] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:35:58.947] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 11:35:58.951] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=1.3ms idle=75.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:35:58.959] [DEBUG] QUERY OK source="config_file_versions" db=7.9ms idle=5.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:35:58.961] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:35:58.965] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=10.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-08-21 11:35:59.015] [DEBUG] QUERY OK source="tms_terminals" db=49.1ms idle=6.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:35:58], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:35:59.092] [DEBUG] QUERY OK db=75.1ms queue=0.5ms idle=53.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T02:45:23Z", ~N[2026-08-21 11:35:59], ~N[2026-08-21 11:35:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:35:59.094] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77791, oid: "organization_id", upload_time: "2026-08-21T02:45:23Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:59], updated_at: ~N[2026-08-21 11:35:59]} [2026-08-21 11:35:59.094] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:45:23Z", "value" => "online"} [2026-08-21 11:35:59.142] [DEBUG] QUERY OK db=48.0ms idle=79.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T02:45:23Z", "online", "status", 77791, ~N[2026-08-21 11:35:59], ~N[2026-08-21 11:35:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:59.143] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790661, itemkey: "status", value: "online", timestamp: "2026-08-21T02:45:23Z", message: "Terminal status update", status_log_id: 77791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:59], updated_at: ~N[2026-08-21 11:35:59]}} [2026-08-21 11:35:59.144] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 11:35:59.147] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:45:23Z", "value" => "51"} [2026-08-21 11:35:59.202] [DEBUG] QUERY OK db=55.3ms idle=54.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T02:45:23Z", "51", "battery", 77791, ~N[2026-08-21 11:35:59], ~N[2026-08-21 11:35:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:59.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790662, itemkey: "battery", value: "51", timestamp: "2026-08-21T02:45:23Z", message: "Battery level", status_log_id: 77791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:59], updated_at: ~N[2026-08-21 11:35:59]}} [2026-08-21 11:35:59.203] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:45:23Z", "value" => "online"} [2026-08-21 11:35:59.260] [DEBUG] QUERY OK db=57.0ms idle=18.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T02:45:23Z", "online", "network", 77791, ~N[2026-08-21 11:35:59], ~N[2026-08-21 11:35:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:59.261] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790663, itemkey: "network", value: "online", timestamp: "2026-08-21T02:45:23Z", message: "Network connectivity", status_log_id: 77791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:59], updated_at: ~N[2026-08-21 11:35:59]}} [2026-08-21 11:35:59.261] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 11:35:59.261] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:45:23Z", "value" => "0"} [2026-08-21 11:35:59.306] [DEBUG] QUERY OK db=44.4ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T02:45:23Z", "0", "cpu", 77791, ~N[2026-08-21 11:35:59], ~N[2026-08-21 11:35:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:59.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790664, itemkey: "cpu", value: "0", timestamp: "2026-08-21T02:45:23Z", message: "CPU usage percentage", status_log_id: 77791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:59], updated_at: ~N[2026-08-21 11:35:59]}} [2026-08-21 11:35:59.306] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:45:23Z", "value" => "1.0.0"} [2026-08-21 11:35:59.386] [DEBUG] QUERY OK db=79.3ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T02:45:23Z", "1.0.0", "parameter_config", 77791, ~N[2026-08-21 11:35:59], ~N[2026-08-21 11:35:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:59.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790665, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T02:45:23Z", message: "Current parameters version", status_log_id: 77791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:59], updated_at: ~N[2026-08-21 11:35:59]}} [2026-08-21 11:35:59.386] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:45:23Z", "value" => "1.0.1"} [2026-08-21 11:35:59.513] [DEBUG] QUERY OK db=125.9ms idle=80.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T02:45:23Z", "1.0.1", "emv_config", 77791, ~N[2026-08-21 11:35:59], ~N[2026-08-21 11:35:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:59.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790666, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T02:45:23Z", message: "Current EMV config version", status_log_id: 77791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:59], updated_at: ~N[2026-08-21 11:35:59]}} [2026-08-21 11:35:59.515] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:45:23Z", "value" => ""} [2026-08-21 11:35:59.557] [DEBUG] QUERY OK db=40.6ms queue=0.6ms idle=129.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T02:45:23Z", "keys_config", 77791, ~N[2026-08-21 11:35:59], ~N[2026-08-21 11:35:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:59.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790667, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T02:45:23Z", message: "Current keys config version", status_log_id: 77791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:59], updated_at: ~N[2026-08-21 11:35:59]}} [2026-08-21 11:35:59.557] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:45:23Z", "value" => "3.8.7.3"} [2026-08-21 11:35:59.643] [DEBUG] QUERY OK db=85.4ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T02:45:23Z", "3.8.7.3", "application", 77791, ~N[2026-08-21 11:35:59], ~N[2026-08-21 11:35:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:35:59.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790668, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T02:45:23Z", message: "Current application version", status_log_id: 77791, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:35:59], updated_at: ~N[2026-08-21 11:35:59]}} [2026-08-21 11:35:59.644] [WARN ] Unexpected async result [2026-08-21 11:35:59.644] [WARN ] Unexpected async result [2026-08-21 11:36:08.015] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:36:08.015] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T11:36:07Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T11:36:07Z","value":"55"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T11:36:07Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T11:36:07Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T11:36:07Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T11:36:07Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T11:36:07Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T11:36:07Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T11:36:07Z","vendor":"MoreFun"} [2026-08-21 11:36:08.015] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:36:07Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:36:07Z", "value" => "55"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:36:07Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:36:07Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:36:07Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:36:07Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:36:07Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:36:07Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:36:07Z", "vendor" => "MoreFun"} [2026-08-21 11:36:08.015] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:36:08.020] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:36:08.020] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 11:36:08.025] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms idle=735.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-08-21 11:36:08.031] [DEBUG] QUERY OK source="tms_terminals" db=5.9ms queue=0.1ms idle=46.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-08-21 11:36:08.039] [DEBUG] QUERY OK source="parameter_template_values" db=1.2ms queue=5.1ms idle=6.8ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:36:08.047] [DEBUG] QUERY OK source="parameter_definitions" db=3.6ms queue=1.5ms idle=10.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-08-21 11:36:08.055] [DEBUG] QUERY OK source="pos_terminal" db=7.1ms idle=9.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-08-21 11:36:08.090] [DEBUG] QUERY OK source="pos_merchant" db=33.8ms idle=8.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:36:08.100] [DEBUG] QUERY OK db=2.5ms queue=7.6ms idle=1113.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 ["626165170000000"] [2026-08-21 11:36:08.100] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:36:08.107] [DEBUG] QUERY OK source="pos_terminal_data" db=6.1ms queue=0.1ms idle=45.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 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:36:08.112] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 11:36:08.114] [DEBUG] QUERY OK source="address" db=1.5ms idle=22.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:36:08.114] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 11:36:08.119] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 11:36:08.164] [DEBUG] QUERY OK db=42.4ms queue=0.5ms idle=14.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "773f07688490cfd28158c208f7bd85826d9dc1cbcb1bd7b12edd0ae5a4dac167", 5410, 936, ~U[2026-08-21 11:36:08Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:36:08], ~N[2026-08-21 11:36:08]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:36:08.165] [INFO ] AutoPushService: Created push log 49026 for MF919 params.zip [2026-08-21 11:36:08.165] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 5410, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:36:08.165] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 11:36:08.165] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 11:36:08.168] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms idle=53.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-08-21 11:36:08.189] [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-08-21 11:36:08.241] [DEBUG] QUERY OK db=49.4ms idle=27.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3c9de2c3c754ebc3933ca3dce1de37b5fd6f98d4fc8a1218b39ff911f780dd37", 5474, 17947, ~U[2026-08-21 11:36:08Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:36:08], ~N[2026-08-21 11:36:08]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:36:08.241] [INFO ] AutoPushService: Created push log 49027 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:36:08.242] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 5474, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:36:08.242] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 11:36:08.242] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 11:36:08.247] [DEBUG] QUERY OK source="config_file_versions" db=5.1ms idle=73.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-08-21 11:36:08.247] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 11:36:08.253] [DEBUG] QUERY OK source="tms_terminals" db=5.7ms idle=6.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:36:08.254] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 11:36:08.270] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:36:08.271] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:36:08.271] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:36:08.273] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=1.3ms idle=23.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:36:08.273] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:36:08.273] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 11:36:08.280] [DEBUG] QUERY OK source="tms_terminals" db=6.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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:36:08.355] [DEBUG] QUERY OK source="tms_terminals" db=32.9ms queue=40.8ms idle=7.7ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 11:36:08], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 11:36:08.355] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:36:08.355] [INFO ] Event published: terminal_updated [2026-08-21 11:36:08.356] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 11:36:08.356] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 11:36:08.360] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 11:36:08.357] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms queue=0.9ms idle=60.5ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 11:36:08], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 11:36:08.365] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms idle=6.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 11:36:08.372] [DEBUG] QUERY OK source="terminal_group_rules" db=5.1ms idle=8.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 11:36:08.372] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 11:36:08.443] [DEBUG] QUERY OK source="tms_terminals" db=33.8ms queue=41.6ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 11:36:08], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:36:08.446] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms idle=73.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-08-21 11:36:08.453] [DEBUG] QUERY OK source="config_file_versions" db=4.7ms idle=3.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:36:08.461] [DEBUG] QUERY OK source="config_file_versions" db=3.0ms queue=0.3ms idle=10.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:36:08.461] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:36:08.517] [DEBUG] QUERY OK source="parameter_push_logs" db=46.1ms idle=19.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-08-21 11:06:08]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:36:08.517] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:36:08.522] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 11:36:08.526] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=61.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 11:36:08.556] [DEBUG] QUERY OK source="config_file_versions" db=30.0ms idle=9.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:36:08.557] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:36:08.569] [DEBUG] QUERY OK source="tms_terminals" db=5.3ms queue=0.1ms idle=38.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:36:08.665] [DEBUG] QUERY OK source="tms_terminals" db=51.5ms queue=43.3ms idle=13.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:36:08], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:36:08.718] [DEBUG] QUERY OK db=51.3ms queue=0.1ms idle=96.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T11:36:07Z", ~N[2026-08-21 11:36:08], ~N[2026-08-21 11:36:08]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:36:08.721] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77792, oid: "organization_id", upload_time: "2026-08-21T11:36:07Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:08], updated_at: ~N[2026-08-21 11:36:08]} [2026-08-21 11:36:08.721] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:36:07Z", "value" => "online"} [2026-08-21 11:36:08.766] [DEBUG] QUERY OK db=42.6ms idle=57.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T11:36:07Z", "online", "status", 77792, ~N[2026-08-21 11:36:08], ~N[2026-08-21 11:36:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:08.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790669, itemkey: "status", value: "online", timestamp: "2026-08-21T11:36:07Z", message: "Terminal status update", status_log_id: 77792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:08], updated_at: ~N[2026-08-21 11:36:08]}} [2026-08-21 11:36:08.773] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 11:36:08.773] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:36:07Z", "value" => "55"} [2026-08-21 11:36:08.823] [DEBUG] QUERY OK db=49.4ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T11:36:07Z", "55", "battery", 77792, ~N[2026-08-21 11:36:08], ~N[2026-08-21 11:36:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:08.831] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790670, itemkey: "battery", value: "55", timestamp: "2026-08-21T11:36:07Z", message: "Battery level", status_log_id: 77792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:08], updated_at: ~N[2026-08-21 11:36:08]}} [2026-08-21 11:36:08.831] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:36:07Z", "value" => "online"} [2026-08-21 11:36:08.879] [DEBUG] QUERY OK db=40.7ms queue=0.6ms idle=73.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T11:36:07Z", "online", "network", 77792, ~N[2026-08-21 11:36:08], ~N[2026-08-21 11:36:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:08.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790671, itemkey: "network", value: "online", timestamp: "2026-08-21T11:36:07Z", message: "Network connectivity", status_log_id: 77792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:08], updated_at: ~N[2026-08-21 11:36:08]}} [2026-08-21 11:36:08.886] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 11:36:08.886] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:36:07Z", "value" => "0"} [2026-08-21 11:36:08.965] [DEBUG] QUERY OK db=78.5ms idle=64.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T11:36:07Z", "0", "cpu", 77792, ~N[2026-08-21 11:36:08], ~N[2026-08-21 11:36:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:08.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790672, itemkey: "cpu", value: "0", timestamp: "2026-08-21T11:36:07Z", message: "CPU usage percentage", status_log_id: 77792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:08], updated_at: ~N[2026-08-21 11:36:08]}} [2026-08-21 11:36:08.966] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:36:07Z", "value" => "1.0.0"} [2026-08-21 11:36:09.038] [DEBUG] QUERY OK db=71.4ms idle=87.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T11:36:07Z", "1.0.0", "parameter_config", 77792, ~N[2026-08-21 11:36:08], ~N[2026-08-21 11:36:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:09.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790673, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T11:36:07Z", message: "Current parameters version", status_log_id: 77792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:08], updated_at: ~N[2026-08-21 11:36:08]}} [2026-08-21 11:36:09.038] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:36:07Z", "value" => "1.0.1"} [2026-08-21 11:36:09.094] [DEBUG] QUERY OK db=55.6ms idle=73.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T11:36:07Z", "1.0.1", "emv_config", 77792, ~N[2026-08-21 11:36:09], ~N[2026-08-21 11:36:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:09.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790674, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T11:36:07Z", message: "Current EMV config version", status_log_id: 77792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:09], updated_at: ~N[2026-08-21 11:36:09]}} [2026-08-21 11:36:09.095] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:36:07Z", "value" => ""} [2026-08-21 11:36:09.152] [DEBUG] QUERY OK db=57.1ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T11:36:07Z", "keys_config", 77792, ~N[2026-08-21 11:36:09], ~N[2026-08-21 11:36:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:09.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790675, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T11:36:07Z", message: "Current keys config version", status_log_id: 77792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:09], updated_at: ~N[2026-08-21 11:36:09]}} [2026-08-21 11:36:09.156] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:36:07Z", "value" => "3.8.7.3"} [2026-08-21 11:36:09.220] [DEBUG] QUERY OK db=63.6ms idle=61.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T11:36:07Z", "3.8.7.3", "application", 77792, ~N[2026-08-21 11:36:09], ~N[2026-08-21 11:36:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:09.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790676, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T11:36:07Z", message: "Current application version", status_log_id: 77792, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:09], updated_at: ~N[2026-08-21 11:36:09]}} [2026-08-21 11:36:09.220] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T11:36:08Z"} [2026-08-21 11:36:09.223] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T11:36:08Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 34, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 11:36:15.567] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:36:15.567] [INFO ] Incoming JSON payload: {"oid":"2cc0c20c-36c8-4fed-b469-77b133adbf21","sn":"98251226730001","uploadTime":"2026-08-21T11:36:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:36:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:36:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:36:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:36:15Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-08-21T11:36:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:36:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:36:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:36:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:36:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:36:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:36:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:36:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:36:15Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:36:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:36: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:36:15.572] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2cc0c20c-36c8-4fed-b469-77b133adbf21", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:36:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:36:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:36:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:36:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:36:15Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:36:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:36:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:36:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:36:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:36:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:36:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:36:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:36:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:36:15Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:36:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:36: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:36:15Z", "vendor" => "morefun"} [2026-08-21 11:36:15.573] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:36:15.573] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:36:15.574] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:36:15.577] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=1257.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-08-21 11:36:15.588] [DEBUG] QUERY OK source="parameter_templates" db=4.2ms idle=264.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-08-21 11:36:15.588] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:36:15.591] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=11.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:36:15.658] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms queue=42.2ms idle=3.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 11:36:15], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 11:36:15.658] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:36:15.659] [INFO ] Event published: terminal_updated [2026-08-21 11:36:15.659] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 11:36:15.660] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms queue=0.1ms idle=68.3ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 11:36:15], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 11:36:15.659] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 11:36:15.660] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 11:36:15.668] [DEBUG] QUERY OK source="tms_terminals" db=7.9ms idle=0.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 11:36:15.672] [DEBUG] QUERY OK source="terminal_group_rules" db=3.0ms idle=0.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 11:36:15.672] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 11:36:15.742] [DEBUG] QUERY OK source="tms_terminals" db=40.5ms queue=41.3ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 11:36:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:36:15.742] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:36:15.745] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=71.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:36:15.810] [DEBUG] QUERY OK source="tms_terminals" db=23.5ms queue=41.6ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:36:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:36:15.855] [DEBUG] QUERY OK db=44.4ms idle=65.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2cc0c20c-36c8-4fed-b469-77b133adbf21", "2026-08-21T11:36:15Z", ~N[2026-08-21 11:36:15], ~N[2026-08-21 11:36:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:36:15.855] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77793, oid: "2cc0c20c-36c8-4fed-b469-77b133adbf21", upload_time: "2026-08-21T11:36:15Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:15], updated_at: ~N[2026-08-21 11:36:15]} [2026-08-21 11:36:15.856] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:36:15Z", "value" => "morefun"} [2026-08-21 11:36:15.924] [DEBUG] QUERY OK db=65.3ms queue=2.2ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:15Z", "morefun", "vendor", 77793, ~N[2026-08-21 11:36:15], ~N[2026-08-21 11:36:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:15.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790677, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:15], updated_at: ~N[2026-08-21 11:36:15]}} [2026-08-21 11:36:15.924] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:36:15Z", "value" => "kiosk_launcher"} [2026-08-21 11:36:15.979] [DEBUG] QUERY OK db=47.9ms queue=6.5ms idle=69.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:15Z", "kiosk_launcher", "model", 77793, ~N[2026-08-21 11:36:15], ~N[2026-08-21 11:36:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:15.987] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790678, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:15], updated_at: ~N[2026-08-21 11:36:15]}} [2026-08-21 11:36:15.990] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:36:15Z", "value" => "1.0"} [2026-08-21 11:36:16.041] [DEBUG] QUERY OK db=48.6ms queue=1.6ms idle=67.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:15Z", "1.0", "app_version", 77793, ~N[2026-08-21 11:36:15], ~N[2026-08-21 11:36:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790679, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:15], updated_at: ~N[2026-08-21 11:36:15]}} [2026-08-21 11:36:16.042] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:36:15Z", "value" => "13"} [2026-08-21 11:36:16.069] [DEBUG] QUERY OK db=24.6ms queue=0.1ms idle=65.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:15Z", "13", "android_version", 77793, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.070] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790680, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.070] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:36:15Z", "value" => "917"} [2026-08-21 11:36:16.138] [DEBUG] QUERY OK db=68.1ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:15Z", "917", "ram_free_mb", 77793, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.139] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790681, itemkey: "ram_free_mb", value: "917", timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.139] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:36:15Z", "value" => "WIFI"} [2026-08-21 11:36:16.190] [DEBUG] QUERY OK db=51.3ms idle=69.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:15Z", "WIFI", "network_type", 77793, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790682, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.191] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:36:15Z", "value" => "true"} [2026-08-21 11:36:16.232] [DEBUG] QUERY OK db=40.8ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:15Z", "true", "kiosk_active", 77793, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790683, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.233] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:36:15Z", "value" => ""} [2026-08-21 11:36:16.253] [DEBUG] QUERY OK db=20.0ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:36:15Z", "sim_operator", 77793, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790684, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.255] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:36:15Z", "value" => "UNKNOWN"} [2026-08-21 11:36:16.305] [DEBUG] QUERY OK db=40.6ms queue=9.1ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:15Z", "UNKNOWN", "sim_number", 77793, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790685, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.305] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:36:15Z", "value" => "UNKNOWN"} [2026-08-21 11:36:16.330] [DEBUG] QUERY OK db=22.0ms queue=0.2ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:15Z", "UNKNOWN", "sim_iccid", 77793, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.330] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790686, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.330] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:36:15Z", "value" => "UNKNOWN"} [2026-08-21 11:36:16.363] [DEBUG] QUERY OK db=31.1ms idle=7.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:15Z", "UNKNOWN", "sim_imsi", 77793, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.364] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790687, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.364] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:36:15Z", "value" => "UNKNOWN"} [2026-08-21 11:36:16.410] [DEBUG] QUERY OK db=46.0ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:15Z", "UNKNOWN", "sim_iccid2", 77793, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790688, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.410] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:36:15Z", "value" => "UNKNOWN"} [2026-08-21 11:36:16.472] [DEBUG] QUERY OK db=61.0ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:15Z", "UNKNOWN", "sim_imsi2", 77793, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790689, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.473] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:36:15Z", "value" => "34"} [2026-08-21 11:36:16.497] [DEBUG] QUERY OK db=23.8ms idle=62.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:15Z", "34", "data_usage_mb", 77793, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790690, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.498] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:36:15Z", "value" => "0"} [2026-08-21 11:36:16.555] [DEBUG] QUERY OK db=55.9ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:15Z", "0", "mobile_data_mb", 77793, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790691, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.556] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:36: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:36:16.625] [DEBUG] QUERY OK db=68.2ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77793, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790692, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:36:15Z", message: nil, status_log_id: 77793, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.627] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:36:16.627] [INFO ] Incoming JSON payload: {"oid":"c5a9c8b6-5924-4285-a50f-82476d7a9c34","sn":"98251226730002","uploadTime":"2026-08-21T11:35:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"ram_free_mb","value":"999","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:35:42Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:36:16.639] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c5a9c8b6-5924-4285-a50f-82476d7a9c34", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:35:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:35:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:35:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:35:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:35:42Z", "value" => "999"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:35:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:35:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:35:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:35:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:35:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:35:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:35:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:35:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:35:42Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:35:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:35:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:35:42Z", "vendor" => "morefun"} [2026-08-21 11:36:16.642] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:36:16.643] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:36:16.643] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:36:16.648] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=90.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-08-21 11:36:16.651] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=24.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-08-21 11:36:16.651] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:36:16.656] [DEBUG] QUERY OK source="tms_terminals" db=4.5ms idle=2.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:36:16.660] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:36:16.736] [DEBUG] QUERY OK source="tms_terminals" db=75.8ms idle=9.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:36:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:36:16.736] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:36:16.738] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=80.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:36:16.798] [DEBUG] QUERY OK source="tms_terminals" db=58.6ms queue=1.0ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:36:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:36:16.862] [DEBUG] QUERY OK db=64.0ms idle=60.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "c5a9c8b6-5924-4285-a50f-82476d7a9c34", "2026-08-21T11:35:42Z", ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:36:16.862] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77794, oid: "c5a9c8b6-5924-4285-a50f-82476d7a9c34", upload_time: "2026-08-21T11:35:42Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]} [2026-08-21 11:36:16.865] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:35:42Z", "value" => "morefun"} [2026-08-21 11:36:16.926] [DEBUG] QUERY OK db=60.6ms idle=67.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "morefun", "vendor", 77794, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790693, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.927] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:35:42Z", "value" => "kiosk_launcher"} [2026-08-21 11:36:16.987] [DEBUG] QUERY OK db=59.7ms idle=64.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "kiosk_launcher", "model", 77794, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:16.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790694, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:16.989] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:35:42Z", "value" => "1.0"} [2026-08-21 11:36:17.020] [DEBUG] QUERY OK db=30.5ms idle=63.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "1.0", "app_version", 77794, ~N[2026-08-21 11:36:16], ~N[2026-08-21 11:36:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:17.020] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790695, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:16], updated_at: ~N[2026-08-21 11:36:16]}} [2026-08-21 11:36:17.021] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:35:42Z", "value" => "13"} [2026-08-21 11:36:17.049] [DEBUG] QUERY OK db=24.4ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "13", "android_version", 77794, ~N[2026-08-21 11:36:17], ~N[2026-08-21 11:36:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:17.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790696, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:17], updated_at: ~N[2026-08-21 11:36:17]}} [2026-08-21 11:36:17.051] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:35:42Z", "value" => "999"} [2026-08-21 11:36:17.100] [DEBUG] QUERY OK db=48.5ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "999", "ram_free_mb", 77794, ~N[2026-08-21 11:36:17], ~N[2026-08-21 11:36:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:17.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790697, itemkey: "ram_free_mb", value: "999", timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:17], updated_at: ~N[2026-08-21 11:36:17]}} [2026-08-21 11:36:17.100] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:35:42Z", "value" => "WIFI"} [2026-08-21 11:36:17.126] [DEBUG] QUERY OK db=25.7ms idle=51.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "WIFI", "network_type", 77794, ~N[2026-08-21 11:36:17], ~N[2026-08-21 11:36:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:17.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790698, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:17], updated_at: ~N[2026-08-21 11:36:17]}} [2026-08-21 11:36:17.128] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:35:42Z", "value" => "true"} [2026-08-21 11:36:17.183] [DEBUG] QUERY OK db=54.1ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "true", "kiosk_active", 77794, ~N[2026-08-21 11:36:17], ~N[2026-08-21 11:36:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:17.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790699, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:17], updated_at: ~N[2026-08-21 11:36:17]}} [2026-08-21 11:36:17.184] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:35:42Z", "value" => ""} [2026-08-21 11:36:17.238] [DEBUG] QUERY OK db=53.5ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:35:42Z", "sim_operator", 77794, ~N[2026-08-21 11:36:17], ~N[2026-08-21 11:36:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:17.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790700, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:17], updated_at: ~N[2026-08-21 11:36:17]}} [2026-08-21 11:36:17.240] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:35:42Z", "value" => "UNKNOWN"} [2026-08-21 11:36:17.298] [DEBUG] QUERY OK db=58.1ms idle=57.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "UNKNOWN", "sim_number", 77794, ~N[2026-08-21 11:36:17], ~N[2026-08-21 11:36:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:17.298] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790701, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:17], updated_at: ~N[2026-08-21 11:36:17]}} [2026-08-21 11:36:17.298] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:35:42Z", "value" => "UNKNOWN"} [2026-08-21 11:36:17.323] [DEBUG] QUERY OK db=24.6ms idle=61.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "UNKNOWN", "sim_iccid", 77794, ~N[2026-08-21 11:36:17], ~N[2026-08-21 11:36:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:17.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790702, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:17], updated_at: ~N[2026-08-21 11:36:17]}} [2026-08-21 11:36:17.324] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:35:42Z", "value" => "UNKNOWN"} [2026-08-21 11:36:17.366] [DEBUG] QUERY OK db=41.3ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "UNKNOWN", "sim_imsi", 77794, ~N[2026-08-21 11:36:17], ~N[2026-08-21 11:36:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:17.366] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790703, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:17], updated_at: ~N[2026-08-21 11:36:17]}} [2026-08-21 11:36:17.366] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:35:42Z", "value" => "UNKNOWN"} [2026-08-21 11:36:17.416] [DEBUG] QUERY OK db=50.0ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "UNKNOWN", "sim_iccid2", 77794, ~N[2026-08-21 11:36:17], ~N[2026-08-21 11:36:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:17.417] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790704, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:17], updated_at: ~N[2026-08-21 11:36:17]}} [2026-08-21 11:36:17.417] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:35:42Z", "value" => "UNKNOWN"} [2026-08-21 11:36:17.496] [DEBUG] QUERY OK db=78.5ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "UNKNOWN", "sim_imsi2", 77794, ~N[2026-08-21 11:36:17], ~N[2026-08-21 11:36:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:17.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790705, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:17], updated_at: ~N[2026-08-21 11:36:17]}} [2026-08-21 11:36:17.497] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:35:42Z", "value" => "1"} [2026-08-21 11:36:17.543] [DEBUG] QUERY OK db=45.8ms idle=80.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "1", "data_usage_mb", 77794, ~N[2026-08-21 11:36:17], ~N[2026-08-21 11:36:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:17.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790706, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:17], updated_at: ~N[2026-08-21 11:36:17]}} [2026-08-21 11:36:17.545] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:35:42Z", "value" => "0"} [2026-08-21 11:36:17.596] [DEBUG] QUERY OK db=50.5ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "0", "mobile_data_mb", 77794, ~N[2026-08-21 11:36:17], ~N[2026-08-21 11:36:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:17.596] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790707, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:17], updated_at: ~N[2026-08-21 11:36:17]}} [2026-08-21 11:36:17.597] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:35:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:36:17.634] [DEBUG] QUERY OK db=32.6ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:35:42Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77794, ~N[2026-08-21 11:36:17], ~N[2026-08-21 11:36:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:17.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790708, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:35:42Z", message: nil, status_log_id: 77794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:17], updated_at: ~N[2026-08-21 11:36:17]}} [2026-08-21 11:36:28.576] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T11:36:08Z"} [2026-08-21 11:36:28.577] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T11:36:08Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 35, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 11:36:45.671] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:36:45.671] [INFO ] Incoming JSON payload: {"oid":"15553fbb-25d6-496d-a9a4-acc98b5c7c6d","sn":"98251226730001","uploadTime":"2026-08-21T11:36:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"ram_free_mb","value":"926","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:36:45Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:36:45.673] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "15553fbb-25d6-496d-a9a4-acc98b5c7c6d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:36:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:36:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:36:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:36:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:36:45Z", "value" => "926"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:36:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:36:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:36:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:36:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:36:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:36:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:36:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:36:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:36:45Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:36:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:36:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:36:45Z", "vendor" => "morefun"} [2026-08-21 11:36:45.673] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:36:45.676] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:36:45.676] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:36:45.678] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=693.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-08-21 11:36:45.681] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=239.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-08-21 11:36:45.681] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:36:45.693] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=8.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:36:45.694] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:36:45.733] [DEBUG] QUERY OK source="tms_terminals" db=39.1ms idle=12.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:36:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:36:45.733] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:36:45.736] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms queue=0.1ms idle=43.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:36:45.770] [DEBUG] QUERY OK source="tms_terminals" db=32.8ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:36:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:36:45.798] [DEBUG] QUERY OK db=27.2ms idle=35.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "15553fbb-25d6-496d-a9a4-acc98b5c7c6d", "2026-08-21T11:36:45Z", ~N[2026-08-21 11:36:45], ~N[2026-08-21 11:36:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:36:45.799] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77795, oid: "15553fbb-25d6-496d-a9a4-acc98b5c7c6d", upload_time: "2026-08-21T11:36:45Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:45], updated_at: ~N[2026-08-21 11:36:45]} [2026-08-21 11:36:45.800] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:36:45Z", "value" => "morefun"} [2026-08-21 11:36:45.872] [DEBUG] QUERY OK db=71.4ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "morefun", "vendor", 77795, ~N[2026-08-21 11:36:45], ~N[2026-08-21 11:36:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:45.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790709, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:45], updated_at: ~N[2026-08-21 11:36:45]}} [2026-08-21 11:36:45.872] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:36:45Z", "value" => "kiosk_launcher"} [2026-08-21 11:36:45.937] [DEBUG] QUERY OK db=63.6ms queue=1.2ms idle=74.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "kiosk_launcher", "model", 77795, ~N[2026-08-21 11:36:45], ~N[2026-08-21 11:36:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:45.937] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790710, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:45], updated_at: ~N[2026-08-21 11:36:45]}} [2026-08-21 11:36:45.938] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:36:45Z", "value" => "1.0"} [2026-08-21 11:36:45.970] [DEBUG] QUERY OK db=31.9ms queue=0.1ms idle=66.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "1.0", "app_version", 77795, ~N[2026-08-21 11:36:45], ~N[2026-08-21 11:36:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:45.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790711, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:45], updated_at: ~N[2026-08-21 11:36:45]}} [2026-08-21 11:36:45.970] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:36:45Z", "value" => "13"} [2026-08-21 11:36:46.008] [DEBUG] QUERY OK db=30.2ms queue=6.7ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "13", "android_version", 77795, ~N[2026-08-21 11:36:45], ~N[2026-08-21 11:36:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790712, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:45], updated_at: ~N[2026-08-21 11:36:45]}} [2026-08-21 11:36:46.008] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:36:45Z", "value" => "926"} [2026-08-21 11:36:46.075] [DEBUG] QUERY OK db=66.3ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "926", "ram_free_mb", 77795, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.077] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790713, itemkey: "ram_free_mb", value: "926", timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.079] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:36:45Z", "value" => "WIFI"} [2026-08-21 11:36:46.162] [DEBUG] QUERY OK db=83.4ms idle=71.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "WIFI", "network_type", 77795, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.163] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790714, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.163] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:36:45Z", "value" => "true"} [2026-08-21 11:36:46.208] [DEBUG] QUERY OK db=44.3ms idle=88.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "true", "kiosk_active", 77795, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790715, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.208] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:36:45Z", "value" => ""} [2026-08-21 11:36:46.254] [DEBUG] QUERY OK db=44.2ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:36:45Z", "sim_operator", 77795, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.254] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790716, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.254] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:36:45Z", "value" => "UNKNOWN"} [2026-08-21 11:36:46.305] [DEBUG] QUERY OK db=50.5ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "UNKNOWN", "sim_number", 77795, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790717, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.305] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:36:45Z", "value" => "UNKNOWN"} [2026-08-21 11:36:46.374] [DEBUG] QUERY OK db=67.8ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "UNKNOWN", "sim_iccid", 77795, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.374] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790718, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.374] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:36:45Z", "value" => "UNKNOWN"} [2026-08-21 11:36:46.430] [DEBUG] QUERY OK db=55.3ms idle=69.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "UNKNOWN", "sim_imsi", 77795, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790719, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.430] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:36:45Z", "value" => "UNKNOWN"} [2026-08-21 11:36:46.500] [DEBUG] QUERY OK db=68.8ms idle=57.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "UNKNOWN", "sim_iccid2", 77795, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790720, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.501] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:36:45Z", "value" => "UNKNOWN"} [2026-08-21 11:36:46.531] [DEBUG] QUERY OK db=29.3ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "UNKNOWN", "sim_imsi2", 77795, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790721, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.531] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:36:45Z", "value" => "34"} [2026-08-21 11:36:46.562] [DEBUG] QUERY OK db=30.3ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "34", "data_usage_mb", 77795, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.562] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790722, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.562] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:36:45Z", "value" => "0"} [2026-08-21 11:36:46.605] [DEBUG] QUERY OK db=42.1ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "0", "mobile_data_mb", 77795, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.605] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790723, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.606] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:36:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:36:46.647] [DEBUG] QUERY OK db=39.9ms queue=0.1ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:45Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77795, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.648] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790724, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:36:45Z", message: nil, status_log_id: 77795, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.648] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:36:46.649] [INFO ] Incoming JSON payload: {"oid":"4f6c9eb0-7ff8-4ac7-822d-6d889def5dea","sn":"98251226730002","uploadTime":"2026-08-21T11:36:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"ram_free_mb","value":"996","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:36:12Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:36:46.650] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4f6c9eb0-7ff8-4ac7-822d-6d889def5dea", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:36:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:36:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:36:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:36:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:36:12Z", "value" => "996"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:36:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:36:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:36:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:36:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:36:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:36:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:36:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:36:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:36:12Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:36:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:36:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:36:12Z", "vendor" => "morefun"} [2026-08-21 11:36:46.651] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:36:46.651] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:36:46.651] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:36:46.652] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=46.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-08-21 11:36:46.657] [DEBUG] QUERY OK source="parameter_templates" db=4.0ms idle=6.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-08-21 11:36:46.659] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:36:46.662] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=2.3ms idle=6.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:36:46.663] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:36:46.707] [DEBUG] QUERY OK source="tms_terminals" db=44.0ms idle=6.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:36:46], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:36:46.707] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:36:46.710] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=46.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:36:46.748] [DEBUG] QUERY OK source="tms_terminals" db=38.2ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:36:46], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:36:46.792] [DEBUG] QUERY OK db=43.2ms idle=38.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "4f6c9eb0-7ff8-4ac7-822d-6d889def5dea", "2026-08-21T11:36:12Z", ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:36:46.792] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77796, oid: "4f6c9eb0-7ff8-4ac7-822d-6d889def5dea", upload_time: "2026-08-21T11:36:12Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]} [2026-08-21 11:36:46.798] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:36:12Z", "value" => "morefun"} [2026-08-21 11:36:46.842] [DEBUG] QUERY OK db=43.9ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:12Z", "morefun", "vendor", 77796, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.842] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790725, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.843] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:36:12Z", "value" => "kiosk_launcher"} [2026-08-21 11:36:46.881] [DEBUG] QUERY OK db=36.9ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:12Z", "kiosk_launcher", "model", 77796, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790726, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.883] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:36:12Z", "value" => "1.0"} [2026-08-21 11:36:46.935] [DEBUG] QUERY OK db=50.6ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:12Z", "1.0", "app_version", 77796, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.935] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790727, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.935] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:36:12Z", "value" => "13"} [2026-08-21 11:36:46.965] [DEBUG] QUERY OK db=29.9ms idle=55.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:12Z", "13", "android_version", 77796, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790728, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.966] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:36:12Z", "value" => "996"} [2026-08-21 11:36:46.996] [DEBUG] QUERY OK db=29.6ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:12Z", "996", "ram_free_mb", 77796, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:46.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790729, itemkey: "ram_free_mb", value: "996", timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:46.998] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:36:12Z", "value" => "WIFI"} [2026-08-21 11:36:47.031] [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-08-21T11:36:12Z", "WIFI", "network_type", 77796, ~N[2026-08-21 11:36:46], ~N[2026-08-21 11:36:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:47.031] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790730, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:46], updated_at: ~N[2026-08-21 11:36:46]}} [2026-08-21 11:36:47.031] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:36:12Z", "value" => "true"} [2026-08-21 11:36:47.098] [DEBUG] QUERY OK db=54.0ms queue=4.9ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:12Z", "true", "kiosk_active", 77796, ~N[2026-08-21 11:36:47], ~N[2026-08-21 11:36:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:47.098] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790731, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:47], updated_at: ~N[2026-08-21 11:36:47]}} [2026-08-21 11:36:47.098] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:36:12Z", "value" => ""} [2026-08-21 11:36:47.155] [DEBUG] QUERY OK db=56.1ms idle=67.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:36:12Z", "sim_operator", 77796, ~N[2026-08-21 11:36:47], ~N[2026-08-21 11:36:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:47.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790732, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:47], updated_at: ~N[2026-08-21 11:36:47]}} [2026-08-21 11:36:47.155] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:36:12Z", "value" => "UNKNOWN"} [2026-08-21 11:36:47.213] [DEBUG] QUERY OK db=57.1ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:12Z", "UNKNOWN", "sim_number", 77796, ~N[2026-08-21 11:36:47], ~N[2026-08-21 11:36:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:47.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790733, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:47], updated_at: ~N[2026-08-21 11:36:47]}} [2026-08-21 11:36:47.214] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:36:12Z", "value" => "UNKNOWN"} [2026-08-21 11:36:47.279] [DEBUG] QUERY OK db=64.7ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:12Z", "UNKNOWN", "sim_iccid", 77796, ~N[2026-08-21 11:36:47], ~N[2026-08-21 11:36:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:47.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790734, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:47], updated_at: ~N[2026-08-21 11:36:47]}} [2026-08-21 11:36:47.279] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:36:12Z", "value" => "UNKNOWN"} [2026-08-21 11:36:47.350] [DEBUG] QUERY OK db=67.6ms queue=1.1ms idle=68.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:12Z", "UNKNOWN", "sim_imsi", 77796, ~N[2026-08-21 11:36:47], ~N[2026-08-21 11:36:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:47.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790735, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:47], updated_at: ~N[2026-08-21 11:36:47]}} [2026-08-21 11:36:47.350] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:36:12Z", "value" => "UNKNOWN"} [2026-08-21 11:36:47.411] [DEBUG] QUERY OK db=60.7ms idle=71.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:12Z", "UNKNOWN", "sim_iccid2", 77796, ~N[2026-08-21 11:36:47], ~N[2026-08-21 11:36:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:47.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790736, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:47], updated_at: ~N[2026-08-21 11:36:47]}} [2026-08-21 11:36:47.412] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:36:12Z", "value" => "UNKNOWN"} [2026-08-21 11:36:47.449] [DEBUG] QUERY OK db=36.7ms idle=62.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:12Z", "UNKNOWN", "sim_imsi2", 77796, ~N[2026-08-21 11:36:47], ~N[2026-08-21 11:36:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:47.449] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790737, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:47], updated_at: ~N[2026-08-21 11:36:47]}} [2026-08-21 11:36:47.449] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:36:12Z", "value" => "1"} [2026-08-21 11:36:47.503] [DEBUG] QUERY OK db=53.1ms idle=0.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:12Z", "1", "data_usage_mb", 77796, ~N[2026-08-21 11:36:47], ~N[2026-08-21 11:36:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:47.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790738, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:47], updated_at: ~N[2026-08-21 11:36:47]}} [2026-08-21 11:36:47.505] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:36:12Z", "value" => "0"} [2026-08-21 11:36:47.542] [DEBUG] QUERY OK db=36.6ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:12Z", "0", "mobile_data_mb", 77796, ~N[2026-08-21 11:36:47], ~N[2026-08-21 11:36:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:47.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790739, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:47], updated_at: ~N[2026-08-21 11:36:47]}} [2026-08-21 11:36:47.545] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:36:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:36:47.589] [DEBUG] QUERY OK db=42.9ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:12Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77796, ~N[2026-08-21 11:36:47], ~N[2026-08-21 11:36:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:36:47.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790740, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:36:12Z", message: nil, status_log_id: 77796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:36:47], updated_at: ~N[2026-08-21 11:36:47]}} [2026-08-21 11:37:04.437] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 11:37:04.437] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"-4539837-08-10T20:10:06Z","org.device":[{"itemkey":"status","value":"offline","timestamp":"-4539837-08-10T20:10:06Z","message":"Connection reset - reconnecting"}]} [2026-08-21 11:37:04.439] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Connection reset - reconnecting", "timestamp" => "-4539837-08-10T20:10:06Z", "value" => "offline"}], "sn" => "61250415798001", "uploadTime" => "-4539837-08-10T20:10:06Z"} [2026-08-21 11:37:04.439] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:37:04.442] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=902.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:37:04.442] [INFO ] Terminal updated: 61250415798001 [2026-08-21 11:37:04.490] [DEBUG] QUERY OK source="tms_terminals" db=46.1ms idle=442.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:37:04], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:37:04.494] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms queue=1.2ms 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 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:37:04.526] [DEBUG] QUERY OK source="tms_terminals" db=31.5ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:37:04], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:37:04.566] [DEBUG] QUERY OK db=38.9ms idle=32.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "-4539837-08-10T20:10:06Z", ~N[2026-08-21 11:37:04], ~N[2026-08-21 11:37:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:37:04.566] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77797, oid: "org-id-placeholder", upload_time: "-4539837-08-10T20:10:06Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:04], updated_at: ~N[2026-08-21 11:37:04]} [2026-08-21 11:37:04.566] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Connection reset - reconnecting", "timestamp" => "-4539837-08-10T20:10:06Z", "value" => "offline"} [2026-08-21 11:37:04.600] [DEBUG] QUERY OK db=33.0ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Connection reset - reconnecting", "-4539837-08-10T20:10:06Z", "offline", "status", 77797, ~N[2026-08-21 11:37:04], ~N[2026-08-21 11:37:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:04.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790741, itemkey: "status", value: "offline", timestamp: "-4539837-08-10T20:10:06Z", message: "Connection reset - reconnecting", status_log_id: 77797, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:04], updated_at: ~N[2026-08-21 11:37:04]}} [2026-08-21 11:37:04.600] [INFO ] Setting terminal 61250415798001 status to 'offline' from status itemkey [2026-08-21 11:37:04.625] [INFO ] Running offline device check... [2026-08-21 11:37:04.626] [INFO ] Starting offline device check... [2026-08-21 11:37:04.634] [DEBUG] QUERY OK source="tms_terminals" db=33.0ms idle=34.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["offline", ~N[2026-08-21 11:37:04], 1] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:161 [2026-08-21 11:37:04.633] [DEBUG] QUERY OK source="tms_terminals" db=6.0ms 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 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:747 [2026-08-21 11:37:04.642] [DEBUG] QUERY OK source="tms_terminals" db=8.1ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["offline", ~N[2026-08-21 11:37:04], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-08-21 11:37:04.657] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.4ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.681] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=23.2ms 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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.688] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms queue=0.3ms idle=24.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.694] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=8.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.696] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.698] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms 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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.701] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.705] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.707] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.712] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms queue=0.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.729] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.4ms decode=0.8ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.732] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=17.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:37:04.760] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=27.2ms decode=0.3ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.778] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.5ms idle=28.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:37:04.787] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms queue=0.1ms idle=22.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:37:04.788] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=9.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.791] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms 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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.836] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=43.9ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.845] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=49.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:37:04.849] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms queue=0.7ms idle=9.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.860] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.6ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.871] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms queue=0.1ms idle=17.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:37:04.880] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.0ms 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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.937] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=55.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.938] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=58.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:37:04.939] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.951] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.953] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=12.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.956] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.959] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.961] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.967] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.970] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms queue=0.1ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.972] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.975] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.978] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.985] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:04.997] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.3ms idle=16.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:37:05.003] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=17.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:05.009] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:05.010] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=5.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:05.014] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:05.023] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.3ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:05.025] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms 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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:05.027] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:05.032] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:05.034] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=6.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:05.036] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:05.036] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:05.037] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:05.038] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:05.039] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:37:05.039] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 11:37:05.039] [INFO ] Offline device check completed successfully [2026-08-21 11:37:08.962] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 11:37:08.962] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"-5132017-05-23T16:21:54Z","org.device":[{"itemkey":"status","value":"online","timestamp":"-5132017-05-23T16:21:54Z","message":"Device Connected"}]} [2026-08-21 11:37:08.965] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-5132017-05-23T16:21:54Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "-5132017-05-23T16:21:54Z"} [2026-08-21 11:37:08.965] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:37:08.968] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=1402.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:37:08.968] [INFO ] Terminal updated: 61250415798001 [2026-08-21 11:37:09.013] [DEBUG] QUERY OK source="tms_terminals" db=44.2ms idle=400.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:37:08], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:37:09.015] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=45.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:37:09.047] [DEBUG] QUERY OK source="tms_terminals" db=32.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:37:09], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:37:09.142] [DEBUG] QUERY OK db=93.9ms queue=0.1ms idle=32.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "-5132017-05-23T16:21:54Z", ~N[2026-08-21 11:37:09], ~N[2026-08-21 11:37:09]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:37:09.142] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77798, oid: "org-id-placeholder", upload_time: "-5132017-05-23T16:21:54Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:09], updated_at: ~N[2026-08-21 11:37:09]} [2026-08-21 11:37:09.145] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-5132017-05-23T16:21:54Z", "value" => "online"} [2026-08-21 11:37:09.188] [DEBUG] QUERY OK db=38.6ms idle=102.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "-5132017-05-23T16:21:54Z", "online", "status", 77798, ~N[2026-08-21 11:37:09], ~N[2026-08-21 11:37:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:09.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790742, itemkey: "status", value: "online", timestamp: "-5132017-05-23T16:21:54Z", message: "Device Connected", status_log_id: 77798, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:09], updated_at: ~N[2026-08-21 11:37:09]}} [2026-08-21 11:37:09.192] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-08-21 11:37:09.195] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.3ms idle=51.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:37:09], 1] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-08-21 11:37:09.196] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=6.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:37:09], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-08-21 11:37:15.794] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:37:15.794] [INFO ] Incoming JSON payload: {"oid":"0346bc29-59d9-42b1-afee-d08b4654454b","sn":"98251226730001","uploadTime":"2026-08-21T11:37:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:37:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:37:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:37:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:37:15Z"},{"itemkey":"ram_free_mb","value":"924","timestamp":"2026-08-21T11:37:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:37:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:37:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:37:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:37:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:37:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:37:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:37:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:37:15Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:37:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:37: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:37:15.796] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0346bc29-59d9-42b1-afee-d08b4654454b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:37:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:37:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:37:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:37:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:37:15Z", "value" => "924"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:37:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:37:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:37:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:37:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:37:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:37:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:37:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:37:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:37:15Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:37:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:37: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:37:15Z", "vendor" => "morefun"} [2026-08-21 11:37:15.798] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:37:15.798] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:37:15.798] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:37:15.800] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=802.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-08-21 11:37:15.802] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=196.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-08-21 11:37:15.802] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:37:15.803] [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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:37:15.803] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:37:15.820] [DEBUG] QUERY OK source="tms_terminals" db=14.5ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:37:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:37:15.820] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:37:15.822] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=17.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:37:15.869] [DEBUG] QUERY OK source="tms_terminals" db=46.2ms idle=4.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:37:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:37:15.937] [DEBUG] QUERY OK db=67.7ms idle=47.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0346bc29-59d9-42b1-afee-d08b4654454b", "2026-08-21T11:37:15Z", ~N[2026-08-21 11:37:15], ~N[2026-08-21 11:37:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:37:15.937] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77799, oid: "0346bc29-59d9-42b1-afee-d08b4654454b", upload_time: "2026-08-21T11:37:15Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:15], updated_at: ~N[2026-08-21 11:37:15]} [2026-08-21 11:37:15.937] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:37:15Z", "value" => "morefun"} [2026-08-21 11:37:15.993] [DEBUG] QUERY OK db=55.0ms idle=69.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:15Z", "morefun", "vendor", 77799, ~N[2026-08-21 11:37:15], ~N[2026-08-21 11:37:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:15.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790743, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:15], updated_at: ~N[2026-08-21 11:37:15]}} [2026-08-21 11:37:15.993] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:37:15Z", "value" => "kiosk_launcher"} [2026-08-21 11:37:16.058] [DEBUG] QUERY OK db=61.6ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:15Z", "kiosk_launcher", "model", 77799, ~N[2026-08-21 11:37:15], ~N[2026-08-21 11:37:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.058] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790744, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:15], updated_at: ~N[2026-08-21 11:37:15]}} [2026-08-21 11:37:16.058] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:37:15Z", "value" => "1.0"} [2026-08-21 11:37:16.110] [DEBUG] QUERY OK db=50.8ms idle=65.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:15Z", "1.0", "app_version", 77799, ~N[2026-08-21 11:37:16], ~N[2026-08-21 11:37:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.110] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790745, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:16], updated_at: ~N[2026-08-21 11:37:16]}} [2026-08-21 11:37:16.110] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:37:15Z", "value" => "13"} [2026-08-21 11:37:16.136] [DEBUG] QUERY OK db=25.6ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:15Z", "13", "android_version", 77799, ~N[2026-08-21 11:37:16], ~N[2026-08-21 11:37:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790746, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:16], updated_at: ~N[2026-08-21 11:37:16]}} [2026-08-21 11:37:16.137] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:37:15Z", "value" => "924"} [2026-08-21 11:37:16.152] [DEBUG] QUERY OK db=14.4ms queue=0.1ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:15Z", "924", "ram_free_mb", 77799, ~N[2026-08-21 11:37:16], ~N[2026-08-21 11:37:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790747, itemkey: "ram_free_mb", value: "924", timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:16], updated_at: ~N[2026-08-21 11:37:16]}} [2026-08-21 11:37:16.153] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:37:15Z", "value" => "WIFI"} [2026-08-21 11:37:16.203] [DEBUG] QUERY OK db=49.4ms idle=17.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:15Z", "WIFI", "network_type", 77799, ~N[2026-08-21 11:37:16], ~N[2026-08-21 11:37:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790748, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:16], updated_at: ~N[2026-08-21 11:37:16]}} [2026-08-21 11:37:16.203] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:37:15Z", "value" => "true"} [2026-08-21 11:37:16.238] [DEBUG] QUERY OK db=34.4ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:15Z", "true", "kiosk_active", 77799, ~N[2026-08-21 11:37:16], ~N[2026-08-21 11:37:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790749, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:16], updated_at: ~N[2026-08-21 11:37:16]}} [2026-08-21 11:37:16.238] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:37:15Z", "value" => ""} [2026-08-21 11:37:16.283] [DEBUG] QUERY OK db=44.6ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:37:15Z", "sim_operator", 77799, ~N[2026-08-21 11:37:16], ~N[2026-08-21 11:37:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790750, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:16], updated_at: ~N[2026-08-21 11:37:16]}} [2026-08-21 11:37:16.285] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:37:15Z", "value" => "UNKNOWN"} [2026-08-21 11:37:16.319] [DEBUG] QUERY OK db=32.8ms queue=0.4ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:15Z", "UNKNOWN", "sim_number", 77799, ~N[2026-08-21 11:37:16], ~N[2026-08-21 11:37:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790751, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:16], updated_at: ~N[2026-08-21 11:37:16]}} [2026-08-21 11:37:16.320] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:37:15Z", "value" => "UNKNOWN"} [2026-08-21 11:37:16.389] [DEBUG] QUERY OK db=68.9ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:15Z", "UNKNOWN", "sim_iccid", 77799, ~N[2026-08-21 11:37:16], ~N[2026-08-21 11:37:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790752, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:16], updated_at: ~N[2026-08-21 11:37:16]}} [2026-08-21 11:37:16.390] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:37:15Z", "value" => "UNKNOWN"} [2026-08-21 11:37:16.411] [DEBUG] QUERY OK db=20.7ms queue=0.1ms idle=71.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:15Z", "UNKNOWN", "sim_imsi", 77799, ~N[2026-08-21 11:37:16], ~N[2026-08-21 11:37:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790753, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:16], updated_at: ~N[2026-08-21 11:37:16]}} [2026-08-21 11:37:16.412] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:37:15Z", "value" => "UNKNOWN"} [2026-08-21 11:37:16.462] [DEBUG] QUERY OK db=49.8ms queue=0.1ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:15Z", "UNKNOWN", "sim_iccid2", 77799, ~N[2026-08-21 11:37:16], ~N[2026-08-21 11:37:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.462] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790754, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:16], updated_at: ~N[2026-08-21 11:37:16]}} [2026-08-21 11:37:16.463] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:37:15Z", "value" => "UNKNOWN"} [2026-08-21 11:37:16.506] [DEBUG] QUERY OK db=42.7ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:15Z", "UNKNOWN", "sim_imsi2", 77799, ~N[2026-08-21 11:37:16], ~N[2026-08-21 11:37:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790755, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:16], updated_at: ~N[2026-08-21 11:37:16]}} [2026-08-21 11:37:16.508] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:37:15Z", "value" => "34"} [2026-08-21 11:37:16.574] [DEBUG] QUERY OK db=65.5ms queue=0.9ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:15Z", "34", "data_usage_mb", 77799, ~N[2026-08-21 11:37:16], ~N[2026-08-21 11:37:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790756, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:16], updated_at: ~N[2026-08-21 11:37:16]}} [2026-08-21 11:37:16.575] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:37:15Z", "value" => "0"} [2026-08-21 11:37:16.623] [DEBUG] QUERY OK db=47.3ms idle=69.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:15Z", "0", "mobile_data_mb", 77799, ~N[2026-08-21 11:37:16], ~N[2026-08-21 11:37:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790757, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:16], updated_at: ~N[2026-08-21 11:37:16]}} [2026-08-21 11:37:16.624] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:37: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:37:16.675] [DEBUG] QUERY OK db=47.0ms queue=3.0ms idle=16.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77799, ~N[2026-08-21 11:37:16], ~N[2026-08-21 11:37:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:16.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790758, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:37:15Z", message: nil, status_log_id: 77799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:16], updated_at: ~N[2026-08-21 11:37:16]}} [2026-08-21 11:37:16.936] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:37:16.936] [INFO ] Incoming JSON payload: {"oid":"5a3c46cd-2077-43b5-8226-a0ce593e08e2","sn":"98251226730002","uploadTime":"2026-08-21T11:36:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"ram_free_mb","value":"998","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:36:42Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:37:16.938] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5a3c46cd-2077-43b5-8226-a0ce593e08e2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:36:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:36:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:36:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:36:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:36:42Z", "value" => "998"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:36:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:36:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:36:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:36:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:36:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:36:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:36:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:36:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:36:42Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:36:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:36:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:36:42Z", "vendor" => "morefun"} [2026-08-21 11:37:16.938] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:37:16.939] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:37:16.939] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:37:16.941] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=317.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-08-21 11:37:16.942] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=267.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-08-21 11:37:16.943] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:37:16.946] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=1.7ms idle=2.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:37:16.948] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:37:17.016] [DEBUG] QUERY OK source="tms_terminals" db=67.3ms queue=0.1ms idle=6.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:37:16], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:37:17.018] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:37:17.021] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=72.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:37:17.099] [DEBUG] QUERY OK source="tms_terminals" db=77.9ms idle=4.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:37:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:37:17.146] [DEBUG] QUERY OK db=46.9ms idle=78.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "5a3c46cd-2077-43b5-8226-a0ce593e08e2", "2026-08-21T11:36:42Z", ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:37:17.147] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77800, oid: "5a3c46cd-2077-43b5-8226-a0ce593e08e2", upload_time: "2026-08-21T11:36:42Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]} [2026-08-21 11:37:17.147] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:36:42Z", "value" => "morefun"} [2026-08-21 11:37:17.251] [DEBUG] QUERY OK db=103.6ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "morefun", "vendor", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790759, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.252] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:36:42Z", "value" => "kiosk_launcher"} [2026-08-21 11:37:17.292] [DEBUG] QUERY OK db=39.2ms idle=106.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "kiosk_launcher", "model", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.292] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790760, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.292] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:36:42Z", "value" => "1.0"} [2026-08-21 11:37:17.332] [DEBUG] QUERY OK db=39.7ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "1.0", "app_version", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790761, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.333] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:36:42Z", "value" => "13"} [2026-08-21 11:37:17.361] [DEBUG] QUERY OK db=28.2ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "13", "android_version", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790762, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.362] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:36:42Z", "value" => "998"} [2026-08-21 11:37:17.410] [DEBUG] QUERY OK db=47.7ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "998", "ram_free_mb", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790763, itemkey: "ram_free_mb", value: "998", timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.410] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:36:42Z", "value" => "WIFI"} [2026-08-21 11:37:17.454] [DEBUG] QUERY OK db=43.0ms queue=0.1ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "WIFI", "network_type", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790764, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.454] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:36:42Z", "value" => "true"} [2026-08-21 11:37:17.477] [DEBUG] QUERY OK db=22.6ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "true", "kiosk_active", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.478] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790765, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.478] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:36:42Z", "value" => ""} [2026-08-21 11:37:17.537] [DEBUG] QUERY OK db=58.6ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:36:42Z", "sim_operator", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790766, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.537] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:36:42Z", "value" => "UNKNOWN"} [2026-08-21 11:37:17.574] [DEBUG] QUERY OK db=36.4ms idle=60.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "UNKNOWN", "sim_number", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790767, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.575] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:36:42Z", "value" => "UNKNOWN"} [2026-08-21 11:37:17.644] [DEBUG] QUERY OK db=68.3ms queue=0.1ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "UNKNOWN", "sim_iccid", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.644] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790768, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.644] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:36:42Z", "value" => "UNKNOWN"} [2026-08-21 11:37:17.692] [DEBUG] QUERY OK db=47.5ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "UNKNOWN", "sim_imsi", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790769, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.693] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:36:42Z", "value" => "UNKNOWN"} [2026-08-21 11:37:17.766] [DEBUG] QUERY OK db=72.8ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "UNKNOWN", "sim_iccid2", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790770, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.767] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:36:42Z", "value" => "UNKNOWN"} [2026-08-21 11:37:17.814] [DEBUG] QUERY OK db=47.3ms idle=74.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "UNKNOWN", "sim_imsi2", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.815] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790771, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.815] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:36:42Z", "value" => "1"} [2026-08-21 11:37:17.853] [DEBUG] QUERY OK db=38.2ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "1", "data_usage_mb", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.853] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790772, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.854] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:36:42Z", "value" => "0"} [2026-08-21 11:37:17.877] [DEBUG] QUERY OK db=22.6ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "0", "mobile_data_mb", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790773, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:17.877] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:36:42Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:37:17.916] [DEBUG] QUERY OK db=37.5ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:36:42Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77800, ~N[2026-08-21 11:37:17], ~N[2026-08-21 11:37:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:17.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790774, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:36:42Z", message: nil, status_log_id: 77800, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:17], updated_at: ~N[2026-08-21 11:37:17]}} [2026-08-21 11:37:46.133] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:37:46.133] [INFO ] Incoming JSON payload: {"oid":"6ac3bdf8-5d4d-4da5-a957-1697cb69a397","sn":"98251226730001","uploadTime":"2026-08-21T11:37:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"ram_free_mb","value":"923","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:37:45Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:37:46.135] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6ac3bdf8-5d4d-4da5-a957-1697cb69a397", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:37:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:37:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:37:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:37:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:37:45Z", "value" => "923"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:37:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:37:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:37:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:37:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:37:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:37:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:37:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:37:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:37:45Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:37:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:37:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:37:45Z", "vendor" => "morefun"} [2026-08-21 11:37:46.135] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:37:46.135] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:37:46.136] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:37:46.136] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1138.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-08-21 11:37:46.137] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=390.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-08-21 11:37:46.137] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:37:46.138] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:37:46.139] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:37:46.165] [DEBUG] QUERY OK source="tms_terminals" db=25.5ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:37:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:37:46.165] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:37:46.166] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=27.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:37:46.204] [DEBUG] QUERY OK source="tms_terminals" db=37.1ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:37:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:37:46.259] [DEBUG] QUERY OK db=54.7ms idle=38.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6ac3bdf8-5d4d-4da5-a957-1697cb69a397", "2026-08-21T11:37:45Z", ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:37:46.259] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77801, oid: "6ac3bdf8-5d4d-4da5-a957-1697cb69a397", upload_time: "2026-08-21T11:37:45Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]} [2026-08-21 11:37:46.259] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:37:45Z", "value" => "morefun"} [2026-08-21 11:37:46.284] [DEBUG] QUERY OK db=24.0ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "morefun", "vendor", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790775, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.286] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:37:45Z", "value" => "kiosk_launcher"} [2026-08-21 11:37:46.334] [DEBUG] QUERY OK db=47.0ms idle=27.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "kiosk_launcher", "model", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790776, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.334] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:37:45Z", "value" => "1.0"} [2026-08-21 11:37:46.392] [DEBUG] QUERY OK db=55.8ms queue=0.1ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "1.0", "app_version", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790777, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.393] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:37:45Z", "value" => "13"} [2026-08-21 11:37:46.450] [DEBUG] QUERY OK db=56.8ms idle=59.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "13", "android_version", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790778, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.450] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:37:45Z", "value" => "923"} [2026-08-21 11:37:46.491] [DEBUG] QUERY OK db=40.5ms queue=0.1ms idle=58.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "923", "ram_free_mb", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.492] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790779, itemkey: "ram_free_mb", value: "923", timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.492] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:37:45Z", "value" => "WIFI"} [2026-08-21 11:37:46.524] [DEBUG] QUERY OK db=31.9ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "WIFI", "network_type", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790780, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.525] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:37:45Z", "value" => "true"} [2026-08-21 11:37:46.575] [DEBUG] QUERY OK db=49.6ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "true", "kiosk_active", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790781, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.576] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:37:45Z", "value" => ""} [2026-08-21 11:37:46.606] [DEBUG] QUERY OK db=29.6ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:37:45Z", "sim_operator", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790782, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.606] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:37:45Z", "value" => "UNKNOWN"} [2026-08-21 11:37:46.631] [DEBUG] QUERY OK db=22.7ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "UNKNOWN", "sim_number", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790783, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.632] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:37:45Z", "value" => "UNKNOWN"} [2026-08-21 11:37:46.674] [DEBUG] QUERY OK db=41.0ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "UNKNOWN", "sim_iccid", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.674] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790784, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.675] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:37:45Z", "value" => "UNKNOWN"} [2026-08-21 11:37:46.707] [DEBUG] QUERY OK db=32.1ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "UNKNOWN", "sim_imsi", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790785, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.708] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:37:45Z", "value" => "UNKNOWN"} [2026-08-21 11:37:46.767] [DEBUG] QUERY OK db=58.2ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "UNKNOWN", "sim_iccid2", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.768] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790786, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.768] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:37:45Z", "value" => "UNKNOWN"} [2026-08-21 11:37:46.845] [DEBUG] QUERY OK db=75.5ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "UNKNOWN", "sim_imsi2", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790787, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.846] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:37:45Z", "value" => "34"} [2026-08-21 11:37:46.889] [DEBUG] QUERY OK db=41.8ms queue=0.6ms idle=79.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "34", "data_usage_mb", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.889] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790788, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.889] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:37:45Z", "value" => "0"} [2026-08-21 11:37:46.926] [DEBUG] QUERY OK db=36.9ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "0", "mobile_data_mb", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790789, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.928] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:37:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:37:46.982] [DEBUG] QUERY OK db=53.0ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:45Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77801, ~N[2026-08-21 11:37:46], ~N[2026-08-21 11:37:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:46.983] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790790, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:37:45Z", message: nil, status_log_id: 77801, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:46], updated_at: ~N[2026-08-21 11:37:46]}} [2026-08-21 11:37:46.983] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:37:46.983] [INFO ] Incoming JSON payload: {"oid":"ee094d28-5bb9-4293-927d-2d7303c8b98b","sn":"98251226730002","uploadTime":"2026-08-21T11:37:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"ram_free_mb","value":"992","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:37:13Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:37:46.984] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ee094d28-5bb9-4293-927d-2d7303c8b98b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:37:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:37:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:37:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:37:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:37:13Z", "value" => "992"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:37:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:37:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:37:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:37:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:37:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:37:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:37:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:37:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:37:13Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:37:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:37:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:37:13Z", "vendor" => "morefun"} [2026-08-21 11:37:46.984] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:37:46.984] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:37:46.984] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:37:46.985] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=58.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-08-21 11:37:46.986] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.2ms idle=4.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:37:46.987] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:37:46.989] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:37:46.989] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:37:47.028] [DEBUG] QUERY OK source="tms_terminals" db=38.7ms queue=0.1ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:37:46], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:37:47.028] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:37:47.029] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=39.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:37:47.070] [DEBUG] QUERY OK source="tms_terminals" db=40.0ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:37:47], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:37:47.113] [DEBUG] QUERY OK db=42.3ms idle=40.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "ee094d28-5bb9-4293-927d-2d7303c8b98b", "2026-08-21T11:37:13Z", ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:37:47.113] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77802, oid: "ee094d28-5bb9-4293-927d-2d7303c8b98b", upload_time: "2026-08-21T11:37:13Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]} [2026-08-21 11:37:47.113] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:37:13Z", "value" => "morefun"} [2026-08-21 11:37:47.150] [DEBUG] QUERY OK db=36.7ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "morefun", "vendor", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790791, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.151] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:37:13Z", "value" => "kiosk_launcher"} [2026-08-21 11:37:47.175] [DEBUG] QUERY OK db=23.3ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "kiosk_launcher", "model", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790792, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.175] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:37:13Z", "value" => "1.0"} [2026-08-21 11:37:47.209] [DEBUG] QUERY OK db=32.6ms queue=0.2ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "1.0", "app_version", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.209] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790793, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.209] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:37:13Z", "value" => "13"} [2026-08-21 11:37:47.256] [DEBUG] QUERY OK db=46.9ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "13", "android_version", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790794, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.256] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:37:13Z", "value" => "992"} [2026-08-21 11:37:47.296] [DEBUG] QUERY OK db=39.5ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "992", "ram_free_mb", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790795, itemkey: "ram_free_mb", value: "992", timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.297] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:37:13Z", "value" => "WIFI"} [2026-08-21 11:37:47.347] [DEBUG] QUERY OK db=49.4ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "WIFI", "network_type", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790796, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.347] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:37:13Z", "value" => "true"} [2026-08-21 11:37:47.381] [DEBUG] QUERY OK db=33.2ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "true", "kiosk_active", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790797, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.381] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:37:13Z", "value" => ""} [2026-08-21 11:37:47.429] [DEBUG] QUERY OK db=48.0ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:37:13Z", "sim_operator", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790798, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.430] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:37:13Z", "value" => "UNKNOWN"} [2026-08-21 11:37:47.452] [DEBUG] QUERY OK db=22.0ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "UNKNOWN", "sim_number", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790799, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.453] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:37:13Z", "value" => "UNKNOWN"} [2026-08-21 11:37:47.525] [DEBUG] QUERY OK db=71.8ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "UNKNOWN", "sim_iccid", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790800, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.526] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:37:13Z", "value" => "UNKNOWN"} [2026-08-21 11:37:47.554] [DEBUG] QUERY OK db=27.5ms idle=73.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "UNKNOWN", "sim_imsi", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790801, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.555] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:37:13Z", "value" => "UNKNOWN"} [2026-08-21 11:37:47.600] [DEBUG] QUERY OK db=44.0ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "UNKNOWN", "sim_iccid2", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790802, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.600] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:37:13Z", "value" => "UNKNOWN"} [2026-08-21 11:37:47.653] [DEBUG] QUERY OK db=52.2ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "UNKNOWN", "sim_imsi2", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790803, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.653] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:37:13Z", "value" => "1"} [2026-08-21 11:37:47.698] [DEBUG] QUERY OK db=44.3ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "1", "data_usage_mb", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790804, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.699] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:37:13Z", "value" => "0"} [2026-08-21 11:37:47.788] [DEBUG] QUERY OK db=89.1ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "0", "mobile_data_mb", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790805, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:37:47.790] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:37:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:37:47.866] [DEBUG] QUERY OK db=74.6ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:13Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77802, ~N[2026-08-21 11:37:47], ~N[2026-08-21 11:37:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:37:47.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790806, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:37:13Z", message: nil, status_log_id: 77802, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:37:47], updated_at: ~N[2026-08-21 11:37:47]}} [2026-08-21 11:38:16.219] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:38:16.219] [INFO ] Incoming JSON payload: {"oid":"a7d6a6aa-cdef-44c9-9328-d2a31873ccb8","sn":"98251226730001","uploadTime":"2026-08-21T11:38:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:38:15Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:38:16.231] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a7d6a6aa-cdef-44c9-9328-d2a31873ccb8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:38:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:38:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:38:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:38:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:38:15Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:38:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:38:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:38:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:38:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:38:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:38:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:38:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:38:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:38:15Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:38:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:38:15Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:38:15Z", "vendor" => "morefun"} [2026-08-21 11:38:16.231] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:38:16.231] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:38:16.231] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:38:16.232] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.1ms idle=1228.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-08-21 11:38:16.234] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=363.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-08-21 11:38:16.234] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:38:16.235] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:38:16.235] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:38:16.282] [DEBUG] QUERY OK source="tms_terminals" db=44.1ms queue=2.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:38:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:38:16.283] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:38:16.286] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=48.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:38:16.344] [DEBUG] QUERY OK source="tms_terminals" db=57.4ms queue=0.2ms idle=5.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:38:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:38:16.376] [DEBUG] QUERY OK db=30.2ms idle=59.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a7d6a6aa-cdef-44c9-9328-d2a31873ccb8", "2026-08-21T11:38:15Z", ~N[2026-08-21 11:38:16], ~N[2026-08-21 11:38:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:38:16.376] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77803, oid: "a7d6a6aa-cdef-44c9-9328-d2a31873ccb8", upload_time: "2026-08-21T11:38:15Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:16], updated_at: ~N[2026-08-21 11:38:16]} [2026-08-21 11:38:16.377] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:38:15Z", "value" => "morefun"} [2026-08-21 11:38:16.415] [DEBUG] QUERY OK db=38.5ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "morefun", "vendor", 77803, ~N[2026-08-21 11:38:16], ~N[2026-08-21 11:38:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:16.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790807, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:16], updated_at: ~N[2026-08-21 11:38:16]}} [2026-08-21 11:38:16.420] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:38:15Z", "value" => "kiosk_launcher"} [2026-08-21 11:38:16.472] [DEBUG] QUERY OK db=51.5ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "kiosk_launcher", "model", 77803, ~N[2026-08-21 11:38:16], ~N[2026-08-21 11:38:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:16.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790808, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:16], updated_at: ~N[2026-08-21 11:38:16]}} [2026-08-21 11:38:16.473] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:38:15Z", "value" => "1.0"} [2026-08-21 11:38:16.523] [DEBUG] QUERY OK db=50.4ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "1.0", "app_version", 77803, ~N[2026-08-21 11:38:16], ~N[2026-08-21 11:38:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:16.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790809, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:16], updated_at: ~N[2026-08-21 11:38:16]}} [2026-08-21 11:38:16.524] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:38:15Z", "value" => "13"} [2026-08-21 11:38:16.560] [DEBUG] QUERY OK db=34.8ms queue=0.5ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "13", "android_version", 77803, ~N[2026-08-21 11:38:16], ~N[2026-08-21 11:38:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:16.560] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790810, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:16], updated_at: ~N[2026-08-21 11:38:16]}} [2026-08-21 11:38:16.560] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:38:15Z", "value" => "921"} [2026-08-21 11:38:16.611] [DEBUG] QUERY OK db=50.6ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "921", "ram_free_mb", 77803, ~N[2026-08-21 11:38:16], ~N[2026-08-21 11:38:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:16.614] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790811, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:16], updated_at: ~N[2026-08-21 11:38:16]}} [2026-08-21 11:38:16.614] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:38:15Z", "value" => "WIFI"} [2026-08-21 11:38:16.672] [DEBUG] QUERY OK db=57.4ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "WIFI", "network_type", 77803, ~N[2026-08-21 11:38:16], ~N[2026-08-21 11:38:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:16.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790812, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:16], updated_at: ~N[2026-08-21 11:38:16]}} [2026-08-21 11:38:16.673] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:38:15Z", "value" => "true"} [2026-08-21 11:38:16.715] [DEBUG] QUERY OK db=41.7ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "true", "kiosk_active", 77803, ~N[2026-08-21 11:38:16], ~N[2026-08-21 11:38:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:16.715] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790813, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:16], updated_at: ~N[2026-08-21 11:38:16]}} [2026-08-21 11:38:16.715] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:38:15Z", "value" => ""} [2026-08-21 11:38:16.781] [DEBUG] QUERY OK db=65.6ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:38:15Z", "sim_operator", 77803, ~N[2026-08-21 11:38:16], ~N[2026-08-21 11:38:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:16.782] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790814, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:16], updated_at: ~N[2026-08-21 11:38:16]}} [2026-08-21 11:38:16.782] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:38:15Z", "value" => "UNKNOWN"} [2026-08-21 11:38:16.848] [DEBUG] QUERY OK db=66.2ms idle=67.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "UNKNOWN", "sim_number", 77803, ~N[2026-08-21 11:38:16], ~N[2026-08-21 11:38:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:16.848] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790815, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:16], updated_at: ~N[2026-08-21 11:38:16]}} [2026-08-21 11:38:16.849] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:38:15Z", "value" => "UNKNOWN"} [2026-08-21 11:38:16.882] [DEBUG] QUERY OK db=33.0ms idle=67.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "UNKNOWN", "sim_iccid", 77803, ~N[2026-08-21 11:38:16], ~N[2026-08-21 11:38:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:16.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790816, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:16], updated_at: ~N[2026-08-21 11:38:16]}} [2026-08-21 11:38:16.882] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:38:15Z", "value" => "UNKNOWN"} [2026-08-21 11:38:16.920] [DEBUG] QUERY OK db=37.3ms idle=10.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "UNKNOWN", "sim_imsi", 77803, ~N[2026-08-21 11:38:16], ~N[2026-08-21 11:38:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:16.921] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790817, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:16], updated_at: ~N[2026-08-21 11:38:16]}} [2026-08-21 11:38:16.922] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:38:15Z", "value" => "UNKNOWN"} [2026-08-21 11:38:17.172] [DEBUG] QUERY OK db=249.5ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "UNKNOWN", "sim_iccid2", 77803, ~N[2026-08-21 11:38:16], ~N[2026-08-21 11:38:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:17.174] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790818, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:16], updated_at: ~N[2026-08-21 11:38:16]}} [2026-08-21 11:38:17.174] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:38:15Z", "value" => "UNKNOWN"} [2026-08-21 11:38:17.217] [DEBUG] QUERY OK db=42.5ms idle=254.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "UNKNOWN", "sim_imsi2", 77803, ~N[2026-08-21 11:38:17], ~N[2026-08-21 11:38:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:17.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790819, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:17], updated_at: ~N[2026-08-21 11:38:17]}} [2026-08-21 11:38:17.218] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:38:15Z", "value" => "34"} [2026-08-21 11:38:17.278] [DEBUG] QUERY OK db=59.5ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "34", "data_usage_mb", 77803, ~N[2026-08-21 11:38:17], ~N[2026-08-21 11:38:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:17.278] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790820, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:17], updated_at: ~N[2026-08-21 11:38:17]}} [2026-08-21 11:38:17.278] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:38:15Z", "value" => "0"} [2026-08-21 11:38:17.354] [DEBUG] QUERY OK db=75.4ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "0", "mobile_data_mb", 77803, ~N[2026-08-21 11:38:17], ~N[2026-08-21 11:38:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:17.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790821, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:17], updated_at: ~N[2026-08-21 11:38:17]}} [2026-08-21 11:38:17.355] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:38:15Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:38:17.396] [DEBUG] QUERY OK db=39.8ms idle=77.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:15Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77803, ~N[2026-08-21 11:38:17], ~N[2026-08-21 11:38:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:17.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790822, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:38:15Z", message: nil, status_log_id: 77803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:17], updated_at: ~N[2026-08-21 11:38:17]}} [2026-08-21 11:38:17.398] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:38:17.398] [INFO ] Incoming JSON payload: {"oid":"bfc1ca3f-3b37-4ce1-b366-0bb858ba4f8c","sn":"98251226730002","uploadTime":"2026-08-21T11:37:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"ram_free_mb","value":"1001","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:37:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.re (truncated) [2026-08-21 11:38:17.414] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bfc1ca3f-3b37-4ce1-b366-0bb858ba4f8c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:37:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:37:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:37:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:37:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:37:43Z", "value" => "1001"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:37:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:37:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:37:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:37:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:37:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:37:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:37:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:37:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:37:43Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:37:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:37:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:37:43Z", "vendor" => "morefun"} [2026-08-21 11:38:17.414] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:38:17.414] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:38:17.414] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:38:17.420] [DEBUG] QUERY OK source="parameter_templates" db=5.7ms idle=60.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-08-21 11:38:17.427] [DEBUG] QUERY OK source="parameter_templates" db=6.6ms idle=25.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:38:17.427] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:38:17.436] [DEBUG] QUERY OK source="tms_terminals" db=8.2ms idle=7.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:38:17.436] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:38:17.472] [DEBUG] QUERY OK source="tms_terminals" db=35.5ms idle=9.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:38:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:38:17.472] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:38:17.475] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=37.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:38:17.517] [DEBUG] QUERY OK source="tms_terminals" db=40.4ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:38:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:38:17.555] [DEBUG] QUERY OK db=35.7ms queue=0.6ms idle=42.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "bfc1ca3f-3b37-4ce1-b366-0bb858ba4f8c", "2026-08-21T11:37:43Z", ~N[2026-08-21 11:38:17], ~N[2026-08-21 11:38:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:38:17.557] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77804, oid: "bfc1ca3f-3b37-4ce1-b366-0bb858ba4f8c", upload_time: "2026-08-21T11:37:43Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:17], updated_at: ~N[2026-08-21 11:38:17]} [2026-08-21 11:38:17.557] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:37:43Z", "value" => "morefun"} [2026-08-21 11:38:17.599] [DEBUG] QUERY OK db=41.2ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "morefun", "vendor", 77804, ~N[2026-08-21 11:38:17], ~N[2026-08-21 11:38:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:17.599] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790823, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:17], updated_at: ~N[2026-08-21 11:38:17]}} [2026-08-21 11:38:17.599] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:37:43Z", "value" => "kiosk_launcher"} [2026-08-21 11:38:17.660] [DEBUG] QUERY OK db=60.2ms queue=0.7ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "kiosk_launcher", "model", 77804, ~N[2026-08-21 11:38:17], ~N[2026-08-21 11:38:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:17.661] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790824, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:17], updated_at: ~N[2026-08-21 11:38:17]}} [2026-08-21 11:38:17.661] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:37:43Z", "value" => "1.0"} [2026-08-21 11:38:17.724] [DEBUG] QUERY OK db=62.0ms idle=63.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "1.0", "app_version", 77804, ~N[2026-08-21 11:38:17], ~N[2026-08-21 11:38:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:17.725] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790825, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:17], updated_at: ~N[2026-08-21 11:38:17]}} [2026-08-21 11:38:17.725] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:37:43Z", "value" => "13"} [2026-08-21 11:38:17.775] [DEBUG] QUERY OK db=49.7ms idle=64.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "13", "android_version", 77804, ~N[2026-08-21 11:38:17], ~N[2026-08-21 11:38:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:17.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790826, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:17], updated_at: ~N[2026-08-21 11:38:17]}} [2026-08-21 11:38:17.775] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:37:43Z", "value" => "1001"} [2026-08-21 11:38:17.868] [DEBUG] QUERY OK db=90.2ms queue=0.1ms idle=52.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "1001", "ram_free_mb", 77804, ~N[2026-08-21 11:38:17], ~N[2026-08-21 11:38:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:17.868] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790827, itemkey: "ram_free_mb", value: "1001", timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:17], updated_at: ~N[2026-08-21 11:38:17]}} [2026-08-21 11:38:17.868] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:37:43Z", "value" => "WIFI"} [2026-08-21 11:38:17.903] [DEBUG] QUERY OK db=33.8ms idle=93.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "WIFI", "network_type", 77804, ~N[2026-08-21 11:38:17], ~N[2026-08-21 11:38:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:17.904] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790828, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:17], updated_at: ~N[2026-08-21 11:38:17]}} [2026-08-21 11:38:17.904] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:37:43Z", "value" => "true"} [2026-08-21 11:38:17.951] [DEBUG] QUERY OK db=46.3ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "true", "kiosk_active", 77804, ~N[2026-08-21 11:38:17], ~N[2026-08-21 11:38:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:17.951] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790829, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:17], updated_at: ~N[2026-08-21 11:38:17]}} [2026-08-21 11:38:17.952] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:37:43Z", "value" => ""} [2026-08-21 11:38:17.985] [DEBUG] QUERY OK db=32.6ms queue=0.5ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:37:43Z", "sim_operator", 77804, ~N[2026-08-21 11:38:17], ~N[2026-08-21 11:38:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:17.986] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790830, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:17], updated_at: ~N[2026-08-21 11:38:17]}} [2026-08-21 11:38:17.986] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:37:43Z", "value" => "UNKNOWN"} [2026-08-21 11:38:18.029] [DEBUG] QUERY OK db=42.6ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "UNKNOWN", "sim_number", 77804, ~N[2026-08-21 11:38:17], ~N[2026-08-21 11:38:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:18.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790831, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:17], updated_at: ~N[2026-08-21 11:38:17]}} [2026-08-21 11:38:18.031] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:37:43Z", "value" => "UNKNOWN"} [2026-08-21 11:38:18.075] [DEBUG] QUERY OK db=41.3ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "UNKNOWN", "sim_iccid", 77804, ~N[2026-08-21 11:38:18], ~N[2026-08-21 11:38:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:18.075] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790832, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:18], updated_at: ~N[2026-08-21 11:38:18]}} [2026-08-21 11:38:18.077] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:37:43Z", "value" => "UNKNOWN"} [2026-08-21 11:38:18.114] [DEBUG] QUERY OK db=37.1ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "UNKNOWN", "sim_imsi", 77804, ~N[2026-08-21 11:38:18], ~N[2026-08-21 11:38:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:18.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790833, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:18], updated_at: ~N[2026-08-21 11:38:18]}} [2026-08-21 11:38:18.115] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:37:43Z", "value" => "UNKNOWN"} [2026-08-21 11:38:18.157] [DEBUG] QUERY OK db=41.0ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "UNKNOWN", "sim_iccid2", 77804, ~N[2026-08-21 11:38:18], ~N[2026-08-21 11:38:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:18.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790834, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:18], updated_at: ~N[2026-08-21 11:38:18]}} [2026-08-21 11:38:18.160] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:37:43Z", "value" => "UNKNOWN"} [2026-08-21 11:38:18.214] [DEBUG] QUERY OK db=53.4ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "UNKNOWN", "sim_imsi2", 77804, ~N[2026-08-21 11:38:18], ~N[2026-08-21 11:38:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:18.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790835, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:18], updated_at: ~N[2026-08-21 11:38:18]}} [2026-08-21 11:38:18.217] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:37:43Z", "value" => "1"} [2026-08-21 11:38:18.260] [DEBUG] QUERY OK db=40.5ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "1", "data_usage_mb", 77804, ~N[2026-08-21 11:38:18], ~N[2026-08-21 11:38:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:18.260] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790836, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:18], updated_at: ~N[2026-08-21 11:38:18]}} [2026-08-21 11:38:18.261] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:37:43Z", "value" => "0"} [2026-08-21 11:38:18.290] [DEBUG] QUERY OK db=27.7ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "0", "mobile_data_mb", 77804, ~N[2026-08-21 11:38:18], ~N[2026-08-21 11:38:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:18.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790837, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:18], updated_at: ~N[2026-08-21 11:38:18]}} [2026-08-21 11:38:18.293] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:37:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:38:18.338] [DEBUG] QUERY OK db=41.1ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:37:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77804, ~N[2026-08-21 11:38:18], ~N[2026-08-21 11:38:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:18.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790838, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:37:43Z", message: nil, status_log_id: 77804, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:18], updated_at: ~N[2026-08-21 11:38:18]}} [2026-08-21 11:38:46.335] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 11:38:46.335] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T02:48:11Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T02:48:11Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T02:48:11Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T02:48:11Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T02:48:11Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T02:48:11Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T02:48:11Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T02:48:11Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T02:48:11Z","vendor":"MoreFun"} [2026-08-21 11:38:46.336] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:48:11Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:48:11Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:48:11Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:48:11Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:48:11Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:48:11Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:48:11Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:48:11Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T02:48:11Z", "vendor" => "MoreFun"} [2026-08-21 11:38:46.336] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:38:46.336] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 11:38:46.336] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 11:38:46.338] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=323.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`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-08-21 11:38:46.340] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=288.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 11:38:46.343] [DEBUG] QUERY OK source="parameter_template_values" db=0.9ms queue=1.3ms idle=2.9ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:38:46.347] [DEBUG] QUERY OK source="parameter_definitions" db=1.6ms queue=2.2ms idle=3.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-08-21 11:38:46.349] [DEBUG] QUERY OK source="pos_terminal" db=1.3ms idle=4.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:38:46.390] [DEBUG] QUERY OK source="pos_merchant" db=39.5ms queue=0.1ms idle=3.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:38:46.392] [DEBUG] QUERY OK db=1.2ms queue=0.5ms idle=1378.8ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["123451234512345"] [2026-08-21 11:38:46.392] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:38:46.396] [DEBUG] QUERY OK source="pos_terminal_data" db=3.0ms 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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:38:46.396] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 11:38:46.396] [DEBUG] QUERY OK source="address" db=0.4ms idle=5.8ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:38:46.397] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 11:38:46.400] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 11:38:46.446] [DEBUG] QUERY OK db=43.7ms idle=6.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ecf9dd8ddf24def9be97bcc1f133625d04e1f58ad19cbc4e66a8ac3a3e62e71e", 5666, 932, ~U[2026-08-21 11:38:46Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:38:46], ~N[2026-08-21 11:38:46]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:38:46.447] [INFO ] AutoPushService: Created push log 49028 for MF919 params.zip [2026-08-21 11:38:46.447] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 5666, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:38:46.448] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:38:46.448] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 11:38:46.454] [DEBUG] QUERY OK source="config_file_versions" db=2.5ms idle=55.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 11:38:46.469] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 11:38:46.513] [DEBUG] QUERY OK db=41.5ms idle=25.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "0afc66eab961fc1cb1e47b9a923cd9d5226d50c91fd9f77541ceab9f24b36dd3", 1764, 17947, ~U[2026-08-21 11:38:46Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:38:46], ~N[2026-08-21 11:38:46]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:38:46.513] [INFO ] AutoPushService: Created push log 49029 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:38:46.513] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 1764, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:38:46.514] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:38:46.514] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 11:38:46.518] [DEBUG] QUERY OK source="config_file_versions" db=3.7ms idle=59.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-08-21 11:38:46.518] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 11:38:46.522] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=5.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:38:46.522] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 11:38:46.536] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:38:46.536] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:38:46.536] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:38:46.538] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms idle=18.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:38:46.539] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:38:46.539] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 11:38:46.541] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=17.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:38:46.542] [INFO ] Terminal updated: 98250623730001 [2026-08-21 11:38:46.580] [DEBUG] QUERY OK source="tms_terminals" db=38.0ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:38:46], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:38:46.581] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=39.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-08-21 11:38:46.583] [DEBUG] QUERY OK source="config_file_versions" db=1.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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:38:46.584] [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-08-21 11:38:46.585] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:38:46.652] [DEBUG] QUERY OK source="parameter_push_logs" db=67.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 [19, "application", ~N[2026-08-21 11:08:46]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:38:46.652] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:38:46.652] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 11:38:46.653] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:38:46.660] [DEBUG] QUERY OK source="config_file_versions" db=6.0ms idle=1.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:38:46.661] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:38:46.664] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=10.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-08-21 11:38:46.752] [DEBUG] QUERY OK source="tms_terminals" db=87.3ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:38:46], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:38:46.806] [DEBUG] QUERY OK db=53.5ms idle=88.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T02:48:11Z", ~N[2026-08-21 11:38:46], ~N[2026-08-21 11:38:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:38:46.807] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77805, oid: "organization_id", upload_time: "2026-08-21T02:48:11Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:46], updated_at: ~N[2026-08-21 11:38:46]} [2026-08-21 11:38:46.807] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:48:11Z", "value" => "online"} [2026-08-21 11:38:46.887] [DEBUG] QUERY OK db=80.0ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T02:48:11Z", "online", "status", 77805, ~N[2026-08-21 11:38:46], ~N[2026-08-21 11:38:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:46.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790839, itemkey: "status", value: "online", timestamp: "2026-08-21T02:48:11Z", message: "Terminal status update", status_log_id: 77805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:46], updated_at: ~N[2026-08-21 11:38:46]}} [2026-08-21 11:38:46.888] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 11:38:46.888] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:48:11Z", "value" => "51"} [2026-08-21 11:38:46.929] [DEBUG] QUERY OK db=40.4ms idle=82.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T02:48:11Z", "51", "battery", 77805, ~N[2026-08-21 11:38:46], ~N[2026-08-21 11:38:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:46.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790840, itemkey: "battery", value: "51", timestamp: "2026-08-21T02:48:11Z", message: "Battery level", status_log_id: 77805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:46], updated_at: ~N[2026-08-21 11:38:46]}} [2026-08-21 11:38:46.929] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:48:11Z", "value" => "online"} [2026-08-21 11:38:46.955] [DEBUG] QUERY OK db=25.2ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T02:48:11Z", "online", "network", 77805, ~N[2026-08-21 11:38:46], ~N[2026-08-21 11:38:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:46.955] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790841, itemkey: "network", value: "online", timestamp: "2026-08-21T02:48:11Z", message: "Network connectivity", status_log_id: 77805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:46], updated_at: ~N[2026-08-21 11:38:46]}} [2026-08-21 11:38:46.955] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 11:38:46.955] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:48:11Z", "value" => "0"} [2026-08-21 11:38:47.008] [DEBUG] QUERY OK db=52.2ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T02:48:11Z", "0", "cpu", 77805, ~N[2026-08-21 11:38:46], ~N[2026-08-21 11:38:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790842, itemkey: "cpu", value: "0", timestamp: "2026-08-21T02:48:11Z", message: "CPU usage percentage", status_log_id: 77805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:46], updated_at: ~N[2026-08-21 11:38:46]}} [2026-08-21 11:38:47.010] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:48:11Z", "value" => "1.0.0"} [2026-08-21 11:38:47.063] [DEBUG] QUERY OK db=52.6ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T02:48:11Z", "1.0.0", "parameter_config", 77805, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790843, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T02:48:11Z", message: "Current parameters version", status_log_id: 77805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:47.063] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:48:11Z", "value" => "1.0.1"} [2026-08-21 11:38:47.091] [DEBUG] QUERY OK db=26.8ms idle=9.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T02:48:11Z", "1.0.1", "emv_config", 77805, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790844, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T02:48:11Z", message: "Current EMV config version", status_log_id: 77805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:47.091] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:48:11Z", "value" => ""} [2026-08-21 11:38:47.124] [DEBUG] QUERY OK db=28.5ms queue=4.0ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T02:48:11Z", "keys_config", 77805, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790845, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T02:48:11Z", message: "Current keys config version", status_log_id: 77805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:47.127] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:48:11Z", "value" => "3.8.7.3"} [2026-08-21 11:38:47.190] [DEBUG] QUERY OK db=63.2ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T02:48:11Z", "3.8.7.3", "application", 77805, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790846, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T02:48:11Z", message: "Current application version", status_log_id: 77805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:47.191] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:38:47.191] [INFO ] Incoming JSON payload: {"oid":"203d6561-b999-4cae-b89a-f5d6975d0ae4","sn":"98251226730001","uploadTime":"2026-08-21T11:38:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"ram_free_mb","value":"919","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:38:45Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:38:47.198] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "203d6561-b999-4cae-b89a-f5d6975d0ae4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:38:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:38:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:38:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:38:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:38:45Z", "value" => "919"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:38:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:38:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:38:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:38:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:38:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:38:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:38:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:38:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:38:45Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:38:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:38:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:38:45Z", "vendor" => "morefun"} [2026-08-21 11:38:47.199] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:38:47.199] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:38:47.199] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:38:47.210] [DEBUG] QUERY OK source="parameter_templates" db=4.4ms idle=81.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-08-21 11:38:47.213] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=22.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:38:47.214] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:38:47.224] [DEBUG] QUERY OK source="tms_terminals" db=6.6ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:38:47.225] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:38:47.272] [DEBUG] QUERY OK source="tms_terminals" db=41.1ms queue=0.2ms idle=16.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:38:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:38:47.272] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:38:47.280] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=57.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:38:47.383] [DEBUG] QUERY OK source="tms_terminals" db=98.5ms queue=0.5ms idle=12.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:38:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:38:47.438] [DEBUG] QUERY OK db=54.4ms idle=103.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "203d6561-b999-4cae-b89a-f5d6975d0ae4", "2026-08-21T11:38:45Z", ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:38:47.438] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77806, oid: "203d6561-b999-4cae-b89a-f5d6975d0ae4", upload_time: "2026-08-21T11:38:45Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]} [2026-08-21 11:38:47.439] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:38:45Z", "value" => "morefun"} [2026-08-21 11:38:47.481] [DEBUG] QUERY OK db=42.3ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "morefun", "vendor", 77806, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790847, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:47.483] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:38:45Z", "value" => "kiosk_launcher"} [2026-08-21 11:38:47.536] [DEBUG] QUERY OK db=48.3ms queue=3.6ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "kiosk_launcher", "model", 77806, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.536] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790848, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:47.536] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:38:45Z", "value" => "1.0"} [2026-08-21 11:38:47.593] [DEBUG] QUERY OK db=51.4ms queue=0.1ms idle=60.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "1.0", "app_version", 77806, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790849, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:47.594] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:38:45Z", "value" => "13"} [2026-08-21 11:38:47.659] [DEBUG] QUERY OK db=64.4ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "13", "android_version", 77806, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.659] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790850, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:47.659] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:38:45Z", "value" => "919"} [2026-08-21 11:38:47.747] [DEBUG] QUERY OK db=87.9ms idle=66.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "919", "ram_free_mb", 77806, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790851, itemkey: "ram_free_mb", value: "919", timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:47.749] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:38:45Z", "value" => "WIFI"} [2026-08-21 11:38:47.784] [DEBUG] QUERY OK db=34.4ms idle=90.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "WIFI", "network_type", 77806, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790852, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:47.784] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:38:45Z", "value" => "true"} [2026-08-21 11:38:47.856] [DEBUG] QUERY OK db=58.2ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "true", "kiosk_active", 77806, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790853, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:47.856] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:38:45Z", "value" => ""} [2026-08-21 11:38:47.903] [DEBUG] QUERY OK db=46.3ms idle=72.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:38:45Z", "sim_operator", 77806, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790854, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:47.904] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:38:45Z", "value" => "UNKNOWN"} [2026-08-21 11:38:47.947] [DEBUG] QUERY OK db=42.8ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "UNKNOWN", "sim_number", 77806, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790855, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:47.947] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:38:45Z", "value" => "UNKNOWN"} [2026-08-21 11:38:47.984] [DEBUG] QUERY OK db=36.2ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "UNKNOWN", "sim_iccid", 77806, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:47.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790856, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:47.984] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:38:45Z", "value" => "UNKNOWN"} [2026-08-21 11:38:48.027] [DEBUG] QUERY OK db=42.3ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "UNKNOWN", "sim_imsi", 77806, ~N[2026-08-21 11:38:47], ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:48.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790857, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:47], updated_at: ~N[2026-08-21 11:38:47]}} [2026-08-21 11:38:48.029] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:38:45Z", "value" => "UNKNOWN"} [2026-08-21 11:38:48.059] [DEBUG] QUERY OK db=30.6ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "UNKNOWN", "sim_iccid2", 77806, ~N[2026-08-21 11:38:48], ~N[2026-08-21 11:38:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:48.060] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790858, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:48], updated_at: ~N[2026-08-21 11:38:48]}} [2026-08-21 11:38:48.060] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:38:45Z", "value" => "UNKNOWN"} [2026-08-21 11:38:48.087] [DEBUG] QUERY OK db=24.9ms queue=2.1ms idle=1.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "UNKNOWN", "sim_imsi2", 77806, ~N[2026-08-21 11:38:48], ~N[2026-08-21 11:38:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:48.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790859, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:48], updated_at: ~N[2026-08-21 11:38:48]}} [2026-08-21 11:38:48.088] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:38:45Z", "value" => "34"} [2026-08-21 11:38:48.140] [DEBUG] QUERY OK db=51.2ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "34", "data_usage_mb", 77806, ~N[2026-08-21 11:38:48], ~N[2026-08-21 11:38:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:48.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790860, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:48], updated_at: ~N[2026-08-21 11:38:48]}} [2026-08-21 11:38:48.140] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:38:45Z", "value" => "0"} [2026-08-21 11:38:48.211] [DEBUG] QUERY OK db=70.6ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "0", "mobile_data_mb", 77806, ~N[2026-08-21 11:38:48], ~N[2026-08-21 11:38:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:48.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790861, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:48], updated_at: ~N[2026-08-21 11:38:48]}} [2026-08-21 11:38:48.212] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:38:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:38:48.432] [DEBUG] QUERY OK db=219.2ms idle=72.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:45Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77806, ~N[2026-08-21 11:38:48], ~N[2026-08-21 11:38:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:48.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790862, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:38:45Z", message: nil, status_log_id: 77806, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:48], updated_at: ~N[2026-08-21 11:38:48]}} [2026-08-21 11:38:48.442] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:38:48.442] [INFO ] Incoming JSON payload: {"oid":"bfcd4db0-5ebc-4fd0-adeb-7193381e35d0","sn":"98251226730002","uploadTime":"2026-08-21T11:38:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"ram_free_mb","value":"1000","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:38:13Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.re (truncated) [2026-08-21 11:38:48.453] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bfcd4db0-5ebc-4fd0-adeb-7193381e35d0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:38:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:38:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:38:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:38:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:38:13Z", "value" => "1000"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:38:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:38:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:38:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:38:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:38:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:38:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:38:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:38:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:38:13Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:38:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:38:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:38:13Z", "vendor" => "morefun"} [2026-08-21 11:38:48.456] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:38:48.456] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:38:48.456] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:38:48.461] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms queue=3.3ms idle=245.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-08-21 11:38:48.467] [DEBUG] QUERY OK source="parameter_templates" db=5.6ms idle=30.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-08-21 11:38:48.467] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:38:48.471] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms idle=6.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:38:48.473] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:38:48.509] [DEBUG] QUERY OK source="tms_terminals" db=34.9ms idle=6.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:38:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:38:48.509] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:38:48.510] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=38.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:38:48.545] [DEBUG] QUERY OK source="tms_terminals" db=34.9ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:38:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:38:48.582] [DEBUG] QUERY OK db=36.3ms idle=35.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "bfcd4db0-5ebc-4fd0-adeb-7193381e35d0", "2026-08-21T11:38:13Z", ~N[2026-08-21 11:38:48], ~N[2026-08-21 11:38:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:38:48.583] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77807, oid: "bfcd4db0-5ebc-4fd0-adeb-7193381e35d0", upload_time: "2026-08-21T11:38:13Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:48], updated_at: ~N[2026-08-21 11:38:48]} [2026-08-21 11:38:48.583] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:38:13Z", "value" => "morefun"} [2026-08-21 11:38:48.651] [DEBUG] QUERY OK db=65.1ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "morefun", "vendor", 77807, ~N[2026-08-21 11:38:48], ~N[2026-08-21 11:38:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:48.652] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790863, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:48], updated_at: ~N[2026-08-21 11:38:48]}} [2026-08-21 11:38:48.654] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:38:13Z", "value" => "kiosk_launcher"} [2026-08-21 11:38:48.716] [DEBUG] QUERY OK db=60.0ms idle=74.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "kiosk_launcher", "model", 77807, ~N[2026-08-21 11:38:48], ~N[2026-08-21 11:38:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:48.717] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790864, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:48], updated_at: ~N[2026-08-21 11:38:48]}} [2026-08-21 11:38:48.717] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:38:13Z", "value" => "1.0"} [2026-08-21 11:38:48.796] [DEBUG] QUERY OK db=74.8ms idle=70.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "1.0", "app_version", 77807, ~N[2026-08-21 11:38:48], ~N[2026-08-21 11:38:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:48.796] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790865, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:48], updated_at: ~N[2026-08-21 11:38:48]}} [2026-08-21 11:38:48.796] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:38:13Z", "value" => "13"} [2026-08-21 11:38:48.868] [DEBUG] QUERY OK db=71.2ms idle=80.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "13", "android_version", 77807, ~N[2026-08-21 11:38:48], ~N[2026-08-21 11:38:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:48.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790866, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:48], updated_at: ~N[2026-08-21 11:38:48]}} [2026-08-21 11:38:48.870] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:38:13Z", "value" => "1000"} [2026-08-21 11:38:48.922] [DEBUG] QUERY OK db=48.1ms queue=2.7ms idle=74.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "1000", "ram_free_mb", 77807, ~N[2026-08-21 11:38:48], ~N[2026-08-21 11:38:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:48.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790867, itemkey: "ram_free_mb", value: "1000", timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:48], updated_at: ~N[2026-08-21 11:38:48]}} [2026-08-21 11:38:48.922] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:38:13Z", "value" => "WIFI"} [2026-08-21 11:38:48.964] [DEBUG] QUERY OK db=40.7ms queue=0.8ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "WIFI", "network_type", 77807, ~N[2026-08-21 11:38:48], ~N[2026-08-21 11:38:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:48.965] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790868, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:48], updated_at: ~N[2026-08-21 11:38:48]}} [2026-08-21 11:38:48.965] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:38:13Z", "value" => "true"} [2026-08-21 11:38:49.035] [DEBUG] QUERY OK db=67.2ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "true", "kiosk_active", 77807, ~N[2026-08-21 11:38:48], ~N[2026-08-21 11:38:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:49.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790869, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:48], updated_at: ~N[2026-08-21 11:38:48]}} [2026-08-21 11:38:49.036] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:38:13Z", "value" => ""} [2026-08-21 11:38:49.100] [DEBUG] QUERY OK db=64.2ms idle=71.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:38:13Z", "sim_operator", 77807, ~N[2026-08-21 11:38:49], ~N[2026-08-21 11:38:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:49.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790870, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:49], updated_at: ~N[2026-08-21 11:38:49]}} [2026-08-21 11:38:49.101] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:38:13Z", "value" => "UNKNOWN"} [2026-08-21 11:38:49.153] [DEBUG] QUERY OK db=51.6ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "UNKNOWN", "sim_number", 77807, ~N[2026-08-21 11:38:49], ~N[2026-08-21 11:38:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:49.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790871, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:49], updated_at: ~N[2026-08-21 11:38:49]}} [2026-08-21 11:38:49.153] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:38:13Z", "value" => "UNKNOWN"} [2026-08-21 11:38:49.224] [DEBUG] QUERY OK db=70.1ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "UNKNOWN", "sim_iccid", 77807, ~N[2026-08-21 11:38:49], ~N[2026-08-21 11:38:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:49.227] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790872, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:49], updated_at: ~N[2026-08-21 11:38:49]}} [2026-08-21 11:38:49.227] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:38:13Z", "value" => "UNKNOWN"} [2026-08-21 11:38:49.301] [DEBUG] QUERY OK db=73.5ms idle=74.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "UNKNOWN", "sim_imsi", 77807, ~N[2026-08-21 11:38:49], ~N[2026-08-21 11:38:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:49.301] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790873, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:49], updated_at: ~N[2026-08-21 11:38:49]}} [2026-08-21 11:38:49.301] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:38:13Z", "value" => "UNKNOWN"} [2026-08-21 11:38:49.342] [DEBUG] QUERY OK db=36.7ms idle=81.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "UNKNOWN", "sim_iccid2", 77807, ~N[2026-08-21 11:38:49], ~N[2026-08-21 11:38:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:49.343] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790874, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:49], updated_at: ~N[2026-08-21 11:38:49]}} [2026-08-21 11:38:49.343] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:38:13Z", "value" => "UNKNOWN"} [2026-08-21 11:38:49.414] [DEBUG] QUERY OK db=71.4ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "UNKNOWN", "sim_imsi2", 77807, ~N[2026-08-21 11:38:49], ~N[2026-08-21 11:38:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:49.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790875, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:49], updated_at: ~N[2026-08-21 11:38:49]}} [2026-08-21 11:38:49.415] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:38:13Z", "value" => "1"} [2026-08-21 11:38:49.440] [DEBUG] QUERY OK db=24.1ms idle=73.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "1", "data_usage_mb", 77807, ~N[2026-08-21 11:38:49], ~N[2026-08-21 11:38:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:49.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790876, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:49], updated_at: ~N[2026-08-21 11:38:49]}} [2026-08-21 11:38:49.440] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:38:13Z", "value" => "0"} [2026-08-21 11:38:49.499] [DEBUG] QUERY OK db=58.2ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "0", "mobile_data_mb", 77807, ~N[2026-08-21 11:38:49], ~N[2026-08-21 11:38:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:49.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790877, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:49], updated_at: ~N[2026-08-21 11:38:49]}} [2026-08-21 11:38:49.502] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:38:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:38:49.555] [DEBUG] QUERY OK db=51.7ms idle=63.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:13Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77807, ~N[2026-08-21 11:38:49], ~N[2026-08-21 11:38:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:38:49.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790878, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:38:13Z", message: nil, status_log_id: 77807, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:38:49], updated_at: ~N[2026-08-21 11:38:49]}} [2026-08-21 11:38:49.557] [WARN ] Unexpected async result [2026-08-21 11:38:49.557] [WARN ] Unexpected async result [2026-08-21 11:39:16.442] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:39:16.442] [INFO ] Incoming JSON payload: {"oid":"6a6f7eea-bcb3-4e07-bee1-9a49289acea2","sn":"98251226730001","uploadTime":"2026-08-21T11:39:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:39:16Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:39:16.443] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6a6f7eea-bcb3-4e07-bee1-9a49289acea2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:39:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:39:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:39:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:39:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:39:16Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:39:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:39:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:39:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:39:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:39:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:39:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:39:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:39:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:39:16Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:39:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:39:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:39:16Z", "vendor" => "morefun"} [2026-08-21 11:39:16.444] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:39:16.444] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:39:16.444] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:39:16.445] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1218.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-08-21 11:39:16.445] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=216.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-08-21 11:39:16.445] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:39:16.446] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:39:16.446] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:39:16.479] [DEBUG] QUERY OK source="tms_terminals" db=32.9ms idle=1.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:39:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:39:16.480] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:39:16.481] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=33.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:39:16.522] [DEBUG] QUERY OK source="tms_terminals" db=40.5ms queue=0.3ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:39:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:39:16.563] [DEBUG] QUERY OK db=39.6ms queue=1.0ms idle=41.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6a6f7eea-bcb3-4e07-bee1-9a49289acea2", "2026-08-21T11:39:16Z", ~N[2026-08-21 11:39:16], ~N[2026-08-21 11:39:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:39:16.563] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77808, oid: "6a6f7eea-bcb3-4e07-bee1-9a49289acea2", upload_time: "2026-08-21T11:39:16Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:16], updated_at: ~N[2026-08-21 11:39:16]} [2026-08-21 11:39:16.563] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:39:16Z", "value" => "morefun"} [2026-08-21 11:39:16.590] [DEBUG] QUERY OK db=26.7ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "morefun", "vendor", 77808, ~N[2026-08-21 11:39:16], ~N[2026-08-21 11:39:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:16.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790879, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:16], updated_at: ~N[2026-08-21 11:39:16]}} [2026-08-21 11:39:16.591] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:39:16Z", "value" => "kiosk_launcher"} [2026-08-21 11:39:16.632] [DEBUG] QUERY OK db=40.9ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "kiosk_launcher", "model", 77808, ~N[2026-08-21 11:39:16], ~N[2026-08-21 11:39:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:16.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790880, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:16], updated_at: ~N[2026-08-21 11:39:16]}} [2026-08-21 11:39:16.632] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:39:16Z", "value" => "1.0"} [2026-08-21 11:39:16.707] [DEBUG] QUERY OK db=74.1ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "1.0", "app_version", 77808, ~N[2026-08-21 11:39:16], ~N[2026-08-21 11:39:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:16.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790881, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:16], updated_at: ~N[2026-08-21 11:39:16]}} [2026-08-21 11:39:16.707] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:39:16Z", "value" => "13"} [2026-08-21 11:39:16.756] [DEBUG] QUERY OK db=48.3ms idle=75.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "13", "android_version", 77808, ~N[2026-08-21 11:39:16], ~N[2026-08-21 11:39:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:16.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790882, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:16], updated_at: ~N[2026-08-21 11:39:16]}} [2026-08-21 11:39:16.756] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:39:16Z", "value" => "917"} [2026-08-21 11:39:16.832] [DEBUG] QUERY OK db=75.8ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "917", "ram_free_mb", 77808, ~N[2026-08-21 11:39:16], ~N[2026-08-21 11:39:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:16.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790883, itemkey: "ram_free_mb", value: "917", timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:16], updated_at: ~N[2026-08-21 11:39:16]}} [2026-08-21 11:39:16.833] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:39:16Z", "value" => "WIFI"} [2026-08-21 11:39:16.863] [DEBUG] QUERY OK db=29.4ms idle=77.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "WIFI", "network_type", 77808, ~N[2026-08-21 11:39:16], ~N[2026-08-21 11:39:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:16.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790884, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:16], updated_at: ~N[2026-08-21 11:39:16]}} [2026-08-21 11:39:16.863] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:39:16Z", "value" => "true"} [2026-08-21 11:39:16.903] [DEBUG] QUERY OK db=39.4ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "true", "kiosk_active", 77808, ~N[2026-08-21 11:39:16], ~N[2026-08-21 11:39:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:16.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790885, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:16], updated_at: ~N[2026-08-21 11:39:16]}} [2026-08-21 11:39:16.903] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:39:16Z", "value" => ""} [2026-08-21 11:39:16.944] [DEBUG] QUERY OK db=40.6ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:39:16Z", "sim_operator", 77808, ~N[2026-08-21 11:39:16], ~N[2026-08-21 11:39:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:16.945] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790886, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:16], updated_at: ~N[2026-08-21 11:39:16]}} [2026-08-21 11:39:16.945] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:39:16Z", "value" => "UNKNOWN"} [2026-08-21 11:39:16.988] [DEBUG] QUERY OK db=41.8ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "UNKNOWN", "sim_number", 77808, ~N[2026-08-21 11:39:16], ~N[2026-08-21 11:39:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:16.988] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790887, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:16], updated_at: ~N[2026-08-21 11:39:16]}} [2026-08-21 11:39:16.988] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:39:16Z", "value" => "UNKNOWN"} [2026-08-21 11:39:17.021] [DEBUG] QUERY OK db=32.6ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "UNKNOWN", "sim_iccid", 77808, ~N[2026-08-21 11:39:16], ~N[2026-08-21 11:39:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790888, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:16], updated_at: ~N[2026-08-21 11:39:16]}} [2026-08-21 11:39:17.022] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:39:16Z", "value" => "UNKNOWN"} [2026-08-21 11:39:17.056] [DEBUG] QUERY OK db=33.9ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "UNKNOWN", "sim_imsi", 77808, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790889, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.056] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:39:16Z", "value" => "UNKNOWN"} [2026-08-21 11:39:17.101] [DEBUG] QUERY OK db=44.0ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "UNKNOWN", "sim_iccid2", 77808, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790890, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.101] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:39:16Z", "value" => "UNKNOWN"} [2026-08-21 11:39:17.146] [DEBUG] QUERY OK db=44.7ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "UNKNOWN", "sim_imsi2", 77808, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790891, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.147] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:39:16Z", "value" => "34"} [2026-08-21 11:39:17.229] [DEBUG] QUERY OK db=82.1ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "34", "data_usage_mb", 77808, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790892, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.229] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:39:16Z", "value" => "0"} [2026-08-21 11:39:17.272] [DEBUG] QUERY OK db=42.2ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "0", "mobile_data_mb", 77808, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790893, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.273] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:39:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:39:17.312] [DEBUG] QUERY OK db=37.8ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:16Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77808, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790894, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:39:16Z", message: nil, status_log_id: 77808, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.313] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:39:17.314] [INFO ] Incoming JSON payload: {"oid":"43007ee1-1d3b-4f9f-8f82-824552233f6e","sn":"98251226730002","uploadTime":"2026-08-21T11:38:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"ram_free_mb","value":"998","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:38:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:39:17.316] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "43007ee1-1d3b-4f9f-8f82-824552233f6e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:38:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:38:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:38:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:38:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:38:43Z", "value" => "998"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:38:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:38:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:38:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:38:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:38:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:38:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:38:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:38:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:38:43Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:38:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:38:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:38:43Z", "vendor" => "morefun"} [2026-08-21 11:39:17.316] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:39:17.316] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:39:17.316] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:39:17.317] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=44.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-08-21 11:39:17.318] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=6.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-08-21 11:39:17.318] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:39:17.319] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:39:17.319] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:39:17.346] [DEBUG] QUERY OK source="tms_terminals" db=25.9ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:39:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:39:17.346] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:39:17.347] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=27.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:39:17.423] [DEBUG] QUERY OK source="tms_terminals" db=75.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:39:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:39:17.478] [DEBUG] QUERY OK db=53.9ms idle=76.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "43007ee1-1d3b-4f9f-8f82-824552233f6e", "2026-08-21T11:38:43Z", ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:39:17.478] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77809, oid: "43007ee1-1d3b-4f9f-8f82-824552233f6e", upload_time: "2026-08-21T11:38:43Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]} [2026-08-21 11:39:17.478] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:38:43Z", "value" => "morefun"} [2026-08-21 11:39:17.505] [DEBUG] QUERY OK db=26.1ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "morefun", "vendor", 77809, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790895, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.505] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:38:43Z", "value" => "kiosk_launcher"} [2026-08-21 11:39:17.564] [DEBUG] QUERY OK db=58.8ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "kiosk_launcher", "model", 77809, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790896, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.566] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:38:43Z", "value" => "1.0"} [2026-08-21 11:39:17.604] [DEBUG] QUERY OK db=36.5ms idle=61.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "1.0", "app_version", 77809, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790897, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.604] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:38:43Z", "value" => "13"} [2026-08-21 11:39:17.674] [DEBUG] QUERY OK db=69.2ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "13", "android_version", 77809, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.674] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790898, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.674] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:38:43Z", "value" => "998"} [2026-08-21 11:39:17.747] [DEBUG] QUERY OK db=72.7ms idle=71.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "998", "ram_free_mb", 77809, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.748] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790899, itemkey: "ram_free_mb", value: "998", timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.748] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:38:43Z", "value" => "WIFI"} [2026-08-21 11:39:17.796] [DEBUG] QUERY OK db=48.1ms idle=74.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "WIFI", "network_type", 77809, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.797] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790900, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.797] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:38:43Z", "value" => "true"} [2026-08-21 11:39:17.835] [DEBUG] QUERY OK db=38.4ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "true", "kiosk_active", 77809, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.836] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790901, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.836] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:38:43Z", "value" => ""} [2026-08-21 11:39:17.883] [DEBUG] QUERY OK db=47.0ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:38:43Z", "sim_operator", 77809, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.884] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790902, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.884] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:38:43Z", "value" => "UNKNOWN"} [2026-08-21 11:39:17.945] [DEBUG] QUERY OK db=61.1ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "UNKNOWN", "sim_number", 77809, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.946] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790903, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.946] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:38:43Z", "value" => "UNKNOWN"} [2026-08-21 11:39:17.980] [DEBUG] QUERY OK db=34.3ms idle=62.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "UNKNOWN", "sim_iccid", 77809, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:17.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790904, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:17.981] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:38:43Z", "value" => "UNKNOWN"} [2026-08-21 11:39:18.023] [DEBUG] QUERY OK db=41.5ms queue=0.1ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "UNKNOWN", "sim_imsi", 77809, ~N[2026-08-21 11:39:17], ~N[2026-08-21 11:39:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:18.023] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790905, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:17], updated_at: ~N[2026-08-21 11:39:17]}} [2026-08-21 11:39:18.023] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:38:43Z", "value" => "UNKNOWN"} [2026-08-21 11:39:18.067] [DEBUG] QUERY OK db=43.5ms queue=0.1ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "UNKNOWN", "sim_iccid2", 77809, ~N[2026-08-21 11:39:18], ~N[2026-08-21 11:39:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:18.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790906, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:18], updated_at: ~N[2026-08-21 11:39:18]}} [2026-08-21 11:39:18.068] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:38:43Z", "value" => "UNKNOWN"} [2026-08-21 11:39:18.114] [DEBUG] QUERY OK db=45.5ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "UNKNOWN", "sim_imsi2", 77809, ~N[2026-08-21 11:39:18], ~N[2026-08-21 11:39:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:18.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790907, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:18], updated_at: ~N[2026-08-21 11:39:18]}} [2026-08-21 11:39:18.115] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:38:43Z", "value" => "1"} [2026-08-21 11:39:18.153] [DEBUG] QUERY OK db=37.4ms queue=0.2ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "1", "data_usage_mb", 77809, ~N[2026-08-21 11:39:18], ~N[2026-08-21 11:39:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:18.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790908, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:18], updated_at: ~N[2026-08-21 11:39:18]}} [2026-08-21 11:39:18.153] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:38:43Z", "value" => "0"} [2026-08-21 11:39:18.197] [DEBUG] QUERY OK db=41.2ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "0", "mobile_data_mb", 77809, ~N[2026-08-21 11:39:18], ~N[2026-08-21 11:39:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:18.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790909, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:18], updated_at: ~N[2026-08-21 11:39:18]}} [2026-08-21 11:39:18.198] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:38:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:39:18.241] [DEBUG] QUERY OK db=42.6ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:38:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77809, ~N[2026-08-21 11:39:18], ~N[2026-08-21 11:39:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:18.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790910, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:38:43Z", message: nil, status_log_id: 77809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:18], updated_at: ~N[2026-08-21 11:39:18]}} [2026-08-21 11:39:46.629] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:39:46.629] [INFO ] Incoming JSON payload: {"oid":"d675b93c-1ffd-4bb7-9982-d6c1625199a7","sn":"98251226730001","uploadTime":"2026-08-21T11:39:46Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:39:46Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:39:46Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:39:46Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:39:46Z"},{"itemkey":"ram_free_mb","value":"916","timestamp":"2026-08-21T11:39:46Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:39:46Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:39:46Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:39:46Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:39:46Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:39:46Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:39:46Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:39:46Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:39:46Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:39:46Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:39: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:39:46.631] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d675b93c-1ffd-4bb7-9982-d6c1625199a7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:39:46Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:39:46Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:39:46Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:39:46Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:39:46Z", "value" => "916"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:39:46Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:39:46Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:39:46Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:39:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:39:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:39:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:39:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:39:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:39:46Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:39:46Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:39: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:39:46Z", "vendor" => "morefun"} [2026-08-21 11:39:46.631] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:39:46.632] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:39:46.632] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:39:46.635] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.4ms idle=1296.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-08-21 11:39:46.636] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=295.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-08-21 11:39:46.636] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:39:46.637] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=2.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:39:46.638] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:39:46.686] [DEBUG] QUERY OK source="tms_terminals" db=45.7ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:39:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:39:46.686] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:39:46.687] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:39:46.717] [DEBUG] QUERY OK source="tms_terminals" db=29.0ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:39:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:39:46.744] [DEBUG] QUERY OK db=26.8ms idle=29.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "d675b93c-1ffd-4bb7-9982-d6c1625199a7", "2026-08-21T11:39:46Z", ~N[2026-08-21 11:39:46], ~N[2026-08-21 11:39:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:39:46.744] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77810, oid: "d675b93c-1ffd-4bb7-9982-d6c1625199a7", upload_time: "2026-08-21T11:39:46Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:46], updated_at: ~N[2026-08-21 11:39:46]} [2026-08-21 11:39:46.744] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:39:46Z", "value" => "morefun"} [2026-08-21 11:39:46.798] [DEBUG] QUERY OK db=52.5ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:46Z", "morefun", "vendor", 77810, ~N[2026-08-21 11:39:46], ~N[2026-08-21 11:39:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:46.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790911, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:46], updated_at: ~N[2026-08-21 11:39:46]}} [2026-08-21 11:39:46.800] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:39:46Z", "value" => "kiosk_launcher"} [2026-08-21 11:39:46.852] [DEBUG] QUERY OK db=50.6ms queue=0.8ms idle=56.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:46Z", "kiosk_launcher", "model", 77810, ~N[2026-08-21 11:39:46], ~N[2026-08-21 11:39:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:46.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790912, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:46], updated_at: ~N[2026-08-21 11:39:46]}} [2026-08-21 11:39:46.852] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:39:46Z", "value" => "1.0"} [2026-08-21 11:39:46.919] [DEBUG] QUERY OK db=65.8ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:46Z", "1.0", "app_version", 77810, ~N[2026-08-21 11:39:46], ~N[2026-08-21 11:39:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:46.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790913, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:46], updated_at: ~N[2026-08-21 11:39:46]}} [2026-08-21 11:39:46.919] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:39:46Z", "value" => "13"} [2026-08-21 11:39:46.962] [DEBUG] QUERY OK db=42.1ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:46Z", "13", "android_version", 77810, ~N[2026-08-21 11:39:46], ~N[2026-08-21 11:39:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:46.962] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790914, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:46], updated_at: ~N[2026-08-21 11:39:46]}} [2026-08-21 11:39:46.962] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:39:46Z", "value" => "916"} [2026-08-21 11:39:47.001] [DEBUG] QUERY OK db=38.4ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:46Z", "916", "ram_free_mb", 77810, ~N[2026-08-21 11:39:46], ~N[2026-08-21 11:39:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:47.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790915, itemkey: "ram_free_mb", value: "916", timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:46], updated_at: ~N[2026-08-21 11:39:46]}} [2026-08-21 11:39:47.002] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:39:46Z", "value" => "WIFI"} [2026-08-21 11:39:47.038] [DEBUG] QUERY OK db=36.2ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:46Z", "WIFI", "network_type", 77810, ~N[2026-08-21 11:39:47], ~N[2026-08-21 11:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:47.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790916, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:47], updated_at: ~N[2026-08-21 11:39:47]}} [2026-08-21 11:39:47.038] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:39:46Z", "value" => "true"} [2026-08-21 11:39:47.146] [DEBUG] QUERY OK db=107.4ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:46Z", "true", "kiosk_active", 77810, ~N[2026-08-21 11:39:47], ~N[2026-08-21 11:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:47.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790917, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:47], updated_at: ~N[2026-08-21 11:39:47]}} [2026-08-21 11:39:47.147] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:39:46Z", "value" => ""} [2026-08-21 11:39:47.181] [DEBUG] QUERY OK db=34.0ms queue=0.1ms idle=109.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:39:46Z", "sim_operator", 77810, ~N[2026-08-21 11:39:47], ~N[2026-08-21 11:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:47.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790918, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:47], updated_at: ~N[2026-08-21 11:39:47]}} [2026-08-21 11:39:47.182] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:39:46Z", "value" => "UNKNOWN"} [2026-08-21 11:39:47.210] [DEBUG] QUERY OK db=27.2ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:46Z", "UNKNOWN", "sim_number", 77810, ~N[2026-08-21 11:39:47], ~N[2026-08-21 11:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:47.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790919, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:47], updated_at: ~N[2026-08-21 11:39:47]}} [2026-08-21 11:39:47.210] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:39:46Z", "value" => "UNKNOWN"} [2026-08-21 11:39:47.277] [DEBUG] QUERY OK db=64.8ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:46Z", "UNKNOWN", "sim_iccid", 77810, ~N[2026-08-21 11:39:47], ~N[2026-08-21 11:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:47.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790920, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:47], updated_at: ~N[2026-08-21 11:39:47]}} [2026-08-21 11:39:47.277] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:39:46Z", "value" => "UNKNOWN"} [2026-08-21 11:39:47.306] [DEBUG] QUERY OK db=28.4ms idle=67.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:46Z", "UNKNOWN", "sim_imsi", 77810, ~N[2026-08-21 11:39:47], ~N[2026-08-21 11:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:47.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790921, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:47], updated_at: ~N[2026-08-21 11:39:47]}} [2026-08-21 11:39:47.307] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:39:46Z", "value" => "UNKNOWN"} [2026-08-21 11:39:47.396] [DEBUG] QUERY OK db=89.0ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:46Z", "UNKNOWN", "sim_iccid2", 77810, ~N[2026-08-21 11:39:47], ~N[2026-08-21 11:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:47.397] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790922, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:47], updated_at: ~N[2026-08-21 11:39:47]}} [2026-08-21 11:39:47.397] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:39:46Z", "value" => "UNKNOWN"} [2026-08-21 11:39:47.426] [DEBUG] QUERY OK db=29.1ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:46Z", "UNKNOWN", "sim_imsi2", 77810, ~N[2026-08-21 11:39:47], ~N[2026-08-21 11:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:47.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790923, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:47], updated_at: ~N[2026-08-21 11:39:47]}} [2026-08-21 11:39:47.427] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:39:46Z", "value" => "34"} [2026-08-21 11:39:47.487] [DEBUG] QUERY OK db=59.9ms queue=0.1ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:46Z", "34", "data_usage_mb", 77810, ~N[2026-08-21 11:39:47], ~N[2026-08-21 11:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:47.487] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790924, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:47], updated_at: ~N[2026-08-21 11:39:47]}} [2026-08-21 11:39:47.488] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:39:46Z", "value" => "0"} [2026-08-21 11:39:47.515] [DEBUG] QUERY OK db=27.1ms idle=61.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:46Z", "0", "mobile_data_mb", 77810, ~N[2026-08-21 11:39:47], ~N[2026-08-21 11:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:47.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790925, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:47], updated_at: ~N[2026-08-21 11:39:47]}} [2026-08-21 11:39:47.517] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:39: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:39:47.586] [DEBUG] QUERY OK db=68.5ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77810, ~N[2026-08-21 11:39:47], ~N[2026-08-21 11:39:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:47.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790926, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:39:46Z", message: nil, status_log_id: 77810, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:47], updated_at: ~N[2026-08-21 11:39:47]}} [2026-08-21 11:39:47.589] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:39:47.589] [INFO ] Incoming JSON payload: {"oid":"0f621999-de05-44f3-9c71-21fc43f32dbf","sn":"98251226730002","uploadTime":"2026-08-21T11:39:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"ram_free_mb","value":"996","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:39:13Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:39:47.590] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0f621999-de05-44f3-9c71-21fc43f32dbf", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:39:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:39:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:39:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:39:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:39:13Z", "value" => "996"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:39:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:39:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:39:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:39:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:39:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:39:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:39:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:39:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:39:13Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:39:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:39:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:39:13Z", "vendor" => "morefun"} [2026-08-21 11:39:47.590] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:39:47.590] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:39:47.590] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:39:47.593] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms idle=75.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-08-21 11:39:47.594] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.1ms idle=7.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:39:47.594] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:39:47.596] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:39:47.596] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:39:47.793] [DEBUG] QUERY OK source="tms_terminals" db=196.0ms queue=0.5ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:39:47], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:39:47.793] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:39:47.794] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=197.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:39:47.867] [DEBUG] QUERY OK source="tms_terminals" db=72.1ms queue=0.4ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:39:47], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:39:48.045] [DEBUG] QUERY OK db=178.2ms idle=73.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "0f621999-de05-44f3-9c71-21fc43f32dbf", "2026-08-21T11:39:13Z", ~N[2026-08-21 11:39:47], ~N[2026-08-21 11:39:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:39:48.046] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77811, oid: "0f621999-de05-44f3-9c71-21fc43f32dbf", upload_time: "2026-08-21T11:39:13Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:47], updated_at: ~N[2026-08-21 11:39:47]} [2026-08-21 11:39:48.046] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:39:13Z", "value" => "morefun"} [2026-08-21 11:39:48.162] [DEBUG] QUERY OK db=115.3ms idle=179.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "morefun", "vendor", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:48.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790927, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:48.165] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:39:13Z", "value" => "kiosk_launcher"} [2026-08-21 11:39:48.230] [DEBUG] QUERY OK db=64.1ms idle=120.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "kiosk_launcher", "model", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:48.231] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790928, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:48.231] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:39:13Z", "value" => "1.0"} [2026-08-21 11:39:48.426] [DEBUG] QUERY OK db=194.4ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "1.0", "app_version", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:48.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790929, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:48.426] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:39:13Z", "value" => "13"} [2026-08-21 11:39:48.504] [DEBUG] QUERY OK db=77.3ms idle=82.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "13", "android_version", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:48.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790930, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:48.505] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:39:13Z", "value" => "996"} [2026-08-21 11:39:48.555] [DEBUG] QUERY OK db=49.8ms idle=79.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "996", "ram_free_mb", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:48.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790931, itemkey: "ram_free_mb", value: "996", timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:48.556] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:39:13Z", "value" => "WIFI"} [2026-08-21 11:39:48.595] [DEBUG] QUERY OK db=37.8ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "WIFI", "network_type", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:48.595] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790932, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:48.595] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:39:13Z", "value" => "true"} [2026-08-21 11:39:48.631] [DEBUG] QUERY OK db=35.6ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "true", "kiosk_active", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:48.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790933, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:48.632] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:39:13Z", "value" => ""} [2026-08-21 11:39:48.680] [DEBUG] QUERY OK db=47.5ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:39:13Z", "sim_operator", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:48.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790934, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:48.680] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:39:13Z", "value" => "UNKNOWN"} [2026-08-21 11:39:48.733] [DEBUG] QUERY OK db=52.6ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "UNKNOWN", "sim_number", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:48.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790935, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:48.734] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:39:13Z", "value" => "UNKNOWN"} [2026-08-21 11:39:48.789] [DEBUG] QUERY OK db=54.8ms idle=54.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "UNKNOWN", "sim_iccid", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:48.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790936, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:48.790] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:39:13Z", "value" => "UNKNOWN"} [2026-08-21 11:39:48.824] [DEBUG] QUERY OK db=34.2ms idle=56.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "UNKNOWN", "sim_imsi", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:48.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790937, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:48.825] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:39:13Z", "value" => "UNKNOWN"} [2026-08-21 11:39:48.871] [DEBUG] QUERY OK db=46.2ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "UNKNOWN", "sim_iccid2", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:48.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790938, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:48.872] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:39:13Z", "value" => "UNKNOWN"} [2026-08-21 11:39:48.934] [DEBUG] QUERY OK db=62.4ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "UNKNOWN", "sim_imsi2", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:48.935] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790939, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:48.935] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:39:13Z", "value" => "1"} [2026-08-21 11:39:48.984] [DEBUG] QUERY OK db=48.3ms idle=64.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "1", "data_usage_mb", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:48.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790940, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:48.984] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:39:13Z", "value" => "0"} [2026-08-21 11:39:49.066] [DEBUG] QUERY OK db=80.8ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "0", "mobile_data_mb", 77811, ~N[2026-08-21 11:39:48], ~N[2026-08-21 11:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:49.066] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790941, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:48], updated_at: ~N[2026-08-21 11:39:48]}} [2026-08-21 11:39:49.067] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:39:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:39:49.127] [DEBUG] QUERY OK db=59.7ms idle=83.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:13Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77811, ~N[2026-08-21 11:39:49], ~N[2026-08-21 11:39:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:39:49.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790942, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:39:13Z", message: nil, status_log_id: 77811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:39:49], updated_at: ~N[2026-08-21 11:39:49]}} [2026-08-21 11:40:16.730] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:40:16.730] [INFO ] Incoming JSON payload: {"oid":"1fb4e164-341d-4982-a4ac-13a781def5bd","sn":"98251226730001","uploadTime":"2026-08-21T11:40:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"ram_free_mb","value":"929","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:40:16Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:40:16.732] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1fb4e164-341d-4982-a4ac-13a781def5bd", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:40:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:40:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:40:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:40:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:40:16Z", "value" => "929"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:40:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:40:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:40:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:40:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:40:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:40:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:40:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:40:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:40:16Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:40:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:40:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:40:16Z", "vendor" => "morefun"} [2026-08-21 11:40:16.732] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:40:16.732] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:40:16.732] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:40:16.739] [DEBUG] QUERY OK source="parameter_templates" db=6.5ms idle=709.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-08-21 11:40:16.743] [DEBUG] QUERY OK source="parameter_templates" db=3.7ms idle=280.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-08-21 11:40:16.745] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:40:16.747] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=6.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:40:16.748] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:40:16.788] [DEBUG] QUERY OK source="tms_terminals" db=39.8ms idle=4.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:40:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:40:16.788] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:40:16.790] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=42.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:40:16.846] [DEBUG] QUERY OK source="tms_terminals" db=54.5ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:40:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:40:16.879] [DEBUG] QUERY OK db=32.1ms idle=56.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "1fb4e164-341d-4982-a4ac-13a781def5bd", "2026-08-21T11:40:16Z", ~N[2026-08-21 11:40:16], ~N[2026-08-21 11:40:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:40:16.879] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77812, oid: "1fb4e164-341d-4982-a4ac-13a781def5bd", upload_time: "2026-08-21T11:40:16Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:16], updated_at: ~N[2026-08-21 11:40:16]} [2026-08-21 11:40:16.880] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:40:16Z", "value" => "morefun"} [2026-08-21 11:40:16.939] [DEBUG] QUERY OK db=58.3ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "morefun", "vendor", 77812, ~N[2026-08-21 11:40:16], ~N[2026-08-21 11:40:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:16.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790943, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:16], updated_at: ~N[2026-08-21 11:40:16]}} [2026-08-21 11:40:16.939] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:40:16Z", "value" => "kiosk_launcher"} [2026-08-21 11:40:16.969] [DEBUG] QUERY OK db=30.0ms idle=60.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "kiosk_launcher", "model", 77812, ~N[2026-08-21 11:40:16], ~N[2026-08-21 11:40:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:16.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790944, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:16], updated_at: ~N[2026-08-21 11:40:16]}} [2026-08-21 11:40:16.970] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:40:16Z", "value" => "1.0"} [2026-08-21 11:40:17.002] [DEBUG] QUERY OK db=31.9ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "1.0", "app_version", 77812, ~N[2026-08-21 11:40:16], ~N[2026-08-21 11:40:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790945, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:16], updated_at: ~N[2026-08-21 11:40:16]}} [2026-08-21 11:40:17.003] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:40:16Z", "value" => "13"} [2026-08-21 11:40:17.042] [DEBUG] QUERY OK db=39.3ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "13", "android_version", 77812, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790946, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.043] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:40:16Z", "value" => "929"} [2026-08-21 11:40:17.087] [DEBUG] QUERY OK db=40.6ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "929", "ram_free_mb", 77812, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790947, itemkey: "ram_free_mb", value: "929", timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.089] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:40:16Z", "value" => "WIFI"} [2026-08-21 11:40:17.135] [DEBUG] QUERY OK db=45.7ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "WIFI", "network_type", 77812, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.135] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790948, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.135] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:40:16Z", "value" => "true"} [2026-08-21 11:40:17.169] [DEBUG] QUERY OK db=32.8ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "true", "kiosk_active", 77812, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.169] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790949, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.169] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:40:16Z", "value" => ""} [2026-08-21 11:40:17.224] [DEBUG] QUERY OK db=54.2ms queue=0.1ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:40:16Z", "sim_operator", 77812, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790950, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.224] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:40:16Z", "value" => "UNKNOWN"} [2026-08-21 11:40:17.273] [DEBUG] QUERY OK db=47.6ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "UNKNOWN", "sim_number", 77812, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790951, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.273] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:40:16Z", "value" => "UNKNOWN"} [2026-08-21 11:40:17.329] [DEBUG] QUERY OK db=54.6ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "UNKNOWN", "sim_iccid", 77812, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790952, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.329] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:40:16Z", "value" => "UNKNOWN"} [2026-08-21 11:40:17.359] [DEBUG] QUERY OK db=28.7ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "UNKNOWN", "sim_imsi", 77812, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.359] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790953, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.359] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:40:16Z", "value" => "UNKNOWN"} [2026-08-21 11:40:17.409] [DEBUG] QUERY OK db=49.2ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "UNKNOWN", "sim_iccid2", 77812, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.409] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790954, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.410] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:40:16Z", "value" => "UNKNOWN"} [2026-08-21 11:40:17.451] [DEBUG] QUERY OK db=40.9ms queue=0.1ms idle=51.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "UNKNOWN", "sim_imsi2", 77812, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790955, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.451] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:40:16Z", "value" => "34"} [2026-08-21 11:40:17.506] [DEBUG] QUERY OK db=54.2ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "34", "data_usage_mb", 77812, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790956, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.507] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:40:16Z", "value" => "0"} [2026-08-21 11:40:17.551] [DEBUG] QUERY OK db=43.7ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "0", "mobile_data_mb", 77812, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790957, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.552] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:40:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:40:17.604] [DEBUG] QUERY OK db=49.9ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:16Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77812, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790958, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:40:16Z", message: nil, status_log_id: 77812, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.607] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:40:17.608] [INFO ] Incoming JSON payload: {"oid":"5d905361-8f0a-4325-a1c9-2743a7539eb7","sn":"98251226730002","uploadTime":"2026-08-21T11:39:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"ram_free_mb","value":"992","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:39:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:40:17.610] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5d905361-8f0a-4325-a1c9-2743a7539eb7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:39:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:39:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:39:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:39:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:39:43Z", "value" => "992"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:39:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:39:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:39:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:39:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:39:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:39:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:39:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:39:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:39:43Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:39:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:39:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:39:43Z", "vendor" => "morefun"} [2026-08-21 11:40:17.610] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:40:17.610] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:40:17.610] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:40:17.611] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=59.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-08-21 11:40:17.612] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=9.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-08-21 11:40:17.612] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:40:17.613] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:40:17.613] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:40:17.649] [DEBUG] QUERY OK source="tms_terminals" db=35.2ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:40:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:40:17.649] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:40:17.650] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=36.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:40:17.740] [DEBUG] QUERY OK source="tms_terminals" db=89.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:40:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:40:17.825] [DEBUG] QUERY OK db=84.9ms idle=89.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "5d905361-8f0a-4325-a1c9-2743a7539eb7", "2026-08-21T11:39:43Z", ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:40:17.825] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77813, oid: "5d905361-8f0a-4325-a1c9-2743a7539eb7", upload_time: "2026-08-21T11:39:43Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]} [2026-08-21 11:40:17.826] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:39:43Z", "value" => "morefun"} [2026-08-21 11:40:17.864] [DEBUG] QUERY OK db=37.6ms idle=86.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:43Z", "morefun", "vendor", 77813, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.864] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790959, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.865] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:39:43Z", "value" => "kiosk_launcher"} [2026-08-21 11:40:17.897] [DEBUG] QUERY OK db=32.5ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:43Z", "kiosk_launcher", "model", 77813, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.898] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790960, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.898] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:39:43Z", "value" => "1.0"} [2026-08-21 11:40:17.951] [DEBUG] QUERY OK db=51.3ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:43Z", "1.0", "app_version", 77813, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.951] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790961, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.951] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:39:43Z", "value" => "13"} [2026-08-21 11:40:17.994] [DEBUG] QUERY OK db=41.3ms queue=0.1ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:43Z", "13", "android_version", 77813, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:17.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790962, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:17.994] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:39:43Z", "value" => "992"} [2026-08-21 11:40:18.054] [DEBUG] QUERY OK db=59.0ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:43Z", "992", "ram_free_mb", 77813, ~N[2026-08-21 11:40:17], ~N[2026-08-21 11:40:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:18.055] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790963, itemkey: "ram_free_mb", value: "992", timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:17], updated_at: ~N[2026-08-21 11:40:17]}} [2026-08-21 11:40:18.055] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:39:43Z", "value" => "WIFI"} [2026-08-21 11:40:18.078] [DEBUG] QUERY OK db=22.8ms queue=0.1ms idle=61.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:43Z", "WIFI", "network_type", 77813, ~N[2026-08-21 11:40:18], ~N[2026-08-21 11:40:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:18.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790964, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:18], updated_at: ~N[2026-08-21 11:40:18]}} [2026-08-21 11:40:18.078] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:39:43Z", "value" => "true"} [2026-08-21 11:40:18.127] [DEBUG] QUERY OK db=48.1ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:43Z", "true", "kiosk_active", 77813, ~N[2026-08-21 11:40:18], ~N[2026-08-21 11:40:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:18.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790965, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:18], updated_at: ~N[2026-08-21 11:40:18]}} [2026-08-21 11:40:18.128] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:39:43Z", "value" => ""} [2026-08-21 11:40:18.177] [DEBUG] QUERY OK db=48.9ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:39:43Z", "sim_operator", 77813, ~N[2026-08-21 11:40:18], ~N[2026-08-21 11:40:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:18.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790966, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:18], updated_at: ~N[2026-08-21 11:40:18]}} [2026-08-21 11:40:18.177] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:39:43Z", "value" => "UNKNOWN"} [2026-08-21 11:40:18.211] [DEBUG] QUERY OK db=33.5ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:43Z", "UNKNOWN", "sim_number", 77813, ~N[2026-08-21 11:40:18], ~N[2026-08-21 11:40:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:18.212] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790967, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:18], updated_at: ~N[2026-08-21 11:40:18]}} [2026-08-21 11:40:18.212] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:39:43Z", "value" => "UNKNOWN"} [2026-08-21 11:40:18.254] [DEBUG] QUERY OK db=41.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-08-21T11:39:43Z", "UNKNOWN", "sim_iccid", 77813, ~N[2026-08-21 11:40:18], ~N[2026-08-21 11:40:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:18.254] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790968, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:18], updated_at: ~N[2026-08-21 11:40:18]}} [2026-08-21 11:40:18.254] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:39:43Z", "value" => "UNKNOWN"} [2026-08-21 11:40:18.284] [DEBUG] QUERY OK db=29.5ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:43Z", "UNKNOWN", "sim_imsi", 77813, ~N[2026-08-21 11:40:18], ~N[2026-08-21 11:40:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:18.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790969, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:18], updated_at: ~N[2026-08-21 11:40:18]}} [2026-08-21 11:40:18.284] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:39:43Z", "value" => "UNKNOWN"} [2026-08-21 11:40:18.370] [DEBUG] QUERY OK db=84.5ms queue=0.1ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:43Z", "UNKNOWN", "sim_iccid2", 77813, ~N[2026-08-21 11:40:18], ~N[2026-08-21 11:40:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:18.370] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790970, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:18], updated_at: ~N[2026-08-21 11:40:18]}} [2026-08-21 11:40:18.371] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:39:43Z", "value" => "UNKNOWN"} [2026-08-21 11:40:18.420] [DEBUG] QUERY OK db=49.1ms idle=86.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:43Z", "UNKNOWN", "sim_imsi2", 77813, ~N[2026-08-21 11:40:18], ~N[2026-08-21 11:40:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:18.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790971, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:18], updated_at: ~N[2026-08-21 11:40:18]}} [2026-08-21 11:40:18.421] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:39:43Z", "value" => "1"} [2026-08-21 11:40:18.467] [DEBUG] QUERY OK db=46.0ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:43Z", "1", "data_usage_mb", 77813, ~N[2026-08-21 11:40:18], ~N[2026-08-21 11:40:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:18.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790972, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:18], updated_at: ~N[2026-08-21 11:40:18]}} [2026-08-21 11:40:18.468] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:39:43Z", "value" => "0"} [2026-08-21 11:40:18.528] [DEBUG] QUERY OK db=60.2ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:43Z", "0", "mobile_data_mb", 77813, ~N[2026-08-21 11:40:18], ~N[2026-08-21 11:40:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:18.528] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790973, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:18], updated_at: ~N[2026-08-21 11:40:18]}} [2026-08-21 11:40:18.529] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:39:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:40:18.609] [DEBUG] QUERY OK db=79.0ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:39:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77813, ~N[2026-08-21 11:40:18], ~N[2026-08-21 11:40:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:18.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790974, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:39:43Z", message: nil, status_log_id: 77813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:18], updated_at: ~N[2026-08-21 11:40:18]}} [2026-08-21 11:40:46.847] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:40:46.848] [INFO ] Incoming JSON payload: {"oid":"7f804470-3236-483b-9ec0-8843def26732","sn":"98251226730001","uploadTime":"2026-08-21T11:40:46Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:40:46Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:40:46Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:40:46Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:40:46Z"},{"itemkey":"ram_free_mb","value":"925","timestamp":"2026-08-21T11:40:46Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:40:46Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:40:46Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:40:46Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:40:46Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:40:46Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:40:46Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:40:46Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:40:46Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:40:46Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:40: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:40:46.849] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7f804470-3236-483b-9ec0-8843def26732", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:40:46Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:40:46Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:40:46Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:40:46Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:40:46Z", "value" => "925"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:40:46Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:40:46Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:40:46Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:40:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:40:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:40:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:40:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:40:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:40:46Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:40:46Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:40: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:40:46Z", "vendor" => "morefun"} [2026-08-21 11:40:46.849] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:40:46.849] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:40:46.849] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:40:46.850] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=418.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-08-21 11:40:46.851] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=224.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-08-21 11:40:46.851] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:40:46.852] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:40:46.852] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:40:46.880] [DEBUG] QUERY OK source="tms_terminals" db=27.9ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:40:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:40:46.880] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:40:46.881] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:40:46.934] [DEBUG] QUERY OK source="tms_terminals" db=50.8ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:40:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:40:47.033] [DEBUG] QUERY OK db=98.0ms idle=54.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "7f804470-3236-483b-9ec0-8843def26732", "2026-08-21T11:40:46Z", ~N[2026-08-21 11:40:46], ~N[2026-08-21 11:40:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:40:47.034] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77814, oid: "7f804470-3236-483b-9ec0-8843def26732", upload_time: "2026-08-21T11:40:46Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:46], updated_at: ~N[2026-08-21 11:40:46]} [2026-08-21 11:40:47.034] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:40:46Z", "value" => "morefun"} [2026-08-21 11:40:47.101] [DEBUG] QUERY OK db=63.8ms queue=0.7ms idle=103.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:46Z", "morefun", "vendor", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790975, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.101] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:40:46Z", "value" => "kiosk_launcher"} [2026-08-21 11:40:47.179] [DEBUG] QUERY OK db=77.7ms idle=68.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:46Z", "kiosk_launcher", "model", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790976, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.180] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:40:46Z", "value" => "1.0"} [2026-08-21 11:40:47.230] [DEBUG] QUERY OK db=49.4ms idle=79.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:46Z", "1.0", "app_version", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.230] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790977, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.230] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:40:46Z", "value" => "13"} [2026-08-21 11:40:47.268] [DEBUG] QUERY OK db=36.9ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:46Z", "13", "android_version", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790978, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.268] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:40:46Z", "value" => "925"} [2026-08-21 11:40:47.342] [DEBUG] QUERY OK db=73.3ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:46Z", "925", "ram_free_mb", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790979, itemkey: "ram_free_mb", value: "925", timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.342] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:40:46Z", "value" => "WIFI"} [2026-08-21 11:40:47.416] [DEBUG] QUERY OK db=72.8ms idle=75.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:46Z", "WIFI", "network_type", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790980, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.416] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:40:46Z", "value" => "true"} [2026-08-21 11:40:47.458] [DEBUG] QUERY OK db=41.6ms idle=74.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:46Z", "true", "kiosk_active", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790981, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.459] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:40:46Z", "value" => ""} [2026-08-21 11:40:47.533] [DEBUG] QUERY OK db=73.9ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:40:46Z", "sim_operator", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790982, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.533] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:40:46Z", "value" => "UNKNOWN"} [2026-08-21 11:40:47.570] [DEBUG] QUERY OK db=35.5ms idle=75.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:46Z", "UNKNOWN", "sim_number", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790983, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.570] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:40:46Z", "value" => "UNKNOWN"} [2026-08-21 11:40:47.594] [DEBUG] QUERY OK db=23.1ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:46Z", "UNKNOWN", "sim_iccid", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790984, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.594] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:40:46Z", "value" => "UNKNOWN"} [2026-08-21 11:40:47.636] [DEBUG] QUERY OK db=41.4ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:46Z", "UNKNOWN", "sim_imsi", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790985, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.636] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:40:46Z", "value" => "UNKNOWN"} [2026-08-21 11:40:47.681] [DEBUG] QUERY OK db=43.9ms queue=0.6ms idle=7.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:46Z", "UNKNOWN", "sim_iccid2", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790986, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.682] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:40:46Z", "value" => "UNKNOWN"} [2026-08-21 11:40:47.715] [DEBUG] QUERY OK db=32.9ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:46Z", "UNKNOWN", "sim_imsi2", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.716] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790987, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.716] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:40:46Z", "value" => "34"} [2026-08-21 11:40:47.755] [DEBUG] QUERY OK db=37.5ms queue=0.2ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:46Z", "34", "data_usage_mb", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.755] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790988, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.755] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:40:46Z", "value" => "0"} [2026-08-21 11:40:47.778] [DEBUG] QUERY OK db=23.1ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:46Z", "0", "mobile_data_mb", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.779] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790989, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.779] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:40: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:40:47.841] [DEBUG] QUERY OK db=60.0ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77814, ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:47.842] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790990, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:40:46Z", message: nil, status_log_id: 77814, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]}} [2026-08-21 11:40:47.842] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:40:47.843] [INFO ] Incoming JSON payload: {"oid":"2f3a3467-158c-4382-9a8f-40a20e3441c0","sn":"98251226730002","uploadTime":"2026-08-21T11:40:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"ram_free_mb","value":"999","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:40:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:40:47.844] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2f3a3467-158c-4382-9a8f-40a20e3441c0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:40:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:40:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:40:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:40:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:40:14Z", "value" => "999"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:40:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:40:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:40:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:40:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:40:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:40:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:40:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:40:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:40:14Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:40:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:40:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:40:14Z", "vendor" => "morefun"} [2026-08-21 11:40:47.844] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:40:47.844] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:40:47.844] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:40:47.845] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=66.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-08-21 11:40:47.846] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.3ms idle=5.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:40:47.846] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:40:47.849] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:40:47.850] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:40:47.906] [DEBUG] QUERY OK source="tms_terminals" db=54.7ms queue=0.1ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:40:47], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:40:47.906] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:40:47.908] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=57.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:40:47.956] [DEBUG] QUERY OK source="tms_terminals" db=47.8ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:40:47], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:40:48.008] [DEBUG] QUERY OK db=50.9ms idle=48.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "2f3a3467-158c-4382-9a8f-40a20e3441c0", "2026-08-21T11:40:14Z", ~N[2026-08-21 11:40:47], ~N[2026-08-21 11:40:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:40:48.009] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77815, oid: "2f3a3467-158c-4382-9a8f-40a20e3441c0", upload_time: "2026-08-21T11:40:14Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:47], updated_at: ~N[2026-08-21 11:40:47]} [2026-08-21 11:40:48.009] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:40:14Z", "value" => "morefun"} [2026-08-21 11:40:48.070] [DEBUG] QUERY OK db=60.3ms queue=0.1ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "morefun", "vendor", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790991, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.071] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:40:14Z", "value" => "kiosk_launcher"} [2026-08-21 11:40:48.118] [DEBUG] QUERY OK db=45.7ms queue=1.4ms idle=63.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "kiosk_launcher", "model", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790992, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.119] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:40:14Z", "value" => "1.0"} [2026-08-21 11:40:48.155] [DEBUG] QUERY OK db=34.3ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "1.0", "app_version", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.156] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790993, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.156] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:40:14Z", "value" => "13"} [2026-08-21 11:40:48.196] [DEBUG] QUERY OK db=39.8ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "13", "android_version", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790994, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.196] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:40:14Z", "value" => "999"} [2026-08-21 11:40:48.252] [DEBUG] QUERY OK db=55.2ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "999", "ram_free_mb", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790995, itemkey: "ram_free_mb", value: "999", timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.252] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:40:14Z", "value" => "WIFI"} [2026-08-21 11:40:48.294] [DEBUG] QUERY OK db=40.8ms idle=56.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "WIFI", "network_type", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790996, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.294] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:40:14Z", "value" => "true"} [2026-08-21 11:40:48.363] [DEBUG] QUERY OK db=67.9ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "true", "kiosk_active", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790997, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.363] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:40:14Z", "value" => ""} [2026-08-21 11:40:48.420] [DEBUG] QUERY OK db=56.5ms idle=69.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:40:14Z", "sim_operator", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790998, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.421] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:40:14Z", "value" => "UNKNOWN"} [2026-08-21 11:40:48.468] [DEBUG] QUERY OK db=46.9ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "UNKNOWN", "sim_number", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 790999, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.468] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:40:14Z", "value" => "UNKNOWN"} [2026-08-21 11:40:48.521] [DEBUG] QUERY OK db=52.1ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "UNKNOWN", "sim_iccid", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791000, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.521] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:40:14Z", "value" => "UNKNOWN"} [2026-08-21 11:40:48.557] [DEBUG] QUERY OK db=35.2ms idle=53.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "UNKNOWN", "sim_imsi", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791001, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.557] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:40:14Z", "value" => "UNKNOWN"} [2026-08-21 11:40:48.581] [DEBUG] QUERY OK db=23.2ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "UNKNOWN", "sim_iccid2", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791002, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.581] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:40:14Z", "value" => "UNKNOWN"} [2026-08-21 11:40:48.643] [DEBUG] QUERY OK db=61.5ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "UNKNOWN", "sim_imsi2", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791003, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.643] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:40:14Z", "value" => "1"} [2026-08-21 11:40:48.678] [DEBUG] QUERY OK db=34.5ms idle=12.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "1", "data_usage_mb", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791004, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.679] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:40:14Z", "value" => "0"} [2026-08-21 11:40:48.703] [DEBUG] QUERY OK db=23.6ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "0", "mobile_data_mb", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.703] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791005, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:40:48.704] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:40:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:40:48.749] [DEBUG] QUERY OK db=44.1ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77815, ~N[2026-08-21 11:40:48], ~N[2026-08-21 11:40:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:40:48.750] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791006, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:40:14Z", message: nil, status_log_id: 77815, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:40:48], updated_at: ~N[2026-08-21 11:40:48]}} [2026-08-21 11:41:03.555] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 11:41:03.555] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T02:50:28Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T02:50:28Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T02:50:28Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T02:50:28Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T02:50:28Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T02:50:28Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T02:50:28Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T02:50:28Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T02:50:28Z","vendor":"MoreFun"} [2026-08-21 11:41:03.555] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:50:28Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:50:28Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:50:28Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:50:28Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:50:28Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:50:28Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:50:28Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:50:28Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T02:50:28Z", "vendor" => "MoreFun"} [2026-08-21 11:41:03.561] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:41:03.562] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 11:41:03.563] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 11:41:03.568] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=775.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-08-21 11:41:03.572] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms idle=544.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 11:41:03.574] [DEBUG] QUERY OK source="parameter_template_values" db=2.0ms idle=4.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-08-21 11:41:03.581] [DEBUG] QUERY OK source="parameter_definitions" db=5.0ms queue=1.4ms idle=2.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-08-21 11:41:03.584] [DEBUG] QUERY OK source="pos_terminal" db=2.3ms idle=7.3ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:41:03.625] [DEBUG] QUERY OK source="pos_merchant" db=40.5ms idle=3.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:41:03.629] [DEBUG] QUERY OK db=1.2ms queue=1.8ms idle=1602.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 ["123451234512345"] [2026-08-21 11:41:03.629] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:41:03.634] [DEBUG] QUERY OK source="pos_terminal_data" db=1.3ms idle=48.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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:41:03.634] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 11:41:03.636] [DEBUG] QUERY OK source="address" db=1.8ms idle=9.2ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:41:03.636] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 11:41:03.639] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 11:41:03.679] [DEBUG] QUERY OK db=37.0ms queue=1.2ms idle=6.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3dc5cfb0c6206400c805f1bcd284537b055927ad8e5d74847043baeacb481091", 1956, 932, ~U[2026-08-21 11:41:03Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:41:03], ~N[2026-08-21 11:41:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:41:03.679] [INFO ] AutoPushService: Created push log 49030 for MF919 params.zip [2026-08-21 11:41:03.679] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 1956, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:41:03.679] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:41:03.679] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 11:41:03.685] [DEBUG] QUERY OK source="config_file_versions" db=3.9ms queue=0.1ms idle=44.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 11:41:03.695] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 11:41:03.734] [DEBUG] QUERY OK db=35.2ms idle=20.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e652f3a6c124df4804924ac47334970900bd3aa2a32da3ef8fa4ccc20de9aa2d", 1988, 17947, ~U[2026-08-21 11:41:03Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:41:03], ~N[2026-08-21 11:41:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:41:03.734] [INFO ] AutoPushService: Created push log 49031 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:41:03.735] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 1988, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:41:03.735] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:41:03.735] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 11:41:03.737] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=51.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-08-21 11:41:03.737] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 11:41:03.740] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:41:03.741] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 11:41:03.743] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:41:03.743] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:41:03.751] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:41:03.760] [DEBUG] QUERY OK source="config_file_versions" db=6.6ms queue=0.8ms idle=15.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-08-21 11:41:03.763] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:41:03.763] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 11:41:03.764] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=22.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:41:03.765] [INFO ] Terminal updated: 98250623730001 [2026-08-21 11:41:03.801] [DEBUG] QUERY OK source="tms_terminals" db=35.9ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:41:03], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:41:03.809] [DEBUG] QUERY OK source="parameter_templates" db=4.3ms queue=0.6ms idle=4.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) 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-08-21 11:41:03.812] [DEBUG] QUERY OK source="config_file_versions" db=2.1ms idle=8.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:41:03.821] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=12.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-08-21 11:41:03.821] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:41:03.993] [DEBUG] QUERY OK source="parameter_push_logs" db=170.6ms queue=0.5ms idle=9.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 [19, "application", ~N[2026-08-21 11:11:03]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:41:03.993] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:41:03.993] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 11:41:03.995] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=172.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:41:03.998] [DEBUG] QUERY OK source="config_file_versions" db=2.1ms idle=2.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:41:03.998] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:41:04.000] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:41:04.051] [DEBUG] QUERY OK source="tms_terminals" db=48.9ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:41:04], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:41:04.113] [DEBUG] QUERY OK db=60.8ms idle=51.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T02:50:28Z", ~N[2026-08-21 11:41:04], ~N[2026-08-21 11:41:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:41:04.113] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77816, oid: "organization_id", upload_time: "2026-08-21T02:50:28Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:04], updated_at: ~N[2026-08-21 11:41:04]} [2026-08-21 11:41:04.115] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:50:28Z", "value" => "online"} [2026-08-21 11:41:04.201] [DEBUG] QUERY OK db=81.9ms queue=0.4ms idle=67.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T02:50:28Z", "online", "status", 77816, ~N[2026-08-21 11:41:04], ~N[2026-08-21 11:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:04.202] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791007, itemkey: "status", value: "online", timestamp: "2026-08-21T02:50:28Z", message: "Terminal status update", status_log_id: 77816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:04], updated_at: ~N[2026-08-21 11:41:04]}} [2026-08-21 11:41:04.202] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 11:41:04.202] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:50:28Z", "value" => "51"} [2026-08-21 11:41:04.280] [DEBUG] QUERY OK db=77.9ms idle=89.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T02:50:28Z", "51", "battery", 77816, ~N[2026-08-21 11:41:04], ~N[2026-08-21 11:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:04.281] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791008, itemkey: "battery", value: "51", timestamp: "2026-08-21T02:50:28Z", message: "Battery level", status_log_id: 77816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:04], updated_at: ~N[2026-08-21 11:41:04]}} [2026-08-21 11:41:04.282] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:50:28Z", "value" => "online"} [2026-08-21 11:41:04.319] [DEBUG] QUERY OK db=36.4ms idle=81.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T02:50:28Z", "online", "network", 77816, ~N[2026-08-21 11:41:04], ~N[2026-08-21 11:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:04.320] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791009, itemkey: "network", value: "online", timestamp: "2026-08-21T02:50:28Z", message: "Network connectivity", status_log_id: 77816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:04], updated_at: ~N[2026-08-21 11:41:04]}} [2026-08-21 11:41:04.320] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 11:41:04.320] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:50:28Z", "value" => "0"} [2026-08-21 11:41:04.381] [DEBUG] QUERY OK db=60.4ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T02:50:28Z", "0", "cpu", 77816, ~N[2026-08-21 11:41:04], ~N[2026-08-21 11:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:04.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791010, itemkey: "cpu", value: "0", timestamp: "2026-08-21T02:50:28Z", message: "CPU usage percentage", status_log_id: 77816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:04], updated_at: ~N[2026-08-21 11:41:04]}} [2026-08-21 11:41:04.381] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:50:28Z", "value" => "1.0.0"} [2026-08-21 11:41:04.425] [DEBUG] QUERY OK db=42.9ms idle=62.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T02:50:28Z", "1.0.0", "parameter_config", 77816, ~N[2026-08-21 11:41:04], ~N[2026-08-21 11:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:04.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791011, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T02:50:28Z", message: "Current parameters version", status_log_id: 77816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:04], updated_at: ~N[2026-08-21 11:41:04]}} [2026-08-21 11:41:04.425] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:50:28Z", "value" => "1.0.1"} [2026-08-21 11:41:04.470] [DEBUG] QUERY OK db=43.5ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T02:50:28Z", "1.0.1", "emv_config", 77816, ~N[2026-08-21 11:41:04], ~N[2026-08-21 11:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:04.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791012, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T02:50:28Z", message: "Current EMV config version", status_log_id: 77816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:04], updated_at: ~N[2026-08-21 11:41:04]}} [2026-08-21 11:41:04.470] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:50:28Z", "value" => ""} [2026-08-21 11:41:04.530] [DEBUG] QUERY OK db=58.0ms queue=1.5ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T02:50:28Z", "keys_config", 77816, ~N[2026-08-21 11:41:04], ~N[2026-08-21 11:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:04.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791013, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T02:50:28Z", message: "Current keys config version", status_log_id: 77816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:04], updated_at: ~N[2026-08-21 11:41:04]}} [2026-08-21 11:41:04.530] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:50:28Z", "value" => "3.8.7.3"} [2026-08-21 11:41:04.591] [DEBUG] QUERY OK db=56.8ms idle=64.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T02:50:28Z", "3.8.7.3", "application", 77816, ~N[2026-08-21 11:41:04], ~N[2026-08-21 11:41:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:04.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791014, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T02:50:28Z", message: "Current application version", status_log_id: 77816, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:04], updated_at: ~N[2026-08-21 11:41:04]}} [2026-08-21 11:41:04.591] [WARN ] Unexpected async result [2026-08-21 11:41:04.591] [WARN ] Unexpected async result [2026-08-21 11:41:17.175] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:41:17.175] [INFO ] Incoming JSON payload: {"oid":"a3500652-3ace-4dcc-bc9f-b223fabb484a","sn":"98251226730001","uploadTime":"2026-08-21T11:41:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"ram_free_mb","value":"923","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:41:16Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:41:17.176] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a3500652-3ace-4dcc-bc9f-b223fabb484a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:41:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:41:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:41:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:41:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:41:16Z", "value" => "923"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:41:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:41:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:41:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:41:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:41:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:41:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:41:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:41:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:41:16Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:41:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:41:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:41:16Z", "vendor" => "morefun"} [2026-08-21 11:41:17.176] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:41:17.176] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:41:17.176] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:41:17.178] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=1101.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-08-21 11:41:17.180] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.2ms idle=331.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:41:17.180] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:41:17.182] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=3.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:41:17.182] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:41:17.213] [DEBUG] QUERY OK source="tms_terminals" db=30.9ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:41:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:41:17.214] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:41:17.214] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:41:17.250] [DEBUG] QUERY OK source="tms_terminals" db=35.2ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:41:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:41:17.296] [DEBUG] QUERY OK db=45.4ms idle=35.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a3500652-3ace-4dcc-bc9f-b223fabb484a", "2026-08-21T11:41:16Z", ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:41:17.296] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77817, oid: "a3500652-3ace-4dcc-bc9f-b223fabb484a", upload_time: "2026-08-21T11:41:16Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]} [2026-08-21 11:41:17.296] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:41:16Z", "value" => "morefun"} [2026-08-21 11:41:17.344] [DEBUG] QUERY OK db=46.9ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "morefun", "vendor", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.344] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791015, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.344] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:41:16Z", "value" => "kiosk_launcher"} [2026-08-21 11:41:17.393] [DEBUG] QUERY OK db=48.0ms queue=0.3ms idle=48.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "kiosk_launcher", "model", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791016, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.394] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:41:16Z", "value" => "1.0"} [2026-08-21 11:41:17.418] [DEBUG] QUERY OK db=23.3ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "1.0", "app_version", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791017, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.420] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:41:16Z", "value" => "13"} [2026-08-21 11:41:17.479] [DEBUG] QUERY OK db=59.1ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "13", "android_version", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.480] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791018, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.480] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:41:16Z", "value" => "923"} [2026-08-21 11:41:17.503] [DEBUG] QUERY OK db=22.7ms queue=0.1ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "923", "ram_free_mb", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791019, itemkey: "ram_free_mb", value: "923", timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.504] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:41:16Z", "value" => "WIFI"} [2026-08-21 11:41:17.526] [DEBUG] QUERY OK db=22.0ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "WIFI", "network_type", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791020, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.526] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:41:16Z", "value" => "true"} [2026-08-21 11:41:17.582] [DEBUG] QUERY OK db=54.7ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "true", "kiosk_active", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.582] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791021, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.582] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:41:16Z", "value" => ""} [2026-08-21 11:41:17.606] [DEBUG] QUERY OK db=23.5ms queue=0.1ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:41:16Z", "sim_operator", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791022, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.607] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:41:16Z", "value" => "UNKNOWN"} [2026-08-21 11:41:17.633] [DEBUG] QUERY OK db=25.6ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "UNKNOWN", "sim_number", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791023, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.633] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:41:16Z", "value" => "UNKNOWN"} [2026-08-21 11:41:17.667] [DEBUG] QUERY OK db=33.9ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "UNKNOWN", "sim_iccid", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791024, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.668] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:41:16Z", "value" => "UNKNOWN"} [2026-08-21 11:41:17.718] [DEBUG] QUERY OK db=50.0ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "UNKNOWN", "sim_imsi", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791025, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.719] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:41:16Z", "value" => "UNKNOWN"} [2026-08-21 11:41:17.742] [DEBUG] QUERY OK db=22.8ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "UNKNOWN", "sim_iccid2", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791026, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.743] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:41:16Z", "value" => "UNKNOWN"} [2026-08-21 11:41:17.780] [DEBUG] QUERY OK db=37.2ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "UNKNOWN", "sim_imsi2", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791027, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.781] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:41:16Z", "value" => "34"} [2026-08-21 11:41:17.821] [DEBUG] QUERY OK db=39.8ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "34", "data_usage_mb", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791028, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.821] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:41:16Z", "value" => "0"} [2026-08-21 11:41:17.844] [DEBUG] QUERY OK db=22.9ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "0", "mobile_data_mb", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.845] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791029, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.845] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:41:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:41:17.887] [DEBUG] QUERY OK db=40.6ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:16Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77817, ~N[2026-08-21 11:41:17], ~N[2026-08-21 11:41:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:17.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791030, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:41:16Z", message: nil, status_log_id: 77817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:17], updated_at: ~N[2026-08-21 11:41:17]}} [2026-08-21 11:41:17.888] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:41:17.888] [INFO ] Incoming JSON payload: {"oid":"1db01ec3-c8d4-492f-b3a8-7820adf22d2b","sn":"98251226730002","uploadTime":"2026-08-21T11:40:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"ram_free_mb","value":"999","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:40:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:41:17.890] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1db01ec3-c8d4-492f-b3a8-7820adf22d2b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:40:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:40:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:40:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:40:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:40:44Z", "value" => "999"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:40:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:40:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:40:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:40:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:40:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:40:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:40:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:40:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:40:44Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:40:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:40:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:40:44Z", "vendor" => "morefun"} [2026-08-21 11:41:17.890] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:41:17.890] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:41:17.890] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:41:17.891] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=40.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-08-21 11:41:17.892] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=4.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:41:17.892] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:41:17.900] [DEBUG] QUERY OK source="tms_terminals" db=7.5ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:41:17.901] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:41:17.951] [DEBUG] QUERY OK source="tms_terminals" db=47.1ms idle=11.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:41:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:41:17.951] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:41:17.952] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=51.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:41:18.041] [DEBUG] QUERY OK source="tms_terminals" db=88.2ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:41:17], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:41:18.086] [DEBUG] QUERY OK db=44.7ms queue=0.1ms idle=88.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "1db01ec3-c8d4-492f-b3a8-7820adf22d2b", "2026-08-21T11:40:44Z", ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:41:18.086] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77818, oid: "1db01ec3-c8d4-492f-b3a8-7820adf22d2b", upload_time: "2026-08-21T11:40:44Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]} [2026-08-21 11:41:18.086] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:40:44Z", "value" => "morefun"} [2026-08-21 11:41:18.118] [DEBUG] QUERY OK db=31.5ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "morefun", "vendor", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791031, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.119] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:40:44Z", "value" => "kiosk_launcher"} [2026-08-21 11:41:18.151] [DEBUG] QUERY OK db=32.0ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "kiosk_launcher", "model", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791032, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.152] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:40:44Z", "value" => "1.0"} [2026-08-21 11:41:18.190] [DEBUG] QUERY OK db=38.0ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "1.0", "app_version", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791033, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.190] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:40:44Z", "value" => "13"} [2026-08-21 11:41:18.215] [DEBUG] QUERY OK db=23.9ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "13", "android_version", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.215] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791034, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.215] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:40:44Z", "value" => "999"} [2026-08-21 11:41:18.250] [DEBUG] QUERY OK db=34.2ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "999", "ram_free_mb", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791035, itemkey: "ram_free_mb", value: "999", timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.250] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:40:44Z", "value" => "WIFI"} [2026-08-21 11:41:18.289] [DEBUG] QUERY OK db=38.2ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "WIFI", "network_type", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.289] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791036, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.289] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:40:44Z", "value" => "true"} [2026-08-21 11:41:18.314] [DEBUG] QUERY OK db=23.0ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "true", "kiosk_active", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791037, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.314] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:40:44Z", "value" => ""} [2026-08-21 11:41:18.344] [DEBUG] QUERY OK db=29.5ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:40:44Z", "sim_operator", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791038, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.345] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:40:44Z", "value" => "UNKNOWN"} [2026-08-21 11:41:18.383] [DEBUG] QUERY OK db=36.3ms queue=1.3ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "UNKNOWN", "sim_number", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.383] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791039, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.383] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:40:44Z", "value" => "UNKNOWN"} [2026-08-21 11:41:18.407] [DEBUG] QUERY OK db=23.7ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "UNKNOWN", "sim_iccid", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791040, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.408] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:40:44Z", "value" => "UNKNOWN"} [2026-08-21 11:41:18.425] [DEBUG] QUERY OK db=16.8ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "UNKNOWN", "sim_imsi", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791041, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.426] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:40:44Z", "value" => "UNKNOWN"} [2026-08-21 11:41:18.480] [DEBUG] QUERY OK db=53.8ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "UNKNOWN", "sim_iccid2", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.480] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791042, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.481] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:40:44Z", "value" => "UNKNOWN"} [2026-08-21 11:41:18.509] [DEBUG] QUERY OK db=28.2ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "UNKNOWN", "sim_imsi2", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.509] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791043, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.510] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:40:44Z", "value" => "1"} [2026-08-21 11:41:18.564] [DEBUG] QUERY OK db=53.9ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "1", "data_usage_mb", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791044, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.564] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:40:44Z", "value" => "0"} [2026-08-21 11:41:18.594] [DEBUG] QUERY OK db=29.3ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "0", "mobile_data_mb", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791045, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:18.595] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:40:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:41:18.637] [DEBUG] QUERY OK db=41.0ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:40:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77818, ~N[2026-08-21 11:41:18], ~N[2026-08-21 11:41:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:18.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791046, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:40:44Z", message: nil, status_log_id: 77818, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:18], updated_at: ~N[2026-08-21 11:41:18]}} [2026-08-21 11:41:24.726] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:41:24.726] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T11:41:24Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T11:41:24Z","value":"55"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T11:41:24Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T11:41:24Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T11:41:24Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T11:41:24Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T11:41:24Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T11:41:24Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T11:41:24Z","vendor":"MoreFun"} [2026-08-21 11:41:24.727] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:41:24Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:41:24Z", "value" => "55"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:41:24Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:41:24Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:41:24Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:41:24Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:41:24Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:41:24Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:41:24Z", "vendor" => "MoreFun"} [2026-08-21 11:41:24.727] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:41:24.727] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:41:24.727] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 11:41:24.728] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=858.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-08-21 11:41:24.729] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms idle=704.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 11:41:24.729] [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-08-21 11:41:24.731] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.5ms idle=1.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:41:24.732] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms idle=2.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:41:24.773] [DEBUG] QUERY OK source="pos_merchant" db=40.1ms idle=1.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:41:24.774] [DEBUG] QUERY OK db=0.7ms queue=0.6ms idle=1749.1ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["626165170000000"] [2026-08-21 11:41:24.774] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:41:24.775] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms idle=42.3ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:41:24.775] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 11:41:24.775] [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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:41:24.776] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 11:41:24.776] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 11:41:24.828] [DEBUG] QUERY OK db=50.2ms idle=2.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "036c40e5625feec28a029130aa541d7d5ceab6292c513d17bd9145de451fd5b7", 965, 936, ~U[2026-08-21 11:41:24Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:41:24], ~N[2026-08-21 11:41:24]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:41:24.828] [INFO ] AutoPushService: Created push log 49032 for MF919 params.zip [2026-08-21 11:41:24.828] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 965, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:41:24.828] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 11:41:24.829] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 11:41:24.830] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.6ms idle=53.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-08-21 11:41:24.833] [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-08-21 11:41:24.899] [DEBUG] QUERY OK db=64.1ms idle=7.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "161d527520bbabfd3154986e5865d0fd76702c278e068d84a6c4402b3716d15a", 2116, 17947, ~U[2026-08-21 11:41:24Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:41:24], ~N[2026-08-21 11:41:24]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:41:24.899] [INFO ] AutoPushService: Created push log 49033 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:41:24.900] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2116, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:41:24.900] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 11:41:24.900] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 11:41:24.901] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=28.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-08-21 11:41:24.901] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 11:41:24.902] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=2.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:41:24.902] [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-08-21 11:41:24.903] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:41:24.903] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:41:24.903] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:41:24.905] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.2ms idle=2.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:41:24.905] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:41:24.905] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 11:41:24.907] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.4ms idle=4.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:41:24.990] [DEBUG] QUERY OK source="tms_terminals" db=40.3ms queue=41.2ms idle=3.4ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 11:41:24], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 11:41:24.990] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:41:24.990] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 11:41:24.990] [INFO ] Event published: terminal_updated [2026-08-21 11:41:24.990] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 11:41:24.991] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 11:41:24.992] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.7ms queue=0.2ms idle=83.4ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 11:41:24], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 11:41:24.993] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 11:41:24.993] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 11:41:24.994] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 11:41:25.069] [DEBUG] QUERY OK source="tms_terminals" db=31.9ms queue=43.7ms idle=0.7ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 11:41:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:41:25.071] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=76.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 11:41:25.072] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=2.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:41:25.075] [DEBUG] QUERY OK source="config_file_versions" db=2.0ms idle=2.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:41:25.075] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:41:25.116] [DEBUG] QUERY OK source="parameter_push_logs" db=40.4ms idle=3.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-08-21 11:11:25]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:41:25.116] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:41:25.116] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 11:41:25.118] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:41:25.119] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=2.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:41:25.120] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:41:25.121] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:41:25.248] [DEBUG] QUERY OK source="tms_terminals" db=83.8ms queue=42.4ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:41:25], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:41:25.281] [DEBUG] QUERY OK db=32.4ms idle=127.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T11:41:24Z", ~N[2026-08-21 11:41:25], ~N[2026-08-21 11:41:25]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:41:25.281] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77819, oid: "organization_id", upload_time: "2026-08-21T11:41:24Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:25], updated_at: ~N[2026-08-21 11:41:25]} [2026-08-21 11:41:25.282] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:41:24Z", "value" => "online"} [2026-08-21 11:41:25.323] [DEBUG] QUERY OK db=40.8ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T11:41:24Z", "online", "status", 77819, ~N[2026-08-21 11:41:25], ~N[2026-08-21 11:41:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:25.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791047, itemkey: "status", value: "online", timestamp: "2026-08-21T11:41:24Z", message: "Terminal status update", status_log_id: 77819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:25], updated_at: ~N[2026-08-21 11:41:25]}} [2026-08-21 11:41:25.323] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 11:41:25.323] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:41:24Z", "value" => "55"} [2026-08-21 11:41:25.373] [DEBUG] QUERY OK db=48.7ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T11:41:24Z", "55", "battery", 77819, ~N[2026-08-21 11:41:25], ~N[2026-08-21 11:41:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:25.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791048, itemkey: "battery", value: "55", timestamp: "2026-08-21T11:41:24Z", message: "Battery level", status_log_id: 77819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:25], updated_at: ~N[2026-08-21 11:41:25]}} [2026-08-21 11:41:25.373] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:41:24Z", "value" => "online"} [2026-08-21 11:41:25.424] [DEBUG] QUERY OK db=50.7ms queue=0.1ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T11:41:24Z", "online", "network", 77819, ~N[2026-08-21 11:41:25], ~N[2026-08-21 11:41:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:25.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791049, itemkey: "network", value: "online", timestamp: "2026-08-21T11:41:24Z", message: "Network connectivity", status_log_id: 77819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:25], updated_at: ~N[2026-08-21 11:41:25]}} [2026-08-21 11:41:25.425] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 11:41:25.425] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:41:24Z", "value" => "0"} [2026-08-21 11:41:25.447] [DEBUG] QUERY OK db=21.2ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T11:41:24Z", "0", "cpu", 77819, ~N[2026-08-21 11:41:25], ~N[2026-08-21 11:41:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:25.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791050, itemkey: "cpu", value: "0", timestamp: "2026-08-21T11:41:24Z", message: "CPU usage percentage", status_log_id: 77819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:25], updated_at: ~N[2026-08-21 11:41:25]}} [2026-08-21 11:41:25.447] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:41:24Z", "value" => "1.0.0"} [2026-08-21 11:41:25.527] [DEBUG] QUERY OK db=80.0ms queue=0.2ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T11:41:24Z", "1.0.0", "parameter_config", 77819, ~N[2026-08-21 11:41:25], ~N[2026-08-21 11:41:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:25.528] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791051, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T11:41:24Z", message: "Current parameters version", status_log_id: 77819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:25], updated_at: ~N[2026-08-21 11:41:25]}} [2026-08-21 11:41:25.528] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:41:24Z", "value" => "1.0.1"} [2026-08-21 11:41:25.571] [DEBUG] QUERY OK db=42.7ms idle=81.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T11:41:24Z", "1.0.1", "emv_config", 77819, ~N[2026-08-21 11:41:25], ~N[2026-08-21 11:41:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:25.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791052, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T11:41:24Z", message: "Current EMV config version", status_log_id: 77819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:25], updated_at: ~N[2026-08-21 11:41:25]}} [2026-08-21 11:41:25.571] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:41:24Z", "value" => ""} [2026-08-21 11:41:25.615] [DEBUG] QUERY OK db=42.5ms queue=0.3ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T11:41:24Z", "keys_config", 77819, ~N[2026-08-21 11:41:25], ~N[2026-08-21 11:41:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:25.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791053, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T11:41:24Z", message: "Current keys config version", status_log_id: 77819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:25], updated_at: ~N[2026-08-21 11:41:25]}} [2026-08-21 11:41:25.615] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:41:24Z", "value" => "3.8.7.3"} [2026-08-21 11:41:25.652] [DEBUG] QUERY OK db=35.8ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T11:41:24Z", "3.8.7.3", "application", 77819, ~N[2026-08-21 11:41:25], ~N[2026-08-21 11:41:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:25.652] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791054, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T11:41:24Z", message: "Current application version", status_log_id: 77819, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:25], updated_at: ~N[2026-08-21 11:41:25]}} [2026-08-21 11:41:25.652] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T11:41:24Z"} [2026-08-21 11:41:25.652] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T11:41:24Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 61, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 11:41:45.178] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T11:41:24Z"} [2026-08-21 11:41:45.178] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T11:41:24Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 62, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 11:41:47.256] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:41:47.257] [INFO ] Incoming JSON payload: {"oid":"c363d653-a2cc-449e-85b3-aca53ee29763","sn":"98251226730001","uploadTime":"2026-08-21T11:41:46Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:41:46Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:41:46Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:41:46Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:41:46Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-08-21T11:41:46Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:41:46Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:41:46Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:41:46Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:41:46Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:41:46Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:41:46Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:41:46Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:41:46Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:41:46Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:41: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:41:47.258] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c363d653-a2cc-449e-85b3-aca53ee29763", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:41:46Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:41:46Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:41:46Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:41:46Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:41:46Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:41:46Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:41:46Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:41:46Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:41:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:41:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:41:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:41:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:41:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:41:46Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:41:46Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:41: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:41:46Z", "vendor" => "morefun"} [2026-08-21 11:41:47.258] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:41:47.258] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:41:47.258] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:41:47.261] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=312.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-08-21 11:41:47.262] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=237.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-08-21 11:41:47.262] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:41:47.265] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:41:47.331] [DEBUG] QUERY OK source="tms_terminals" db=23.0ms queue=43.0ms idle=3.1ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 11:41:47], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 11:41:47.331] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:41:47.332] [INFO ] Event published: terminal_updated [2026-08-21 11:41:47.332] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 11:41:47.332] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 11:41:47.332] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 11:41:47.333] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.6ms idle=67.1ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 11:41:47], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 11:41:47.335] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=2.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 11:41:47.335] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms idle=0.1ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 11:41:47.335] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 11:41:47.402] [DEBUG] QUERY OK source="tms_terminals" db=27.1ms queue=41.4ms 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-08-21 11:41:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:41:47.403] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:41:47.404] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:41:47.499] [DEBUG] QUERY OK source="tms_terminals" db=53.0ms queue=41.3ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:41:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:41:47.557] [DEBUG] QUERY OK db=57.9ms queue=0.3ms idle=94.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c363d653-a2cc-449e-85b3-aca53ee29763", "2026-08-21T11:41:46Z", ~N[2026-08-21 11:41:47], ~N[2026-08-21 11:41:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:41:47.557] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77820, oid: "c363d653-a2cc-449e-85b3-aca53ee29763", upload_time: "2026-08-21T11:41:46Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:47], updated_at: ~N[2026-08-21 11:41:47]} [2026-08-21 11:41:47.558] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:41:46Z", "value" => "morefun"} [2026-08-21 11:41:47.606] [DEBUG] QUERY OK db=46.6ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:46Z", "morefun", "vendor", 77820, ~N[2026-08-21 11:41:47], ~N[2026-08-21 11:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:47.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791055, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:47], updated_at: ~N[2026-08-21 11:41:47]}} [2026-08-21 11:41:47.607] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:41:46Z", "value" => "kiosk_launcher"} [2026-08-21 11:41:47.638] [DEBUG] QUERY OK db=29.6ms queue=1.2ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:46Z", "kiosk_launcher", "model", 77820, ~N[2026-08-21 11:41:47], ~N[2026-08-21 11:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:47.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791056, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:47], updated_at: ~N[2026-08-21 11:41:47]}} [2026-08-21 11:41:47.639] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:41:46Z", "value" => "1.0"} [2026-08-21 11:41:47.677] [DEBUG] QUERY OK db=37.5ms queue=0.1ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:46Z", "1.0", "app_version", 77820, ~N[2026-08-21 11:41:47], ~N[2026-08-21 11:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:47.678] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791057, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:47], updated_at: ~N[2026-08-21 11:41:47]}} [2026-08-21 11:41:47.678] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:41:46Z", "value" => "13"} [2026-08-21 11:41:47.718] [DEBUG] QUERY OK db=39.9ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:46Z", "13", "android_version", 77820, ~N[2026-08-21 11:41:47], ~N[2026-08-21 11:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:47.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791058, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:47], updated_at: ~N[2026-08-21 11:41:47]}} [2026-08-21 11:41:47.719] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:41:46Z", "value" => "917"} [2026-08-21 11:41:47.744] [DEBUG] QUERY OK db=23.1ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:46Z", "917", "ram_free_mb", 77820, ~N[2026-08-21 11:41:47], ~N[2026-08-21 11:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:47.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791059, itemkey: "ram_free_mb", value: "917", timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:47], updated_at: ~N[2026-08-21 11:41:47]}} [2026-08-21 11:41:47.745] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:41:46Z", "value" => "WIFI"} [2026-08-21 11:41:47.809] [DEBUG] QUERY OK db=64.4ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:46Z", "WIFI", "network_type", 77820, ~N[2026-08-21 11:41:47], ~N[2026-08-21 11:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:47.810] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791060, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:47], updated_at: ~N[2026-08-21 11:41:47]}} [2026-08-21 11:41:47.810] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:41:46Z", "value" => "true"} [2026-08-21 11:41:47.851] [DEBUG] QUERY OK db=40.5ms idle=66.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:46Z", "true", "kiosk_active", 77820, ~N[2026-08-21 11:41:47], ~N[2026-08-21 11:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:47.851] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791061, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:47], updated_at: ~N[2026-08-21 11:41:47]}} [2026-08-21 11:41:47.851] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:41:46Z", "value" => ""} [2026-08-21 11:41:47.875] [DEBUG] QUERY OK db=23.2ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:41:46Z", "sim_operator", 77820, ~N[2026-08-21 11:41:47], ~N[2026-08-21 11:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:47.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791062, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:47], updated_at: ~N[2026-08-21 11:41:47]}} [2026-08-21 11:41:47.875] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:41:46Z", "value" => "UNKNOWN"} [2026-08-21 11:41:47.924] [DEBUG] QUERY OK db=47.0ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:46Z", "UNKNOWN", "sim_number", 77820, ~N[2026-08-21 11:41:47], ~N[2026-08-21 11:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:47.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791063, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:47], updated_at: ~N[2026-08-21 11:41:47]}} [2026-08-21 11:41:47.924] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:41:46Z", "value" => "UNKNOWN"} [2026-08-21 11:41:47.965] [DEBUG] QUERY OK db=40.1ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:46Z", "UNKNOWN", "sim_iccid", 77820, ~N[2026-08-21 11:41:47], ~N[2026-08-21 11:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:47.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791064, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:47], updated_at: ~N[2026-08-21 11:41:47]}} [2026-08-21 11:41:47.966] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:41:46Z", "value" => "UNKNOWN"} [2026-08-21 11:41:48.029] [DEBUG] QUERY OK db=62.5ms idle=18.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:46Z", "UNKNOWN", "sim_imsi", 77820, ~N[2026-08-21 11:41:47], ~N[2026-08-21 11:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:48.029] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791065, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:47], updated_at: ~N[2026-08-21 11:41:47]}} [2026-08-21 11:41:48.030] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:41:46Z", "value" => "UNKNOWN"} [2026-08-21 11:41:48.092] [DEBUG] QUERY OK db=62.3ms idle=65.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:46Z", "UNKNOWN", "sim_iccid2", 77820, ~N[2026-08-21 11:41:48], ~N[2026-08-21 11:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:48.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791066, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:48], updated_at: ~N[2026-08-21 11:41:48]}} [2026-08-21 11:41:48.094] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:41:46Z", "value" => "UNKNOWN"} [2026-08-21 11:41:48.128] [DEBUG] QUERY OK db=33.7ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:46Z", "UNKNOWN", "sim_imsi2", 77820, ~N[2026-08-21 11:41:48], ~N[2026-08-21 11:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:48.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791067, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:48], updated_at: ~N[2026-08-21 11:41:48]}} [2026-08-21 11:41:48.130] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:41:46Z", "value" => "34"} [2026-08-21 11:41:48.154] [DEBUG] QUERY OK db=23.6ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:46Z", "34", "data_usage_mb", 77820, ~N[2026-08-21 11:41:48], ~N[2026-08-21 11:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:48.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791068, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:48], updated_at: ~N[2026-08-21 11:41:48]}} [2026-08-21 11:41:48.154] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:41:46Z", "value" => "0"} [2026-08-21 11:41:48.200] [DEBUG] QUERY OK db=44.2ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:46Z", "0", "mobile_data_mb", 77820, ~N[2026-08-21 11:41:48], ~N[2026-08-21 11:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:48.201] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791069, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:48], updated_at: ~N[2026-08-21 11:41:48]}} [2026-08-21 11:41:48.201] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:41: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:41:48.440] [DEBUG] QUERY OK db=238.0ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77820, ~N[2026-08-21 11:41:48], ~N[2026-08-21 11:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:48.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791070, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:41:46Z", message: nil, status_log_id: 77820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:48], updated_at: ~N[2026-08-21 11:41:48]}} [2026-08-21 11:41:48.444] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:41:48.444] [INFO ] Incoming JSON payload: {"oid":"1d523354-050c-4de7-9a46-2f5e08df9ea5","sn":"98251226730002","uploadTime":"2026-08-21T11:41:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"ram_free_mb","value":"994","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:41:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:41:48.449] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1d523354-050c-4de7-9a46-2f5e08df9ea5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:41:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:41:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:41:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:41:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:41:14Z", "value" => "994"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:41:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:41:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:41:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:41:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:41:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:41:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:41:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:41:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:41:14Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:41:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:41:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:41:14Z", "vendor" => "morefun"} [2026-08-21 11:41:48.449] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:41:48.451] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:41:48.451] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:41:48.452] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=251.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-08-21 11:41:48.453] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=12.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-08-21 11:41:48.453] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:41:48.454] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:41:48.455] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:41:48.533] [DEBUG] QUERY OK source="tms_terminals" db=37.4ms queue=40.7ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:41:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:41:48.533] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:41:48.534] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=79.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:41:48.581] [DEBUG] QUERY OK source="tms_terminals" db=46.7ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:41:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:41:48.623] [DEBUG] QUERY OK db=40.8ms idle=47.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "1d523354-050c-4de7-9a46-2f5e08df9ea5", "2026-08-21T11:41:14Z", ~N[2026-08-21 11:41:48], ~N[2026-08-21 11:41:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:41:48.624] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77821, oid: "1d523354-050c-4de7-9a46-2f5e08df9ea5", upload_time: "2026-08-21T11:41:14Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:48], updated_at: ~N[2026-08-21 11:41:48]} [2026-08-21 11:41:48.624] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:41:14Z", "value" => "morefun"} [2026-08-21 11:41:48.657] [DEBUG] QUERY OK db=32.5ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "morefun", "vendor", 77821, ~N[2026-08-21 11:41:48], ~N[2026-08-21 11:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:48.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791071, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:48], updated_at: ~N[2026-08-21 11:41:48]}} [2026-08-21 11:41:48.658] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:41:14Z", "value" => "kiosk_launcher"} [2026-08-21 11:41:48.719] [DEBUG] QUERY OK db=60.9ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "kiosk_launcher", "model", 77821, ~N[2026-08-21 11:41:48], ~N[2026-08-21 11:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:48.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791072, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:48], updated_at: ~N[2026-08-21 11:41:48]}} [2026-08-21 11:41:48.719] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:41:14Z", "value" => "1.0"} [2026-08-21 11:41:48.763] [DEBUG] QUERY OK db=43.1ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "1.0", "app_version", 77821, ~N[2026-08-21 11:41:48], ~N[2026-08-21 11:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:48.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791073, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:48], updated_at: ~N[2026-08-21 11:41:48]}} [2026-08-21 11:41:48.763] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:41:14Z", "value" => "13"} [2026-08-21 11:41:48.824] [DEBUG] QUERY OK db=60.5ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "13", "android_version", 77821, ~N[2026-08-21 11:41:48], ~N[2026-08-21 11:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:48.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791074, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:48], updated_at: ~N[2026-08-21 11:41:48]}} [2026-08-21 11:41:48.824] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:41:14Z", "value" => "994"} [2026-08-21 11:41:48.865] [DEBUG] QUERY OK db=39.9ms idle=62.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "994", "ram_free_mb", 77821, ~N[2026-08-21 11:41:48], ~N[2026-08-21 11:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:48.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791075, itemkey: "ram_free_mb", value: "994", timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:48], updated_at: ~N[2026-08-21 11:41:48]}} [2026-08-21 11:41:48.866] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:41:14Z", "value" => "WIFI"} [2026-08-21 11:41:48.929] [DEBUG] QUERY OK db=63.3ms queue=0.1ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "WIFI", "network_type", 77821, ~N[2026-08-21 11:41:48], ~N[2026-08-21 11:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:48.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791076, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:48], updated_at: ~N[2026-08-21 11:41:48]}} [2026-08-21 11:41:48.930] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:41:14Z", "value" => "true"} [2026-08-21 11:41:48.967] [DEBUG] QUERY OK db=35.0ms idle=66.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "true", "kiosk_active", 77821, ~N[2026-08-21 11:41:48], ~N[2026-08-21 11:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:48.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791077, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:48], updated_at: ~N[2026-08-21 11:41:48]}} [2026-08-21 11:41:48.967] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:41:14Z", "value" => ""} [2026-08-21 11:41:49.016] [DEBUG] QUERY OK db=49.0ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:41:14Z", "sim_operator", 77821, ~N[2026-08-21 11:41:48], ~N[2026-08-21 11:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:49.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791078, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:48], updated_at: ~N[2026-08-21 11:41:48]}} [2026-08-21 11:41:49.017] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:41:14Z", "value" => "UNKNOWN"} [2026-08-21 11:41:49.067] [DEBUG] QUERY OK db=49.7ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "UNKNOWN", "sim_number", 77821, ~N[2026-08-21 11:41:49], ~N[2026-08-21 11:41:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:49.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791079, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:49], updated_at: ~N[2026-08-21 11:41:49]}} [2026-08-21 11:41:49.067] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:41:14Z", "value" => "UNKNOWN"} [2026-08-21 11:41:49.118] [DEBUG] QUERY OK db=50.1ms queue=0.1ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "UNKNOWN", "sim_iccid", 77821, ~N[2026-08-21 11:41:49], ~N[2026-08-21 11:41:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:49.118] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791080, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:49], updated_at: ~N[2026-08-21 11:41:49]}} [2026-08-21 11:41:49.118] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:41:14Z", "value" => "UNKNOWN"} [2026-08-21 11:41:49.155] [DEBUG] QUERY OK db=36.6ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "UNKNOWN", "sim_imsi", 77821, ~N[2026-08-21 11:41:49], ~N[2026-08-21 11:41:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:49.156] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791081, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:49], updated_at: ~N[2026-08-21 11:41:49]}} [2026-08-21 11:41:49.156] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:41:14Z", "value" => "UNKNOWN"} [2026-08-21 11:41:49.198] [DEBUG] QUERY OK db=41.9ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "UNKNOWN", "sim_iccid2", 77821, ~N[2026-08-21 11:41:49], ~N[2026-08-21 11:41:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:49.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791082, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:49], updated_at: ~N[2026-08-21 11:41:49]}} [2026-08-21 11:41:49.200] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:41:14Z", "value" => "UNKNOWN"} [2026-08-21 11:41:49.236] [DEBUG] QUERY OK db=31.0ms queue=2.4ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "UNKNOWN", "sim_imsi2", 77821, ~N[2026-08-21 11:41:49], ~N[2026-08-21 11:41:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:49.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791083, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:49], updated_at: ~N[2026-08-21 11:41:49]}} [2026-08-21 11:41:49.237] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:41:14Z", "value" => "1"} [2026-08-21 11:41:49.277] [DEBUG] QUERY OK db=39.6ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "1", "data_usage_mb", 77821, ~N[2026-08-21 11:41:49], ~N[2026-08-21 11:41:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:49.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791084, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:49], updated_at: ~N[2026-08-21 11:41:49]}} [2026-08-21 11:41:49.281] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:41:14Z", "value" => "0"} [2026-08-21 11:41:49.320] [DEBUG] QUERY OK db=38.5ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "0", "mobile_data_mb", 77821, ~N[2026-08-21 11:41:49], ~N[2026-08-21 11:41:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:49.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791085, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:49], updated_at: ~N[2026-08-21 11:41:49]}} [2026-08-21 11:41:49.326] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:41:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:41:49.400] [DEBUG] QUERY OK db=70.9ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77821, ~N[2026-08-21 11:41:49], ~N[2026-08-21 11:41:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:41:49.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791086, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:41:14Z", message: nil, status_log_id: 77821, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:41:49], updated_at: ~N[2026-08-21 11:41:49]}} [2026-08-21 11:42:04.290] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 11:42:04.296] [DEBUG] QUERY OK source="tms_terminals" db=4.6ms queue=0.8ms idle=276.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-08-21 11:42:04.306] [DEBUG] QUERY OK source="filter_usage" db=9.5ms idle=265.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-08-21 11:42:04.306] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 11:42:05.040] [INFO ] Running offline device check... [2026-08-21 11:42:05.040] [INFO ] Starting offline device check... [2026-08-21 11:42:05.043] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=734.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 11:42:05.060] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.8ms idle=28.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:42:05.070] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.7ms idle=17.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.075] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=10.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.077] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.079] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.080] [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-08-21 11:42:05.081] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.084] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.099] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.100] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.125] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.0ms 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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.131] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.8ms idle=24.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:42:05.134] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=6.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.135] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.136] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.161] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.5ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.163] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=25.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:42:05.166] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.169] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.173] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms queue=0.1ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.175] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.2ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.218] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=42.6ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.220] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms 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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.222] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.231] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.8ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.232] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=9.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.235] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.237] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.4ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.240] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=1.4ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.246] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms queue=0.9ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.247] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.249] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.250] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.251] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.255] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.256] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.258] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.260] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.260] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.261] [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-08-21 11:42:05.262] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.263] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.264] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.265] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.268] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.270] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.271] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.274] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.275] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.276] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:42:05.276] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 11:42:05.276] [INFO ] Offline device check completed successfully [2026-08-21 11:42:09.121] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 11:42:09.121] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T15:42:07Z","org.device":[{"itemkey":"battery","value":50,"timestamp":"2026-08-21T15:42:07Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T15:42:07Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T15:42:07Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T15:42:07Z","message":""}]} [2026-08-21 11:42:09.121] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T15:42:07Z", "value" => 50}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T15:42:07Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T15:42:07Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T15:42:07Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T15:42:07Z"} [2026-08-21 11:42:09.121] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:42:09.123] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=93.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:42:09.124] [INFO ] Terminal updated: 61250415798001 [2026-08-21 11:42:09.156] [DEBUG] QUERY OK source="tms_terminals" db=32.5ms idle=89.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:42:09], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:42:09.158] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=33.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:42:09.203] [DEBUG] QUERY OK source="tms_terminals" db=44.9ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:42:09], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:42:09.260] [DEBUG] QUERY OK db=56.2ms idle=45.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T15:42:07Z", ~N[2026-08-21 11:42:09], ~N[2026-08-21 11:42:09]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:42:09.260] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77822, oid: "org-id-placeholder", upload_time: "2026-08-21T15:42:07Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:09], updated_at: ~N[2026-08-21 11:42:09]} [2026-08-21 11:42:09.260] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T15:42:07Z", "value" => 50} [2026-08-21 11:42:09.313] [DEBUG] QUERY OK db=48.1ms queue=1.5ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:42:07Z", "50", "battery", 77822, ~N[2026-08-21 11:42:09], ~N[2026-08-21 11:42:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:09.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791087, itemkey: "battery", value: "50", timestamp: "2026-08-21T15:42:07Z", message: nil, status_log_id: 77822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:09], updated_at: ~N[2026-08-21 11:42:09]}} [2026-08-21 11:42:09.313] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T15:42:07Z", "value" => 50} [2026-08-21 11:42:09.349] [DEBUG] QUERY OK db=35.2ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T15:42:07Z", "50", "memory", 77822, ~N[2026-08-21 11:42:09], ~N[2026-08-21 11:42:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:09.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791088, itemkey: "memory", value: "50", timestamp: "2026-08-21T15:42:07Z", message: "Normal", status_log_id: 77822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:09], updated_at: ~N[2026-08-21 11:42:09]}} [2026-08-21 11:42:09.349] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T15:42:07Z", "value" => 50} [2026-08-21 11:42:09.385] [DEBUG] QUERY OK db=35.0ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:42:07Z", "50", "cpu", 77822, ~N[2026-08-21 11:42:09], ~N[2026-08-21 11:42:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:09.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791089, itemkey: "cpu", value: "50", timestamp: "2026-08-21T15:42:07Z", message: nil, status_log_id: 77822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:09], updated_at: ~N[2026-08-21 11:42:09]}} [2026-08-21 11:42:09.385] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T15:42:07Z", "value" => "online"} [2026-08-21 11:42:09.432] [DEBUG] QUERY OK db=45.8ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:42:07Z", "online", "network", 77822, ~N[2026-08-21 11:42:09], ~N[2026-08-21 11:42:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:09.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791090, itemkey: "network", value: "online", timestamp: "2026-08-21T15:42:07Z", message: nil, status_log_id: 77822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:09], updated_at: ~N[2026-08-21 11:42:09]}} [2026-08-21 11:42:09.432] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 11:42:16.829] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 11:42:16.829] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2869561-09-09T11:32:38Z","org.device":[{"itemkey":"status","value":"offline","timestamp":"2869561-09-09T11:32:38Z","message":"Connection reset - reconnecting"}]} [2026-08-21 11:42:16.829] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Connection reset - reconnecting", "timestamp" => "2869561-09-09T11:32:38Z", "value" => "offline"}], "sn" => "61250415798001", "uploadTime" => "2869561-09-09T11:32:38Z"} [2026-08-21 11:42:16.829] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:42:16.832] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=800.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:42:16.832] [INFO ] Terminal updated: 61250415798001 [2026-08-21 11:42:16.909] [DEBUG] QUERY OK source="tms_terminals" db=76.5ms idle=777.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:42:16], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:42:16.911] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=78.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:42:16.956] [DEBUG] QUERY OK source="tms_terminals" db=44.2ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:42:16], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:42:17.053] [DEBUG] QUERY OK db=96.7ms idle=45.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2869561-09-09T11:32:38Z", ~N[2026-08-21 11:42:16], ~N[2026-08-21 11:42:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:42:17.053] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77823, oid: "org-id-placeholder", upload_time: "2869561-09-09T11:32:38Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:16], updated_at: ~N[2026-08-21 11:42:16]} [2026-08-21 11:42:17.054] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Connection reset - reconnecting", "timestamp" => "2869561-09-09T11:32:38Z", "value" => "offline"} [2026-08-21 11:42:17.134] [DEBUG] QUERY OK db=79.8ms idle=98.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Connection reset - reconnecting", "2869561-09-09T11:32:38Z", "offline", "status", 77823, ~N[2026-08-21 11:42:17], ~N[2026-08-21 11:42:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:17.135] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791091, itemkey: "status", value: "offline", timestamp: "2869561-09-09T11:32:38Z", message: "Connection reset - reconnecting", status_log_id: 77823, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:17], updated_at: ~N[2026-08-21 11:42:17]}} [2026-08-21 11:42:17.135] [INFO ] Setting terminal 61250415798001 status to 'offline' from status itemkey [2026-08-21 11:42:17.200] [DEBUG] QUERY OK source="tms_terminals" db=64.1ms idle=77.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["offline", ~N[2026-08-21 11:42:17], 1] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:161 [2026-08-21 11:42:17.203] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms queue=0.1ms idle=65.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["offline", ~N[2026-08-21 11:42:17], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-08-21 11:42:17.346] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:42:17.346] [INFO ] Incoming JSON payload: {"oid":"0cadede3-3443-4ae9-8fd7-a8c29203cb3e","sn":"98251226730001","uploadTime":"2026-08-21T11:42:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"ram_free_mb","value":"925","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"data_usage_mb","value":"34","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:42:16Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:42:17.349] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0cadede3-3443-4ae9-8fd7-a8c29203cb3e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:42:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:42:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:42:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:42:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:42:16Z", "value" => "925"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:42:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:42:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:42:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:42:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:42:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:42:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:42:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:42:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:42:16Z", "value" => "34"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:42:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:42:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:42:16Z", "vendor" => "morefun"} [2026-08-21 11:42:17.349] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:42:17.351] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:42:17.352] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:42:17.356] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms queue=0.2ms idle=153.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-08-21 11:42:17.358] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms queue=0.4ms idle=154.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-08-21 11:42:17.359] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:42:17.366] [DEBUG] QUERY OK source="tms_terminals" db=7.1ms idle=2.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:42:17.366] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:42:17.404] [DEBUG] QUERY OK source="tms_terminals" db=37.5ms idle=8.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:42:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:42:17.404] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:42:17.407] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=1.9ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:42:17.447] [DEBUG] QUERY OK source="tms_terminals" db=33.8ms idle=9.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:42:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:42:17.473] [DEBUG] QUERY OK db=25.5ms queue=0.2ms idle=40.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0cadede3-3443-4ae9-8fd7-a8c29203cb3e", "2026-08-21T11:42:16Z", ~N[2026-08-21 11:42:17], ~N[2026-08-21 11:42:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:42:17.475] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77824, oid: "0cadede3-3443-4ae9-8fd7-a8c29203cb3e", upload_time: "2026-08-21T11:42:16Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:17], updated_at: ~N[2026-08-21 11:42:17]} [2026-08-21 11:42:17.475] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:42:16Z", "value" => "morefun"} [2026-08-21 11:42:17.510] [DEBUG] QUERY OK db=34.3ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "morefun", "vendor", 77824, ~N[2026-08-21 11:42:17], ~N[2026-08-21 11:42:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:17.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791092, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:17], updated_at: ~N[2026-08-21 11:42:17]}} [2026-08-21 11:42:17.510] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:42:16Z", "value" => "kiosk_launcher"} [2026-08-21 11:42:17.573] [DEBUG] QUERY OK db=59.6ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "kiosk_launcher", "model", 77824, ~N[2026-08-21 11:42:17], ~N[2026-08-21 11:42:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:17.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791093, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:17], updated_at: ~N[2026-08-21 11:42:17]}} [2026-08-21 11:42:17.575] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:42:16Z", "value" => "1.0"} [2026-08-21 11:42:17.702] [DEBUG] QUERY OK db=126.2ms idle=66.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "1.0", "app_version", 77824, ~N[2026-08-21 11:42:17], ~N[2026-08-21 11:42:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:17.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791094, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:17], updated_at: ~N[2026-08-21 11:42:17]}} [2026-08-21 11:42:17.702] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:42:16Z", "value" => "13"} [2026-08-21 11:42:17.757] [DEBUG] QUERY OK db=54.3ms idle=129.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "13", "android_version", 77824, ~N[2026-08-21 11:42:17], ~N[2026-08-21 11:42:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:17.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791095, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:17], updated_at: ~N[2026-08-21 11:42:17]}} [2026-08-21 11:42:17.759] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:42:16Z", "value" => "925"} [2026-08-21 11:42:17.830] [DEBUG] QUERY OK db=69.6ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "925", "ram_free_mb", 77824, ~N[2026-08-21 11:42:17], ~N[2026-08-21 11:42:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:17.831] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791096, itemkey: "ram_free_mb", value: "925", timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:17], updated_at: ~N[2026-08-21 11:42:17]}} [2026-08-21 11:42:17.831] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:42:16Z", "value" => "WIFI"} [2026-08-21 11:42:17.891] [DEBUG] QUERY OK db=57.8ms idle=76.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "WIFI", "network_type", 77824, ~N[2026-08-21 11:42:17], ~N[2026-08-21 11:42:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:17.891] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791097, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:17], updated_at: ~N[2026-08-21 11:42:17]}} [2026-08-21 11:42:17.892] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:42:16Z", "value" => "true"} [2026-08-21 11:42:17.926] [DEBUG] QUERY OK db=34.1ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "true", "kiosk_active", 77824, ~N[2026-08-21 11:42:17], ~N[2026-08-21 11:42:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:17.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791098, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:17], updated_at: ~N[2026-08-21 11:42:17]}} [2026-08-21 11:42:17.926] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:42:16Z", "value" => ""} [2026-08-21 11:42:17.992] [DEBUG] QUERY OK db=64.7ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:42:16Z", "sim_operator", 77824, ~N[2026-08-21 11:42:17], ~N[2026-08-21 11:42:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:17.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791099, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:17], updated_at: ~N[2026-08-21 11:42:17]}} [2026-08-21 11:42:17.992] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:42:16Z", "value" => "UNKNOWN"} [2026-08-21 11:42:18.031] [DEBUG] QUERY OK db=38.9ms idle=66.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "UNKNOWN", "sim_number", 77824, ~N[2026-08-21 11:42:17], ~N[2026-08-21 11:42:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791100, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:17], updated_at: ~N[2026-08-21 11:42:17]}} [2026-08-21 11:42:18.032] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:42:16Z", "value" => "UNKNOWN"} [2026-08-21 11:42:18.062] [DEBUG] QUERY OK db=30.4ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "UNKNOWN", "sim_iccid", 77824, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791101, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.063] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:42:16Z", "value" => "UNKNOWN"} [2026-08-21 11:42:18.122] [DEBUG] QUERY OK db=58.8ms idle=2.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "UNKNOWN", "sim_imsi", 77824, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.122] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791102, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.122] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:42:16Z", "value" => "UNKNOWN"} [2026-08-21 11:42:18.180] [DEBUG] QUERY OK db=57.3ms idle=60.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "UNKNOWN", "sim_iccid2", 77824, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791103, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.180] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:42:16Z", "value" => "UNKNOWN"} [2026-08-21 11:42:18.202] [DEBUG] QUERY OK db=20.9ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "UNKNOWN", "sim_imsi2", 77824, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791104, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.203] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:42:16Z", "value" => "34"} [2026-08-21 11:42:18.233] [DEBUG] QUERY OK db=29.8ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "34", "data_usage_mb", 77824, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.234] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791105, itemkey: "data_usage_mb", value: "34", timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.234] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:42:16Z", "value" => "0"} [2026-08-21 11:42:18.271] [DEBUG] QUERY OK db=37.0ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "0", "mobile_data_mb", 77824, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791106, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.272] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:42:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:42:18.297] [DEBUG] QUERY OK db=22.9ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:16Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77824, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791107, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:42:16Z", message: nil, status_log_id: 77824, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.434] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:42:18.435] [INFO ] Incoming JSON payload: {"oid":"c63d046c-7746-4ad6-ab7a-190fbdc38933","sn":"98251226730002","uploadTime":"2026-08-21T11:41:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"ram_free_mb","value":"993","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:41:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:42:18.437] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c63d046c-7746-4ad6-ab7a-190fbdc38933", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:41:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:41:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:41:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:41:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:41:44Z", "value" => "993"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:41:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:41:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:41:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:41:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:41:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:41:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:41:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:41:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:41:44Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:41:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:41:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:41:44Z", "vendor" => "morefun"} [2026-08-21 11:42:18.437] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:42:18.438] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:42:18.438] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:42:18.439] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=167.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-08-21 11:42:18.440] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.3ms idle=144.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-08-21 11:42:18.440] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:42:18.442] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.4ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:42:18.442] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:42:18.467] [DEBUG] QUERY OK source="tms_terminals" db=24.3ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:42:18], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:42:18.467] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:42:18.469] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.3ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:42:18.517] [DEBUG] QUERY OK source="tms_terminals" db=47.9ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:42:18], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:42:18.540] [DEBUG] QUERY OK db=23.0ms queue=0.1ms idle=48.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "c63d046c-7746-4ad6-ab7a-190fbdc38933", "2026-08-21T11:41:44Z", ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:42:18.541] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77825, oid: "c63d046c-7746-4ad6-ab7a-190fbdc38933", upload_time: "2026-08-21T11:41:44Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]} [2026-08-21 11:42:18.541] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:41:44Z", "value" => "morefun"} [2026-08-21 11:42:18.577] [DEBUG] QUERY OK db=36.1ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "morefun", "vendor", 77825, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791108, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.578] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:41:44Z", "value" => "kiosk_launcher"} [2026-08-21 11:42:18.628] [DEBUG] QUERY OK db=49.7ms queue=0.2ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "kiosk_launcher", "model", 77825, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791109, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.628] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:41:44Z", "value" => "1.0"} [2026-08-21 11:42:18.656] [DEBUG] QUERY OK db=27.1ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "1.0", "app_version", 77825, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791110, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.657] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:41:44Z", "value" => "13"} [2026-08-21 11:42:18.688] [DEBUG] QUERY OK db=30.6ms queue=0.5ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "13", "android_version", 77825, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.689] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791111, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.689] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:41:44Z", "value" => "993"} [2026-08-21 11:42:18.724] [DEBUG] QUERY OK db=35.0ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "993", "ram_free_mb", 77825, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.724] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791112, itemkey: "ram_free_mb", value: "993", timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.724] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:41:44Z", "value" => "WIFI"} [2026-08-21 11:42:18.756] [DEBUG] QUERY OK db=30.8ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "WIFI", "network_type", 77825, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791113, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.756] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:41:44Z", "value" => "true"} [2026-08-21 11:42:18.790] [DEBUG] QUERY OK db=33.2ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "true", "kiosk_active", 77825, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791114, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.791] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:41:44Z", "value" => ""} [2026-08-21 11:42:18.824] [DEBUG] QUERY OK db=32.4ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:41:44Z", "sim_operator", 77825, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791115, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.825] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:41:44Z", "value" => "UNKNOWN"} [2026-08-21 11:42:18.854] [DEBUG] QUERY OK db=29.2ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "UNKNOWN", "sim_number", 77825, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791116, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.855] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:41:44Z", "value" => "UNKNOWN"} [2026-08-21 11:42:18.877] [DEBUG] QUERY OK db=22.3ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "UNKNOWN", "sim_iccid", 77825, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.878] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791117, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.878] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:41:44Z", "value" => "UNKNOWN"} [2026-08-21 11:42:18.912] [DEBUG] QUERY OK db=34.0ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "UNKNOWN", "sim_imsi", 77825, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791118, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.914] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:41:44Z", "value" => "UNKNOWN"} [2026-08-21 11:42:18.954] [DEBUG] QUERY OK db=39.3ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "UNKNOWN", "sim_iccid2", 77825, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:18.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791119, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:18.954] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:41:44Z", "value" => "UNKNOWN"} [2026-08-21 11:42:19.020] [DEBUG] QUERY OK db=65.1ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "UNKNOWN", "sim_imsi2", 77825, ~N[2026-08-21 11:42:18], ~N[2026-08-21 11:42:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:19.020] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791120, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:18], updated_at: ~N[2026-08-21 11:42:18]}} [2026-08-21 11:42:19.020] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:41:44Z", "value" => "1"} [2026-08-21 11:42:19.107] [DEBUG] QUERY OK db=86.0ms idle=66.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "1", "data_usage_mb", 77825, ~N[2026-08-21 11:42:19], ~N[2026-08-21 11:42:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:19.107] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791121, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:19], updated_at: ~N[2026-08-21 11:42:19]}} [2026-08-21 11:42:19.107] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:41:44Z", "value" => "0"} [2026-08-21 11:42:19.153] [DEBUG] QUERY OK db=45.3ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "0", "mobile_data_mb", 77825, ~N[2026-08-21 11:42:19], ~N[2026-08-21 11:42:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:19.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791122, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:19], updated_at: ~N[2026-08-21 11:42:19]}} [2026-08-21 11:42:19.154] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:41:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:42:19.183] [DEBUG] QUERY OK db=28.8ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:41:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77825, ~N[2026-08-21 11:42:19], ~N[2026-08-21 11:42:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:19.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791123, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:41:44Z", message: nil, status_log_id: 77825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:19], updated_at: ~N[2026-08-21 11:42:19]}} [2026-08-21 11:42:21.356] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 11:42:21.356] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"-4478999-03-31T08:50:35Z","org.device":[{"itemkey":"status","value":"online","timestamp":"-4478999-03-31T08:50:35Z","message":"Device Connected"}]} [2026-08-21 11:42:21.359] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-4478999-03-31T08:50:35Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "-4478999-03-31T08:50:35Z"} [2026-08-21 11:42:21.359] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:42:21.360] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=329.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:42:21.360] [INFO ] Terminal updated: 61250415798001 [2026-08-21 11:42:21.376] [DEBUG] QUERY OK source="tms_terminals" db=16.0ms idle=291.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:42:21], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:42:21.378] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=17.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:42:21.434] [DEBUG] QUERY OK source="tms_terminals" db=55.2ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:42:21], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:42:21.478] [DEBUG] QUERY OK db=41.6ms queue=1.3ms idle=57.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "-4478999-03-31T08:50:35Z", ~N[2026-08-21 11:42:21], ~N[2026-08-21 11:42:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:42:21.478] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77826, oid: "org-id-placeholder", upload_time: "-4478999-03-31T08:50:35Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:21], updated_at: ~N[2026-08-21 11:42:21]} [2026-08-21 11:42:21.480] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-4478999-03-31T08:50:35Z", "value" => "online"} [2026-08-21 11:42:21.519] [DEBUG] QUERY OK db=39.1ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "-4478999-03-31T08:50:35Z", "online", "status", 77826, ~N[2026-08-21 11:42:21], ~N[2026-08-21 11:42:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:21.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791124, itemkey: "status", value: "online", timestamp: "-4478999-03-31T08:50:35Z", message: "Device Connected", status_log_id: 77826, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:21], updated_at: ~N[2026-08-21 11:42:21]}} [2026-08-21 11:42:21.522] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-08-21 11:42:21.528] [DEBUG] QUERY OK source="tms_terminals" db=5.1ms queue=0.1ms idle=44.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:42:21], 1] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-08-21 11:42:21.532] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=0.5ms idle=10.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:42:21], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-08-21 11:42:47.446] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:42:47.446] [INFO ] Incoming JSON payload: {"oid":"27b475fe-6946-44ea-8275-2c0f8d88ce19","sn":"98251226730001","uploadTime":"2026-08-21T11:42:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"ram_free_mb","value":"920","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:42:47Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:42:47.448] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "27b475fe-6946-44ea-8275-2c0f8d88ce19", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:42:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:42:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:42:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:42:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:42:47Z", "value" => "920"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:42:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:42:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:42:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:42:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:42:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:42:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:42:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:42:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:42:47Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:42:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:42:47Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:42:47Z", "vendor" => "morefun"} [2026-08-21 11:42:47.448] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:42:47.448] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:42:47.448] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:42:47.449] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1290.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-08-21 11:42:47.450] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=288.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-08-21 11:42:47.450] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:42:47.452] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:42:47.452] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:42:47.476] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:42:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:42:47.476] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:42:47.478] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=25.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:42:47.534] [DEBUG] QUERY OK source="tms_terminals" db=56.3ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:42:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:42:47.572] [DEBUG] QUERY OK db=37.7ms idle=57.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "27b475fe-6946-44ea-8275-2c0f8d88ce19", "2026-08-21T11:42:47Z", ~N[2026-08-21 11:42:47], ~N[2026-08-21 11:42:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:42:47.573] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77827, oid: "27b475fe-6946-44ea-8275-2c0f8d88ce19", upload_time: "2026-08-21T11:42:47Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:47], updated_at: ~N[2026-08-21 11:42:47]} [2026-08-21 11:42:47.573] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:42:47Z", "value" => "morefun"} [2026-08-21 11:42:47.628] [DEBUG] QUERY OK db=54.6ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "morefun", "vendor", 77827, ~N[2026-08-21 11:42:47], ~N[2026-08-21 11:42:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:47.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791125, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:47], updated_at: ~N[2026-08-21 11:42:47]}} [2026-08-21 11:42:47.628] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:42:47Z", "value" => "kiosk_launcher"} [2026-08-21 11:42:47.673] [DEBUG] QUERY OK db=44.1ms idle=56.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "kiosk_launcher", "model", 77827, ~N[2026-08-21 11:42:47], ~N[2026-08-21 11:42:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:47.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791126, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:47], updated_at: ~N[2026-08-21 11:42:47]}} [2026-08-21 11:42:47.673] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:42:47Z", "value" => "1.0"} [2026-08-21 11:42:47.722] [DEBUG] QUERY OK db=47.7ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "1.0", "app_version", 77827, ~N[2026-08-21 11:42:47], ~N[2026-08-21 11:42:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:47.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791127, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:47], updated_at: ~N[2026-08-21 11:42:47]}} [2026-08-21 11:42:47.722] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:42:47Z", "value" => "13"} [2026-08-21 11:42:47.781] [DEBUG] QUERY OK db=58.1ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "13", "android_version", 77827, ~N[2026-08-21 11:42:47], ~N[2026-08-21 11:42:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:47.781] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791128, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:47], updated_at: ~N[2026-08-21 11:42:47]}} [2026-08-21 11:42:47.781] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:42:47Z", "value" => "920"} [2026-08-21 11:42:47.821] [DEBUG] QUERY OK db=39.3ms queue=0.1ms idle=59.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "920", "ram_free_mb", 77827, ~N[2026-08-21 11:42:47], ~N[2026-08-21 11:42:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:47.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791129, itemkey: "ram_free_mb", value: "920", timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:47], updated_at: ~N[2026-08-21 11:42:47]}} [2026-08-21 11:42:47.822] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:42:47Z", "value" => "WIFI"} [2026-08-21 11:42:47.865] [DEBUG] QUERY OK db=42.0ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "WIFI", "network_type", 77827, ~N[2026-08-21 11:42:47], ~N[2026-08-21 11:42:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:47.865] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791130, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:47], updated_at: ~N[2026-08-21 11:42:47]}} [2026-08-21 11:42:47.865] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:42:47Z", "value" => "true"} [2026-08-21 11:42:47.902] [DEBUG] QUERY OK db=36.2ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "true", "kiosk_active", 77827, ~N[2026-08-21 11:42:47], ~N[2026-08-21 11:42:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:47.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791131, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:47], updated_at: ~N[2026-08-21 11:42:47]}} [2026-08-21 11:42:47.902] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:42:47Z", "value" => ""} [2026-08-21 11:42:47.937] [DEBUG] QUERY OK db=35.1ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:42:47Z", "sim_operator", 77827, ~N[2026-08-21 11:42:47], ~N[2026-08-21 11:42:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:47.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791132, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:47], updated_at: ~N[2026-08-21 11:42:47]}} [2026-08-21 11:42:47.938] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:42:47Z", "value" => "UNKNOWN"} [2026-08-21 11:42:47.962] [DEBUG] QUERY OK db=23.8ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "UNKNOWN", "sim_number", 77827, ~N[2026-08-21 11:42:47], ~N[2026-08-21 11:42:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:47.962] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791133, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:47], updated_at: ~N[2026-08-21 11:42:47]}} [2026-08-21 11:42:47.963] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:42:47Z", "value" => "UNKNOWN"} [2026-08-21 11:42:48.049] [DEBUG] QUERY OK db=85.1ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "UNKNOWN", "sim_iccid", 77827, ~N[2026-08-21 11:42:47], ~N[2026-08-21 11:42:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:48.049] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791134, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:47], updated_at: ~N[2026-08-21 11:42:47]}} [2026-08-21 11:42:48.049] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:42:47Z", "value" => "UNKNOWN"} [2026-08-21 11:42:48.076] [DEBUG] QUERY OK db=26.5ms idle=87.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "UNKNOWN", "sim_imsi", 77827, ~N[2026-08-21 11:42:48], ~N[2026-08-21 11:42:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:48.077] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791135, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:48], updated_at: ~N[2026-08-21 11:42:48]}} [2026-08-21 11:42:48.077] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:42:47Z", "value" => "UNKNOWN"} [2026-08-21 11:42:48.211] [DEBUG] QUERY OK db=133.9ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "UNKNOWN", "sim_iccid2", 77827, ~N[2026-08-21 11:42:48], ~N[2026-08-21 11:42:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:48.212] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791136, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:48], updated_at: ~N[2026-08-21 11:42:48]}} [2026-08-21 11:42:48.212] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:42:47Z", "value" => "UNKNOWN"} [2026-08-21 11:42:48.290] [DEBUG] QUERY OK db=78.1ms queue=0.1ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "UNKNOWN", "sim_imsi2", 77827, ~N[2026-08-21 11:42:48], ~N[2026-08-21 11:42:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:48.291] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791137, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:48], updated_at: ~N[2026-08-21 11:42:48]}} [2026-08-21 11:42:48.291] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:42:47Z", "value" => "35"} [2026-08-21 11:42:48.505] [DEBUG] QUERY OK db=212.6ms idle=80.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "35", "data_usage_mb", 77827, ~N[2026-08-21 11:42:48], ~N[2026-08-21 11:42:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:48.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791138, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:48], updated_at: ~N[2026-08-21 11:42:48]}} [2026-08-21 11:42:48.508] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:42:47Z", "value" => "0"} [2026-08-21 11:42:48.533] [DEBUG] QUERY OK db=24.1ms idle=217.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "0", "mobile_data_mb", 77827, ~N[2026-08-21 11:42:48], ~N[2026-08-21 11:42:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:48.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791139, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:48], updated_at: ~N[2026-08-21 11:42:48]}} [2026-08-21 11:42:48.539] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:42:47Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:42:48.611] [DEBUG] QUERY OK db=70.3ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:47Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77827, ~N[2026-08-21 11:42:48], ~N[2026-08-21 11:42:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:48.612] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791140, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:42:47Z", message: nil, status_log_id: 77827, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:48], updated_at: ~N[2026-08-21 11:42:48]}} [2026-08-21 11:42:48.615] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:42:48.615] [INFO ] Incoming JSON payload: {"oid":"d578c054-014d-4a04-9a56-f7a850eb8ded","sn":"98251226730002","uploadTime":"2026-08-21T11:42:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"ram_free_mb","value":"995","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:42:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:42:48.618] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d578c054-014d-4a04-9a56-f7a850eb8ded", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:42:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:42:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:42:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:42:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:42:14Z", "value" => "995"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:42:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:42:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:42:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:42:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:42:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:42:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:42:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:42:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:42:14Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:42:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:42:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:42:14Z", "vendor" => "morefun"} [2026-08-21 11:42:48.618] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:42:48.618] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:42:48.619] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:42:48.631] [DEBUG] QUERY OK source="parameter_templates" db=12.4ms idle=86.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-08-21 11:42:48.633] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=21.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:42:48.633] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:42:48.637] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=2.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:42:48.637] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:42:48.667] [DEBUG] QUERY OK source="tms_terminals" db=29.5ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:42:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:42:48.667] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:42:48.669] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=32.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:42:48.717] [DEBUG] QUERY OK source="tms_terminals" db=46.7ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:42:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:42:48.757] [DEBUG] QUERY OK db=39.6ms idle=48.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "d578c054-014d-4a04-9a56-f7a850eb8ded", "2026-08-21T11:42:14Z", ~N[2026-08-21 11:42:48], ~N[2026-08-21 11:42:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:42:48.757] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77828, oid: "d578c054-014d-4a04-9a56-f7a850eb8ded", upload_time: "2026-08-21T11:42:14Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:48], updated_at: ~N[2026-08-21 11:42:48]} [2026-08-21 11:42:48.757] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:42:14Z", "value" => "morefun"} [2026-08-21 11:42:48.817] [DEBUG] QUERY OK db=59.3ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "morefun", "vendor", 77828, ~N[2026-08-21 11:42:48], ~N[2026-08-21 11:42:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:48.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791141, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:48], updated_at: ~N[2026-08-21 11:42:48]}} [2026-08-21 11:42:48.817] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:42:14Z", "value" => "kiosk_launcher"} [2026-08-21 11:42:48.855] [DEBUG] QUERY OK db=37.3ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "kiosk_launcher", "model", 77828, ~N[2026-08-21 11:42:48], ~N[2026-08-21 11:42:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:48.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791142, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:48], updated_at: ~N[2026-08-21 11:42:48]}} [2026-08-21 11:42:48.856] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:42:14Z", "value" => "1.0"} [2026-08-21 11:42:48.896] [DEBUG] QUERY OK db=39.9ms queue=0.1ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "1.0", "app_version", 77828, ~N[2026-08-21 11:42:48], ~N[2026-08-21 11:42:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:48.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791143, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:48], updated_at: ~N[2026-08-21 11:42:48]}} [2026-08-21 11:42:48.897] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:42:14Z", "value" => "13"} [2026-08-21 11:42:48.957] [DEBUG] QUERY OK db=59.7ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "13", "android_version", 77828, ~N[2026-08-21 11:42:48], ~N[2026-08-21 11:42:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:48.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791144, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:48], updated_at: ~N[2026-08-21 11:42:48]}} [2026-08-21 11:42:48.957] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:42:14Z", "value" => "995"} [2026-08-21 11:42:49.022] [DEBUG] QUERY OK db=64.7ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "995", "ram_free_mb", 77828, ~N[2026-08-21 11:42:48], ~N[2026-08-21 11:42:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:49.023] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791145, itemkey: "ram_free_mb", value: "995", timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:48], updated_at: ~N[2026-08-21 11:42:48]}} [2026-08-21 11:42:49.023] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:42:14Z", "value" => "WIFI"} [2026-08-21 11:42:49.085] [DEBUG] QUERY OK db=61.8ms idle=66.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "WIFI", "network_type", 77828, ~N[2026-08-21 11:42:49], ~N[2026-08-21 11:42:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:49.086] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791146, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:49], updated_at: ~N[2026-08-21 11:42:49]}} [2026-08-21 11:42:49.086] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:42:14Z", "value" => "true"} [2026-08-21 11:42:49.119] [DEBUG] QUERY OK db=33.4ms idle=63.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "true", "kiosk_active", 77828, ~N[2026-08-21 11:42:49], ~N[2026-08-21 11:42:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:49.120] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791147, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:49], updated_at: ~N[2026-08-21 11:42:49]}} [2026-08-21 11:42:49.120] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:42:14Z", "value" => ""} [2026-08-21 11:42:49.180] [DEBUG] QUERY OK db=59.2ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:42:14Z", "sim_operator", 77828, ~N[2026-08-21 11:42:49], ~N[2026-08-21 11:42:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:49.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791148, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:49], updated_at: ~N[2026-08-21 11:42:49]}} [2026-08-21 11:42:49.180] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:42:14Z", "value" => "UNKNOWN"} [2026-08-21 11:42:49.212] [DEBUG] QUERY OK db=31.8ms idle=13.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "UNKNOWN", "sim_number", 77828, ~N[2026-08-21 11:42:49], ~N[2026-08-21 11:42:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:49.213] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791149, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:49], updated_at: ~N[2026-08-21 11:42:49]}} [2026-08-21 11:42:49.213] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:42:14Z", "value" => "UNKNOWN"} [2026-08-21 11:42:49.255] [DEBUG] QUERY OK db=41.0ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "UNKNOWN", "sim_iccid", 77828, ~N[2026-08-21 11:42:49], ~N[2026-08-21 11:42:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:49.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791150, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:49], updated_at: ~N[2026-08-21 11:42:49]}} [2026-08-21 11:42:49.257] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:42:14Z", "value" => "UNKNOWN"} [2026-08-21 11:42:49.313] [DEBUG] QUERY OK db=55.9ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "UNKNOWN", "sim_imsi", 77828, ~N[2026-08-21 11:42:49], ~N[2026-08-21 11:42:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:49.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791151, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:49], updated_at: ~N[2026-08-21 11:42:49]}} [2026-08-21 11:42:49.314] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:42:14Z", "value" => "UNKNOWN"} [2026-08-21 11:42:49.368] [DEBUG] QUERY OK db=53.7ms idle=59.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "UNKNOWN", "sim_iccid2", 77828, ~N[2026-08-21 11:42:49], ~N[2026-08-21 11:42:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:49.369] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791152, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:49], updated_at: ~N[2026-08-21 11:42:49]}} [2026-08-21 11:42:49.369] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:42:14Z", "value" => "UNKNOWN"} [2026-08-21 11:42:49.432] [DEBUG] QUERY OK db=62.1ms idle=56.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "UNKNOWN", "sim_imsi2", 77828, ~N[2026-08-21 11:42:49], ~N[2026-08-21 11:42:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:49.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791153, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:49], updated_at: ~N[2026-08-21 11:42:49]}} [2026-08-21 11:42:49.432] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:42:14Z", "value" => "1"} [2026-08-21 11:42:49.470] [DEBUG] QUERY OK db=37.3ms idle=64.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "1", "data_usage_mb", 77828, ~N[2026-08-21 11:42:49], ~N[2026-08-21 11:42:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:49.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791154, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:49], updated_at: ~N[2026-08-21 11:42:49]}} [2026-08-21 11:42:49.470] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:42:14Z", "value" => "0"} [2026-08-21 11:42:49.516] [DEBUG] QUERY OK db=44.9ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "0", "mobile_data_mb", 77828, ~N[2026-08-21 11:42:49], ~N[2026-08-21 11:42:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:49.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791155, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:49], updated_at: ~N[2026-08-21 11:42:49]}} [2026-08-21 11:42:49.517] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:42:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:42:49.553] [DEBUG] QUERY OK db=34.8ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77828, ~N[2026-08-21 11:42:49], ~N[2026-08-21 11:42:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:42:49.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791156, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:42:14Z", message: nil, status_log_id: 77828, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:42:49], updated_at: ~N[2026-08-21 11:42:49]}} [2026-08-21 11:43:17.807] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:43:17.807] [INFO ] Incoming JSON payload: {"oid":"e63bb176-93a1-4efc-ab74-b6e0ed290e7d","sn":"98251226730001","uploadTime":"2026-08-21T11:43:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"ram_free_mb","value":"919","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:43:17Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:43:17.808] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e63bb176-93a1-4efc-ab74-b6e0ed290e7d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:43:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:43:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:43:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:43:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:43:17Z", "value" => "919"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:43:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:43:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:43:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:43:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:43:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:43:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:43:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:43:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:43:17Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:43:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:43:17Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:43:17Z", "vendor" => "morefun"} [2026-08-21 11:43:17.808] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:43:17.808] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:43:17.808] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:43:17.812] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=1534.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-08-21 11:43:17.813] [DEBUG] QUERY OK source="parameter_templates" db=0.2ms idle=532.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-08-21 11:43:17.813] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:43:17.813] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:43:17.814] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:43:17.872] [DEBUG] QUERY OK source="tms_terminals" db=58.3ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:43:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:43:17.873] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:43:17.874] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=59.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:43:17.900] [DEBUG] QUERY OK source="tms_terminals" db=25.9ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:43:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:43:17.946] [DEBUG] QUERY OK db=45.5ms idle=26.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e63bb176-93a1-4efc-ab74-b6e0ed290e7d", "2026-08-21T11:43:17Z", ~N[2026-08-21 11:43:17], ~N[2026-08-21 11:43:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:43:17.946] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77829, oid: "e63bb176-93a1-4efc-ab74-b6e0ed290e7d", upload_time: "2026-08-21T11:43:17Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:17], updated_at: ~N[2026-08-21 11:43:17]} [2026-08-21 11:43:17.946] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:43:17Z", "value" => "morefun"} [2026-08-21 11:43:17.983] [DEBUG] QUERY OK db=36.6ms queue=0.1ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "morefun", "vendor", 77829, ~N[2026-08-21 11:43:17], ~N[2026-08-21 11:43:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:17.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791157, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:17], updated_at: ~N[2026-08-21 11:43:17]}} [2026-08-21 11:43:17.984] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:43:17Z", "value" => "kiosk_launcher"} [2026-08-21 11:43:18.054] [DEBUG] QUERY OK db=69.6ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "kiosk_launcher", "model", 77829, ~N[2026-08-21 11:43:17], ~N[2026-08-21 11:43:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.054] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791158, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:17], updated_at: ~N[2026-08-21 11:43:17]}} [2026-08-21 11:43:18.054] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:43:17Z", "value" => "1.0"} [2026-08-21 11:43:18.186] [DEBUG] QUERY OK db=131.1ms idle=71.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "1.0", "app_version", 77829, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791159, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.187] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:43:17Z", "value" => "13"} [2026-08-21 11:43:18.228] [DEBUG] QUERY OK db=39.1ms queue=0.1ms idle=134.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "13", "android_version", 77829, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.228] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791160, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.228] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:43:17Z", "value" => "919"} [2026-08-21 11:43:18.275] [DEBUG] QUERY OK db=46.5ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "919", "ram_free_mb", 77829, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.275] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791161, itemkey: "ram_free_mb", value: "919", timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.275] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:43:17Z", "value" => "WIFI"} [2026-08-21 11:43:18.293] [DEBUG] QUERY OK db=17.1ms queue=0.1ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "WIFI", "network_type", 77829, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791162, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.293] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:43:17Z", "value" => "true"} [2026-08-21 11:43:18.329] [DEBUG] QUERY OK db=34.9ms idle=10.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "true", "kiosk_active", 77829, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.330] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791163, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.330] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:43:17Z", "value" => ""} [2026-08-21 11:43:18.380] [DEBUG] QUERY OK db=49.3ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:43:17Z", "sim_operator", 77829, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791164, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.380] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:43:17Z", "value" => "UNKNOWN"} [2026-08-21 11:43:18.406] [DEBUG] QUERY OK db=25.6ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "UNKNOWN", "sim_number", 77829, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791165, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.408] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:43:17Z", "value" => "UNKNOWN"} [2026-08-21 11:43:18.451] [DEBUG] QUERY OK db=42.8ms queue=0.1ms idle=28.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "UNKNOWN", "sim_iccid", 77829, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791166, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.452] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:43:17Z", "value" => "UNKNOWN"} [2026-08-21 11:43:18.490] [DEBUG] QUERY OK db=37.9ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "UNKNOWN", "sim_imsi", 77829, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791167, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.491] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:43:17Z", "value" => "UNKNOWN"} [2026-08-21 11:43:18.522] [DEBUG] QUERY OK db=31.2ms queue=0.1ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "UNKNOWN", "sim_iccid2", 77829, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791168, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.523] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:43:17Z", "value" => "UNKNOWN"} [2026-08-21 11:43:18.562] [DEBUG] QUERY OK db=38.9ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "UNKNOWN", "sim_imsi2", 77829, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.562] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791169, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.562] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:43:17Z", "value" => "35"} [2026-08-21 11:43:18.604] [DEBUG] QUERY OK db=41.1ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "35", "data_usage_mb", 77829, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791170, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.604] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:43:17Z", "value" => "0"} [2026-08-21 11:43:18.639] [DEBUG] QUERY OK db=33.7ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "0", "mobile_data_mb", 77829, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.639] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791171, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.640] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:43:17Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:43:18.676] [DEBUG] QUERY OK db=34.7ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:17Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77829, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.677] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791172, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:43:17Z", message: nil, status_log_id: 77829, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.678] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:43:18.679] [INFO ] Incoming JSON payload: {"oid":"dbf97526-e858-49c3-9e32-2d8a64eeb94a","sn":"98251226730002","uploadTime":"2026-08-21T11:42:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"ram_free_mb","value":"997","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:42:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:43:18.680] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "dbf97526-e858-49c3-9e32-2d8a64eeb94a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:42:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:42:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:42:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:42:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:42:44Z", "value" => "997"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:42:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:42:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:42:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:42:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:42:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:42:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:42:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:42:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:42:44Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:42:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:42:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:42:44Z", "vendor" => "morefun"} [2026-08-21 11:43:18.680] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:43:18.681] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:43:18.681] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:43:18.682] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=42.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-08-21 11:43:18.683] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=6.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:43:18.683] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:43:18.684] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.5ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:43:18.685] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:43:18.722] [DEBUG] QUERY OK source="tms_terminals" db=37.2ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:43:18], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:43:18.722] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:43:18.724] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.6ms idle=38.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:43:18.757] [DEBUG] QUERY OK source="tms_terminals" db=32.1ms queue=0.1ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:43:18], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:43:18.779] [DEBUG] QUERY OK db=22.3ms idle=32.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "dbf97526-e858-49c3-9e32-2d8a64eeb94a", "2026-08-21T11:42:44Z", ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:43:18.780] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77830, oid: "dbf97526-e858-49c3-9e32-2d8a64eeb94a", upload_time: "2026-08-21T11:42:44Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]} [2026-08-21 11:43:18.780] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:42:44Z", "value" => "morefun"} [2026-08-21 11:43:18.824] [DEBUG] QUERY OK db=43.7ms queue=0.1ms idle=23.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "morefun", "vendor", 77830, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791173, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.825] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:42:44Z", "value" => "kiosk_launcher"} [2026-08-21 11:43:18.860] [DEBUG] QUERY OK db=34.6ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "kiosk_launcher", "model", 77830, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.860] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791174, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.861] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:42:44Z", "value" => "1.0"} [2026-08-21 11:43:18.881] [DEBUG] QUERY OK db=19.6ms queue=0.1ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "1.0", "app_version", 77830, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791175, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.881] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:42:44Z", "value" => "13"} [2026-08-21 11:43:18.916] [DEBUG] QUERY OK db=34.4ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "13", "android_version", 77830, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.916] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791176, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.916] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:42:44Z", "value" => "997"} [2026-08-21 11:43:18.942] [DEBUG] QUERY OK db=25.7ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "997", "ram_free_mb", 77830, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791177, itemkey: "ram_free_mb", value: "997", timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.943] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:42:44Z", "value" => "WIFI"} [2026-08-21 11:43:18.970] [DEBUG] QUERY OK db=27.1ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "WIFI", "network_type", 77830, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:18.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791178, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:18.971] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:42:44Z", "value" => "true"} [2026-08-21 11:43:19.061] [DEBUG] QUERY OK db=89.9ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "true", "kiosk_active", 77830, ~N[2026-08-21 11:43:18], ~N[2026-08-21 11:43:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:19.061] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791179, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:18], updated_at: ~N[2026-08-21 11:43:18]}} [2026-08-21 11:43:19.062] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:42:44Z", "value" => ""} [2026-08-21 11:43:19.111] [DEBUG] QUERY OK db=48.7ms idle=91.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:42:44Z", "sim_operator", 77830, ~N[2026-08-21 11:43:19], ~N[2026-08-21 11:43:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:19.112] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791180, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:19], updated_at: ~N[2026-08-21 11:43:19]}} [2026-08-21 11:43:19.113] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:42:44Z", "value" => "UNKNOWN"} [2026-08-21 11:43:19.153] [DEBUG] QUERY OK db=39.8ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "UNKNOWN", "sim_number", 77830, ~N[2026-08-21 11:43:19], ~N[2026-08-21 11:43:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:19.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791181, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:19], updated_at: ~N[2026-08-21 11:43:19]}} [2026-08-21 11:43:19.154] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:42:44Z", "value" => "UNKNOWN"} [2026-08-21 11:43:19.190] [DEBUG] QUERY OK db=35.8ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "UNKNOWN", "sim_iccid", 77830, ~N[2026-08-21 11:43:19], ~N[2026-08-21 11:43:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:19.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791182, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:19], updated_at: ~N[2026-08-21 11:43:19]}} [2026-08-21 11:43:19.190] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:42:44Z", "value" => "UNKNOWN"} [2026-08-21 11:43:19.237] [DEBUG] QUERY OK db=46.4ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "UNKNOWN", "sim_imsi", 77830, ~N[2026-08-21 11:43:19], ~N[2026-08-21 11:43:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:19.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791183, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:19], updated_at: ~N[2026-08-21 11:43:19]}} [2026-08-21 11:43:19.237] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:42:44Z", "value" => "UNKNOWN"} [2026-08-21 11:43:19.287] [DEBUG] QUERY OK db=47.4ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "UNKNOWN", "sim_iccid2", 77830, ~N[2026-08-21 11:43:19], ~N[2026-08-21 11:43:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:19.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791184, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:19], updated_at: ~N[2026-08-21 11:43:19]}} [2026-08-21 11:43:19.288] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:42:44Z", "value" => "UNKNOWN"} [2026-08-21 11:43:19.323] [DEBUG] QUERY OK db=35.2ms idle=0.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "UNKNOWN", "sim_imsi2", 77830, ~N[2026-08-21 11:43:19], ~N[2026-08-21 11:43:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:19.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791185, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:19], updated_at: ~N[2026-08-21 11:43:19]}} [2026-08-21 11:43:19.324] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:42:44Z", "value" => "1"} [2026-08-21 11:43:19.365] [DEBUG] QUERY OK db=40.7ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "1", "data_usage_mb", 77830, ~N[2026-08-21 11:43:19], ~N[2026-08-21 11:43:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:19.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791186, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:19], updated_at: ~N[2026-08-21 11:43:19]}} [2026-08-21 11:43:19.365] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:42:44Z", "value" => "0"} [2026-08-21 11:43:19.407] [DEBUG] QUERY OK db=41.5ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "0", "mobile_data_mb", 77830, ~N[2026-08-21 11:43:19], ~N[2026-08-21 11:43:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:19.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791187, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:19], updated_at: ~N[2026-08-21 11:43:19]}} [2026-08-21 11:43:19.409] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:42:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:43:19.459] [DEBUG] QUERY OK db=49.2ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:42:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77830, ~N[2026-08-21 11:43:19], ~N[2026-08-21 11:43:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:19.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791188, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:42:44Z", message: nil, status_log_id: 77830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:19], updated_at: ~N[2026-08-21 11:43:19]}} [2026-08-21 11:43:47.921] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:43:47.921] [INFO ] Incoming JSON payload: {"oid":"af6f8411-53fb-469a-ab44-012168ec9f7f","sn":"98251226730001","uploadTime":"2026-08-21T11:43:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"ram_free_mb","value":"925","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:43:47Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:43:47.925] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "af6f8411-53fb-469a-ab44-012168ec9f7f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:43:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:43:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:43:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:43:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:43:47Z", "value" => "925"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:43:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:43:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:43:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:43:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:43:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:43:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:43:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:43:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:43:47Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:43:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:43:47Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:43:47Z", "vendor" => "morefun"} [2026-08-21 11:43:47.925] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:43:47.925] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:43:47.926] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:43:47.929] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=891.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 11:43:47.930] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=545.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-08-21 11:43:47.931] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:43:47.935] [DEBUG] QUERY OK source="tms_terminals" db=3.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:43:47.936] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:43:49.200] [DEBUG] QUERY OK source="tms_terminals" db=1261.4ms idle=8.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:43:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:43:49.200] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:43:49.205] [DEBUG] QUERY OK source="tms_terminals" db=4.6ms queue=0.1ms idle=813.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:43:49.267] [DEBUG] QUERY OK source="tms_terminals" db=59.9ms queue=0.8ms idle=6.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:43:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:43:49.303] [DEBUG] QUERY OK db=35.6ms idle=63.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "af6f8411-53fb-469a-ab44-012168ec9f7f", "2026-08-21T11:43:47Z", ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:43:49.303] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77831, oid: "af6f8411-53fb-469a-ab44-012168ec9f7f", upload_time: "2026-08-21T11:43:47Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]} [2026-08-21 11:43:49.304] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:43:47Z", "value" => "morefun"} [2026-08-21 11:43:49.354] [DEBUG] QUERY OK db=49.9ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "morefun", "vendor", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791189, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.354] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:43:47Z", "value" => "kiosk_launcher"} [2026-08-21 11:43:49.399] [DEBUG] QUERY OK db=44.3ms queue=0.1ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "kiosk_launcher", "model", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791190, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.402] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:43:47Z", "value" => "1.0"} [2026-08-21 11:43:49.449] [DEBUG] QUERY OK db=47.3ms idle=9.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "1.0", "app_version", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791191, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.453] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:43:47Z", "value" => "13"} [2026-08-21 11:43:49.502] [DEBUG] QUERY OK db=48.6ms queue=0.1ms idle=54.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "13", "android_version", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791192, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.505] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:43:47Z", "value" => "925"} [2026-08-21 11:43:49.538] [DEBUG] QUERY OK db=33.1ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "925", "ram_free_mb", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791193, itemkey: "ram_free_mb", value: "925", timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.542] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:43:47Z", "value" => "WIFI"} [2026-08-21 11:43:49.590] [DEBUG] QUERY OK db=46.6ms queue=1.4ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "WIFI", "network_type", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.593] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791194, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.594] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:43:47Z", "value" => "true"} [2026-08-21 11:43:49.627] [DEBUG] QUERY OK db=31.4ms idle=57.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "true", "kiosk_active", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.628] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791195, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.628] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:43:47Z", "value" => ""} [2026-08-21 11:43:49.662] [DEBUG] QUERY OK db=33.6ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:43:47Z", "sim_operator", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791196, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.662] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:43:47Z", "value" => "UNKNOWN"} [2026-08-21 11:43:49.731] [DEBUG] QUERY OK db=65.9ms queue=1.1ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "UNKNOWN", "sim_number", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791197, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.732] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:43:47Z", "value" => "UNKNOWN"} [2026-08-21 11:43:49.796] [DEBUG] QUERY OK db=62.4ms idle=72.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "UNKNOWN", "sim_iccid", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.797] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791198, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.797] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:43:47Z", "value" => "UNKNOWN"} [2026-08-21 11:43:49.839] [DEBUG] QUERY OK db=41.0ms queue=0.2ms idle=66.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "UNKNOWN", "sim_imsi", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791199, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.839] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:43:47Z", "value" => "UNKNOWN"} [2026-08-21 11:43:49.876] [DEBUG] QUERY OK db=35.9ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "UNKNOWN", "sim_iccid2", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791200, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.877] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:43:47Z", "value" => "UNKNOWN"} [2026-08-21 11:43:49.910] [DEBUG] QUERY OK db=32.1ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "UNKNOWN", "sim_imsi2", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791201, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.910] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:43:47Z", "value" => "35"} [2026-08-21 11:43:49.954] [DEBUG] QUERY OK db=43.3ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "35", "data_usage_mb", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791202, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.956] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:43:47Z", "value" => "0"} [2026-08-21 11:43:49.991] [DEBUG] QUERY OK db=34.2ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "0", "mobile_data_mb", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:49.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791203, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:49.992] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:43:47Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:43:50.026] [DEBUG] QUERY OK db=32.3ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:47Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77831, ~N[2026-08-21 11:43:49], ~N[2026-08-21 11:43:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:50.027] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791204, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:43:47Z", message: nil, status_log_id: 77831, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:49], updated_at: ~N[2026-08-21 11:43:49]}} [2026-08-21 11:43:50.027] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:43:50.027] [INFO ] Incoming JSON payload: {"oid":"20893f5a-28b6-4826-9e9f-3bc945f7affa","sn":"98251226730002","uploadTime":"2026-08-21T11:43:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"ram_free_mb","value":"996","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:43:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:43:50.028] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "20893f5a-28b6-4826-9e9f-3bc945f7affa", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:43:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:43:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:43:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:43:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:43:14Z", "value" => "996"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:43:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:43:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:43:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:43:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:43:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:43:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:43:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:43:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:43:14Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:43:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:43:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:43:14Z", "vendor" => "morefun"} [2026-08-21 11:43:50.028] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:43:50.029] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:43:50.029] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:43:50.032] [DEBUG] QUERY OK source="parameter_templates" db=3.4ms idle=37.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-08-21 11:43:50.033] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=7.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-08-21 11:43:50.034] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:43:50.037] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=1.4ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:43:50.037] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:43:50.092] [DEBUG] QUERY OK source="tms_terminals" db=54.9ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:43:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:43:50.092] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:43:50.093] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=55.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:43:50.148] [DEBUG] QUERY OK source="tms_terminals" db=54.1ms queue=0.2ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:43:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:43:50.172] [DEBUG] QUERY OK db=21.2ms idle=57.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "20893f5a-28b6-4826-9e9f-3bc945f7affa", "2026-08-21T11:43:14Z", ~N[2026-08-21 11:43:50], ~N[2026-08-21 11:43:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:43:50.172] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77832, oid: "20893f5a-28b6-4826-9e9f-3bc945f7affa", upload_time: "2026-08-21T11:43:14Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:50], updated_at: ~N[2026-08-21 11:43:50]} [2026-08-21 11:43:50.172] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:43:14Z", "value" => "morefun"} [2026-08-21 11:43:50.222] [DEBUG] QUERY OK db=49.5ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "morefun", "vendor", 77832, ~N[2026-08-21 11:43:50], ~N[2026-08-21 11:43:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:50.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791205, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:50], updated_at: ~N[2026-08-21 11:43:50]}} [2026-08-21 11:43:50.224] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:43:14Z", "value" => "kiosk_launcher"} [2026-08-21 11:43:50.337] [DEBUG] QUERY OK db=111.3ms idle=54.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "kiosk_launcher", "model", 77832, ~N[2026-08-21 11:43:50], ~N[2026-08-21 11:43:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:50.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791206, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:50], updated_at: ~N[2026-08-21 11:43:50]}} [2026-08-21 11:43:50.338] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:43:14Z", "value" => "1.0"} [2026-08-21 11:43:50.427] [DEBUG] QUERY OK db=88.8ms idle=116.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "1.0", "app_version", 77832, ~N[2026-08-21 11:43:50], ~N[2026-08-21 11:43:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:50.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791207, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:50], updated_at: ~N[2026-08-21 11:43:50]}} [2026-08-21 11:43:50.429] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:43:14Z", "value" => "13"} [2026-08-21 11:43:50.515] [DEBUG] QUERY OK db=84.9ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "13", "android_version", 77832, ~N[2026-08-21 11:43:50], ~N[2026-08-21 11:43:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:50.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791208, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:50], updated_at: ~N[2026-08-21 11:43:50]}} [2026-08-21 11:43:50.516] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:43:14Z", "value" => "996"} [2026-08-21 11:43:50.568] [DEBUG] QUERY OK db=50.5ms decode=1.0ms idle=89.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "996", "ram_free_mb", 77832, ~N[2026-08-21 11:43:50], ~N[2026-08-21 11:43:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:50.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791209, itemkey: "ram_free_mb", value: "996", timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:50], updated_at: ~N[2026-08-21 11:43:50]}} [2026-08-21 11:43:50.568] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:43:14Z", "value" => "WIFI"} [2026-08-21 11:43:50.622] [DEBUG] QUERY OK db=52.6ms queue=0.1ms idle=54.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "WIFI", "network_type", 77832, ~N[2026-08-21 11:43:50], ~N[2026-08-21 11:43:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:50.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791210, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:50], updated_at: ~N[2026-08-21 11:43:50]}} [2026-08-21 11:43:50.623] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:43:14Z", "value" => "true"} [2026-08-21 11:43:50.691] [DEBUG] QUERY OK db=68.2ms idle=56.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "true", "kiosk_active", 77832, ~N[2026-08-21 11:43:50], ~N[2026-08-21 11:43:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:50.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791211, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:50], updated_at: ~N[2026-08-21 11:43:50]}} [2026-08-21 11:43:50.692] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:43:14Z", "value" => ""} [2026-08-21 11:43:50.850] [DEBUG] QUERY OK db=157.8ms idle=70.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:43:14Z", "sim_operator", 77832, ~N[2026-08-21 11:43:50], ~N[2026-08-21 11:43:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:50.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791212, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:50], updated_at: ~N[2026-08-21 11:43:50]}} [2026-08-21 11:43:50.850] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:43:14Z", "value" => "UNKNOWN"} [2026-08-21 11:43:50.927] [DEBUG] QUERY OK db=76.0ms idle=159.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "UNKNOWN", "sim_number", 77832, ~N[2026-08-21 11:43:50], ~N[2026-08-21 11:43:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:50.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791213, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:50], updated_at: ~N[2026-08-21 11:43:50]}} [2026-08-21 11:43:50.928] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:43:14Z", "value" => "UNKNOWN"} [2026-08-21 11:43:50.974] [DEBUG] QUERY OK db=45.1ms idle=78.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "UNKNOWN", "sim_iccid", 77832, ~N[2026-08-21 11:43:50], ~N[2026-08-21 11:43:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:50.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791214, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:50], updated_at: ~N[2026-08-21 11:43:50]}} [2026-08-21 11:43:50.977] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:43:14Z", "value" => "UNKNOWN"} [2026-08-21 11:43:51.047] [DEBUG] QUERY OK db=69.9ms queue=0.1ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "UNKNOWN", "sim_imsi", 77832, ~N[2026-08-21 11:43:50], ~N[2026-08-21 11:43:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:51.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791215, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:50], updated_at: ~N[2026-08-21 11:43:50]}} [2026-08-21 11:43:51.047] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:43:14Z", "value" => "UNKNOWN"} [2026-08-21 11:43:51.092] [DEBUG] QUERY OK db=43.8ms idle=74.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "UNKNOWN", "sim_iccid2", 77832, ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:51.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791216, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:51], updated_at: ~N[2026-08-21 11:43:51]}} [2026-08-21 11:43:51.092] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:43:14Z", "value" => "UNKNOWN"} [2026-08-21 11:43:51.124] [DEBUG] QUERY OK db=31.0ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "UNKNOWN", "sim_imsi2", 77832, ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:51.124] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791217, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:51], updated_at: ~N[2026-08-21 11:43:51]}} [2026-08-21 11:43:51.124] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:43:14Z", "value" => "1"} [2026-08-21 11:43:51.162] [DEBUG] QUERY OK db=37.7ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "1", "data_usage_mb", 77832, ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:51.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791218, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:51], updated_at: ~N[2026-08-21 11:43:51]}} [2026-08-21 11:43:51.163] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:43:14Z", "value" => "0"} [2026-08-21 11:43:51.216] [DEBUG] QUERY OK db=53.1ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "0", "mobile_data_mb", 77832, ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:51.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791219, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:51], updated_at: ~N[2026-08-21 11:43:51]}} [2026-08-21 11:43:51.217] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:43:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:43:51.270] [DEBUG] QUERY OK db=49.0ms queue=2.4ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77832, ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:51.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791220, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:43:14Z", message: nil, status_log_id: 77832, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:51], updated_at: ~N[2026-08-21 11:43:51]}} [2026-08-21 11:43:51.274] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 11:43:51.274] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T02:53:16Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T02:53:16Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T02:53:16Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T02:53:16Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T02:53:16Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T02:53:16Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T02:53:16Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T02:53:16Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T02:53:16Z","vendor":"MoreFun"} [2026-08-21 11:43:51.274] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:53:16Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:53:16Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:53:16Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:53:16Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:53:16Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:53:16Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:53:16Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:53:16Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T02:53:16Z", "vendor" => "MoreFun"} [2026-08-21 11:43:51.274] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:43:51.275] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 11:43:51.275] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 11:43:51.277] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=59.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-08-21 11:43:51.278] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=7.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 11:43:51.279] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms queue=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-08-21 11:43:51.282] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=1.5ms idle=2.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:43:51.283] [DEBUG] QUERY OK source="pos_terminal" db=0.6ms idle=3.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:43:51.324] [DEBUG] QUERY OK source="pos_merchant" db=40.2ms idle=1.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:43:51.329] [DEBUG] QUERY OK db=2.7ms queue=2.0ms idle=1288.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 ["123451234512345"] [2026-08-21 11:43:51.329] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:43:51.330] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms queue=0.1ms idle=46.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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:43:51.330] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 11:43:51.331] [DEBUG] QUERY OK source="address" db=0.9ms idle=6.7ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:43:51.332] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 11:43:51.334] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 11:43:51.379] [DEBUG] QUERY OK db=43.6ms queue=0.5ms idle=4.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "652c081cdfd60b007c489c1dec9b29607f46dc6e0171d4ca65ed2e957ee76f49", 2276, 932, ~U[2026-08-21 11:43:51Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:43:51.379] [INFO ] AutoPushService: Created push log 49034 for MF919 params.zip [2026-08-21 11:43:51.380] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 2276, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:43:51.383] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:43:51.383] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 11:43:51.385] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms queue=0.1ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 11:43:51.393] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 11:43:51.430] [DEBUG] QUERY OK db=35.7ms queue=0.1ms idle=15.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "958ec07664116d5d3028f27ea9af7d6ebad635527aa2572a606085648536c355", 2340, 17947, ~U[2026-08-21 11:43:51Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:43:51.431] [INFO ] AutoPushService: Created push log 49035 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:43:51.431] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 2340, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:43:51.431] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:43:51.432] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 11:43:51.436] [DEBUG] QUERY OK source="config_file_versions" db=3.1ms idle=29.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-08-21 11:43:51.436] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 11:43:51.439] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:43:51.440] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 11:43:51.443] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:43:51.443] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:43:51.446] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:43:51.449] [DEBUG] QUERY OK source="config_file_versions" db=1.9ms idle=11.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-08-21 11:43:51.450] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:43:51.450] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 11:43:51.451] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:43:51.452] [INFO ] Terminal updated: 98250623730001 [2026-08-21 11:43:51.497] [DEBUG] QUERY OK source="tms_terminals" db=45.4ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:43:51], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:43:51.499] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=46.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-08-21 11:43:51.500] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=2.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:43:51.501] [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-08-21 11:43:51.501] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:43:51.572] [DEBUG] QUERY OK source="parameter_push_logs" db=70.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 [19, "application", ~N[2026-08-21 11:13:51]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:43:51.572] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:43:51.573] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 11:43:51.576] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=73.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:43:51.577] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=4.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:43:51.580] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:43:51.581] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:43:51.630] [DEBUG] QUERY OK source="tms_terminals" db=46.4ms queue=1.2ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:43:51], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:43:51.668] [DEBUG] QUERY OK db=37.4ms queue=0.1ms idle=48.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T02:53:16Z", ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:43:51.668] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77833, oid: "organization_id", upload_time: "2026-08-21T02:53:16Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:51], updated_at: ~N[2026-08-21 11:43:51]} [2026-08-21 11:43:51.668] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:53:16Z", "value" => "online"} [2026-08-21 11:43:51.736] [DEBUG] QUERY OK db=64.7ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T02:53:16Z", "online", "status", 77833, ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:51.737] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791221, itemkey: "status", value: "online", timestamp: "2026-08-21T02:53:16Z", message: "Terminal status update", status_log_id: 77833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:51], updated_at: ~N[2026-08-21 11:43:51]}} [2026-08-21 11:43:51.737] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 11:43:51.737] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:53:16Z", "value" => "51"} [2026-08-21 11:43:51.774] [DEBUG] QUERY OK db=36.5ms idle=70.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T02:53:16Z", "51", "battery", 77833, ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:51.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791222, itemkey: "battery", value: "51", timestamp: "2026-08-21T02:53:16Z", message: "Battery level", status_log_id: 77833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:51], updated_at: ~N[2026-08-21 11:43:51]}} [2026-08-21 11:43:51.775] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:53:16Z", "value" => "online"} [2026-08-21 11:43:51.792] [DEBUG] QUERY OK db=17.2ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T02:53:16Z", "online", "network", 77833, ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:51.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791223, itemkey: "network", value: "online", timestamp: "2026-08-21T02:53:16Z", message: "Network connectivity", status_log_id: 77833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:51], updated_at: ~N[2026-08-21 11:43:51]}} [2026-08-21 11:43:51.794] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 11:43:51.797] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:53:16Z", "value" => "0"} [2026-08-21 11:43:51.849] [DEBUG] QUERY OK db=50.7ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T02:53:16Z", "0", "cpu", 77833, ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:51.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791224, itemkey: "cpu", value: "0", timestamp: "2026-08-21T02:53:16Z", message: "CPU usage percentage", status_log_id: 77833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:51], updated_at: ~N[2026-08-21 11:43:51]}} [2026-08-21 11:43:51.850] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:53:16Z", "value" => "1.0.0"} [2026-08-21 11:43:51.883] [DEBUG] QUERY OK db=32.5ms idle=57.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T02:53:16Z", "1.0.0", "parameter_config", 77833, ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:51.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791225, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T02:53:16Z", message: "Current parameters version", status_log_id: 77833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:51], updated_at: ~N[2026-08-21 11:43:51]}} [2026-08-21 11:43:51.883] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:53:16Z", "value" => "1.0.1"} [2026-08-21 11:43:51.917] [DEBUG] QUERY OK db=33.4ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T02:53:16Z", "1.0.1", "emv_config", 77833, ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:51.917] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791226, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T02:53:16Z", message: "Current EMV config version", status_log_id: 77833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:51], updated_at: ~N[2026-08-21 11:43:51]}} [2026-08-21 11:43:51.918] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:53:16Z", "value" => ""} [2026-08-21 11:43:51.983] [DEBUG] QUERY OK db=23.7ms queue=41.3ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T02:53:16Z", "keys_config", 77833, ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:51.983] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791227, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T02:53:16Z", message: "Current keys config version", status_log_id: 77833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:51], updated_at: ~N[2026-08-21 11:43:51]}} [2026-08-21 11:43:51.983] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:53:16Z", "value" => "3.8.7.3"} [2026-08-21 11:43:52.021] [DEBUG] QUERY OK db=37.5ms idle=66.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T02:53:16Z", "3.8.7.3", "application", 77833, ~N[2026-08-21 11:43:51], ~N[2026-08-21 11:43:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:43:52.022] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791228, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T02:53:16Z", message: "Current application version", status_log_id: 77833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:43:51], updated_at: ~N[2026-08-21 11:43:51]}} [2026-08-21 11:43:52.023] [WARN ] Unexpected async result [2026-08-21 11:43:52.023] [WARN ] Unexpected async result [2026-08-21 11:44:18.026] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:44:18.026] [INFO ] Incoming JSON payload: {"oid":"a6cdd42d-6038-4c48-8176-de2ae66e5c47","sn":"98251226730001","uploadTime":"2026-08-21T11:44:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"ram_free_mb","value":"922","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:44:17Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:44:18.027] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a6cdd42d-6038-4c48-8176-de2ae66e5c47", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:44:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:44:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:44:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:44:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:44:17Z", "value" => "922"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:44:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:44:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:44:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:44:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:44:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:44:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:44:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:44:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:44:17Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:44:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:44:17Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:44:17Z", "vendor" => "morefun"} [2026-08-21 11:44:18.028] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:44:18.028] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:44:18.028] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:44:18.029] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1517.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-08-21 11:44:18.029] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=512.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-08-21 11:44:18.029] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:44:18.030] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:44:18.031] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:44:18.082] [DEBUG] QUERY OK source="tms_terminals" db=50.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:44:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:44:18.082] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:44:18.083] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:44:18.104] [DEBUG] QUERY OK source="tms_terminals" db=19.1ms queue=0.9ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:44:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:44:18.144] [DEBUG] QUERY OK db=39.9ms idle=21.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a6cdd42d-6038-4c48-8176-de2ae66e5c47", "2026-08-21T11:44:17Z", ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:44:18.144] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77834, oid: "a6cdd42d-6038-4c48-8176-de2ae66e5c47", upload_time: "2026-08-21T11:44:17Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]} [2026-08-21 11:44:18.144] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:44:17Z", "value" => "morefun"} [2026-08-21 11:44:18.168] [DEBUG] QUERY OK db=23.6ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "morefun", "vendor", 77834, ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:18.169] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791229, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]}} [2026-08-21 11:44:18.169] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:44:17Z", "value" => "kiosk_launcher"} [2026-08-21 11:44:18.271] [DEBUG] QUERY OK db=61.8ms queue=40.7ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "kiosk_launcher", "model", 77834, ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:18.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791230, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]}} [2026-08-21 11:44:18.272] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:44:17Z", "value" => "1.0"} [2026-08-21 11:44:18.392] [DEBUG] QUERY OK db=119.4ms idle=103.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "1.0", "app_version", 77834, ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:18.392] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791231, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]}} [2026-08-21 11:44:18.392] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:44:17Z", "value" => "13"} [2026-08-21 11:44:18.469] [DEBUG] QUERY OK db=76.9ms idle=120.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "13", "android_version", 77834, ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:18.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791232, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]}} [2026-08-21 11:44:18.470] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:44:17Z", "value" => "922"} [2026-08-21 11:44:18.517] [DEBUG] QUERY OK db=43.8ms idle=81.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "922", "ram_free_mb", 77834, ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:18.517] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791233, itemkey: "ram_free_mb", value: "922", timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]}} [2026-08-21 11:44:18.518] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:44:17Z", "value" => "WIFI"} [2026-08-21 11:44:18.550] [DEBUG] QUERY OK db=31.7ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "WIFI", "network_type", 77834, ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:18.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791234, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]}} [2026-08-21 11:44:18.550] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:44:17Z", "value" => "true"} [2026-08-21 11:44:18.593] [DEBUG] QUERY OK db=42.2ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "true", "kiosk_active", 77834, ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:18.593] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791235, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]}} [2026-08-21 11:44:18.593] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:44:17Z", "value" => ""} [2026-08-21 11:44:18.730] [DEBUG] QUERY OK db=136.1ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:44:17Z", "sim_operator", 77834, ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:18.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791236, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]}} [2026-08-21 11:44:18.732] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:44:17Z", "value" => "UNKNOWN"} [2026-08-21 11:44:18.769] [DEBUG] QUERY OK db=36.6ms idle=139.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "UNKNOWN", "sim_number", 77834, ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:18.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791237, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]}} [2026-08-21 11:44:18.770] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:44:17Z", "value" => "UNKNOWN"} [2026-08-21 11:44:18.825] [DEBUG] QUERY OK db=54.9ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "UNKNOWN", "sim_iccid", 77834, ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:18.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791238, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]}} [2026-08-21 11:44:18.825] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:44:17Z", "value" => "UNKNOWN"} [2026-08-21 11:44:18.875] [DEBUG] QUERY OK db=47.9ms queue=0.1ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "UNKNOWN", "sim_imsi", 77834, ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:18.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791239, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]}} [2026-08-21 11:44:18.875] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:44:17Z", "value" => "UNKNOWN"} [2026-08-21 11:44:18.919] [DEBUG] QUERY OK db=43.6ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "UNKNOWN", "sim_iccid2", 77834, ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:18.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791240, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]}} [2026-08-21 11:44:18.920] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:44:17Z", "value" => "UNKNOWN"} [2026-08-21 11:44:18.974] [DEBUG] QUERY OK db=54.2ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "UNKNOWN", "sim_imsi2", 77834, ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:18.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791241, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]}} [2026-08-21 11:44:18.975] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:44:17Z", "value" => "35"} [2026-08-21 11:44:19.032] [DEBUG] QUERY OK db=56.0ms queue=0.4ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "35", "data_usage_mb", 77834, ~N[2026-08-21 11:44:18], ~N[2026-08-21 11:44:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791242, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:18], updated_at: ~N[2026-08-21 11:44:18]}} [2026-08-21 11:44:19.032] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:44:17Z", "value" => "0"} [2026-08-21 11:44:19.076] [DEBUG] QUERY OK db=43.1ms queue=0.1ms idle=58.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "0", "mobile_data_mb", 77834, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791243, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.077] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:44:17Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:44:19.122] [DEBUG] QUERY OK db=43.4ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:17Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77834, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791244, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:44:17Z", message: nil, status_log_id: 77834, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.123] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:44:19.123] [INFO ] Incoming JSON payload: {"oid":"4e8fea2c-eda0-41cd-ae41-d9483882c877","sn":"98251226730002","uploadTime":"2026-08-21T11:43:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"ram_free_mb","value":"1002","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:43:45Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.re (truncated) [2026-08-21 11:44:19.137] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4e8fea2c-eda0-41cd-ae41-d9483882c877", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:43:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:43:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:43:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:43:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:43:45Z", "value" => "1002"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:43:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:43:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:43:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:43:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:43:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:43:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:43:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:43:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:43:45Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:43:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:43:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:43:45Z", "vendor" => "morefun"} [2026-08-21 11:44:19.144] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:44:19.144] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:44:19.144] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:44:19.150] [DEBUG] QUERY OK source="parameter_templates" db=6.0ms idle=68.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-08-21 11:44:19.151] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=29.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:44:19.151] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:44:19.155] [DEBUG] QUERY OK source="tms_terminals" db=3.5ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:44:19.159] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:44:19.185] [DEBUG] QUERY OK source="tms_terminals" db=25.9ms idle=8.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:44:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:44:19.186] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:44:19.189] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=31.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:44:19.226] [DEBUG] QUERY OK source="tms_terminals" db=35.2ms idle=5.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:44:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:44:19.289] [DEBUG] QUERY OK db=60.4ms queue=0.1ms idle=40.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "4e8fea2c-eda0-41cd-ae41-d9483882c877", "2026-08-21T11:43:45Z", ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:44:19.289] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77835, oid: "4e8fea2c-eda0-41cd-ae41-d9483882c877", upload_time: "2026-08-21T11:43:45Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]} [2026-08-21 11:44:19.289] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:43:45Z", "value" => "morefun"} [2026-08-21 11:44:19.347] [DEBUG] QUERY OK db=51.5ms queue=3.2ms idle=66.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "morefun", "vendor", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791245, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.347] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:43:45Z", "value" => "kiosk_launcher"} [2026-08-21 11:44:19.404] [DEBUG] QUERY OK db=56.8ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "kiosk_launcher", "model", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.405] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791246, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.405] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:43:45Z", "value" => "1.0"} [2026-08-21 11:44:19.475] [DEBUG] QUERY OK db=65.7ms idle=61.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "1.0", "app_version", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791247, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.475] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:43:45Z", "value" => "13"} [2026-08-21 11:44:19.512] [DEBUG] QUERY OK db=36.2ms idle=70.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "13", "android_version", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791248, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.512] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:43:45Z", "value" => "1002"} [2026-08-21 11:44:19.546] [DEBUG] QUERY OK db=33.0ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "1002", "ram_free_mb", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791249, itemkey: "ram_free_mb", value: "1002", timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.546] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:43:45Z", "value" => "WIFI"} [2026-08-21 11:44:19.570] [DEBUG] QUERY OK db=22.6ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "WIFI", "network_type", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791250, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.570] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:43:45Z", "value" => "true"} [2026-08-21 11:44:19.619] [DEBUG] QUERY OK db=47.6ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "true", "kiosk_active", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791251, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.620] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:43:45Z", "value" => ""} [2026-08-21 11:44:19.662] [DEBUG] QUERY OK db=41.5ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:43:45Z", "sim_operator", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791252, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.663] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:43:45Z", "value" => "UNKNOWN"} [2026-08-21 11:44:19.698] [DEBUG] QUERY OK db=33.2ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "UNKNOWN", "sim_number", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.698] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791253, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.698] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:43:45Z", "value" => "UNKNOWN"} [2026-08-21 11:44:19.742] [DEBUG] QUERY OK db=43.6ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "UNKNOWN", "sim_iccid", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791254, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.744] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:43:45Z", "value" => "UNKNOWN"} [2026-08-21 11:44:19.790] [DEBUG] QUERY OK db=45.2ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "UNKNOWN", "sim_imsi", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.790] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791255, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.790] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:43:45Z", "value" => "UNKNOWN"} [2026-08-21 11:44:19.832] [DEBUG] QUERY OK db=41.2ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "UNKNOWN", "sim_iccid2", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.832] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791256, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.832] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:43:45Z", "value" => "UNKNOWN"} [2026-08-21 11:44:19.866] [DEBUG] QUERY OK db=33.3ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "UNKNOWN", "sim_imsi2", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791257, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.866] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:43:45Z", "value" => "1"} [2026-08-21 11:44:19.910] [DEBUG] QUERY OK db=42.9ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "1", "data_usage_mb", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791258, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.910] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:43:45Z", "value" => "0"} [2026-08-21 11:44:19.946] [DEBUG] QUERY OK db=35.1ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "0", "mobile_data_mb", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.946] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791259, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:19.946] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:43:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:44:19.996] [DEBUG] QUERY OK db=48.6ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:43:45Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77835, ~N[2026-08-21 11:44:19], ~N[2026-08-21 11:44:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:19.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791260, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:43:45Z", message: nil, status_log_id: 77835, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:19], updated_at: ~N[2026-08-21 11:44:19]}} [2026-08-21 11:44:48.137] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:44:48.137] [INFO ] Incoming JSON payload: {"oid":"64075731-4654-4de4-a72a-4d47b3fb94a2","sn":"98251226730001","uploadTime":"2026-08-21T11:44:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"ram_free_mb","value":"920","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:44:47Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:44:48.139] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "64075731-4654-4de4-a72a-4d47b3fb94a2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:44:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:44:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:44:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:44:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:44:47Z", "value" => "920"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:44:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:44:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:44:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:44:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:44:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:44:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:44:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:44:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:44:47Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:44:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:44:47Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:44:47Z", "vendor" => "morefun"} [2026-08-21 11:44:48.139] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:44:48.140] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:44:48.140] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:44:48.141] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1103.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-08-21 11:44:48.141] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=515.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-08-21 11:44:48.141] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:44:48.142] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:44:48.142] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:44:48.164] [DEBUG] QUERY OK source="tms_terminals" db=21.4ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:44:48], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:44:48.164] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:44:48.165] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=22.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:44:48.271] [DEBUG] QUERY OK source="tms_terminals" db=105.4ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:44:48], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:44:48.311] [DEBUG] QUERY OK db=38.6ms idle=106.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "64075731-4654-4de4-a72a-4d47b3fb94a2", "2026-08-21T11:44:47Z", ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:44:48.312] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77836, oid: "64075731-4654-4de4-a72a-4d47b3fb94a2", upload_time: "2026-08-21T11:44:47Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]} [2026-08-21 11:44:48.312] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:44:47Z", "value" => "morefun"} [2026-08-21 11:44:48.344] [DEBUG] QUERY OK db=30.0ms queue=1.1ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "morefun", "vendor", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.344] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791261, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.344] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:44:47Z", "value" => "kiosk_launcher"} [2026-08-21 11:44:48.380] [DEBUG] QUERY OK db=35.6ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "kiosk_launcher", "model", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791262, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.381] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:44:47Z", "value" => "1.0"} [2026-08-21 11:44:48.431] [DEBUG] QUERY OK db=46.4ms queue=3.7ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "1.0", "app_version", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.431] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791263, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.432] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:44:47Z", "value" => "13"} [2026-08-21 11:44:48.470] [DEBUG] QUERY OK db=37.6ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "13", "android_version", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791264, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.470] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:44:47Z", "value" => "920"} [2026-08-21 11:44:48.510] [DEBUG] QUERY OK db=39.2ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "920", "ram_free_mb", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791265, itemkey: "ram_free_mb", value: "920", timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.511] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:44:47Z", "value" => "WIFI"} [2026-08-21 11:44:48.532] [DEBUG] QUERY OK db=20.9ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "WIFI", "network_type", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791266, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.533] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:44:47Z", "value" => "true"} [2026-08-21 11:44:48.577] [DEBUG] QUERY OK db=44.0ms queue=0.3ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "true", "kiosk_active", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791267, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.578] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:44:47Z", "value" => ""} [2026-08-21 11:44:48.620] [DEBUG] QUERY OK db=42.3ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:44:47Z", "sim_operator", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791268, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.621] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:44:47Z", "value" => "UNKNOWN"} [2026-08-21 11:44:48.648] [DEBUG] QUERY OK db=27.1ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "UNKNOWN", "sim_number", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791269, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.649] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:44:47Z", "value" => "UNKNOWN"} [2026-08-21 11:44:48.690] [DEBUG] QUERY OK db=40.4ms idle=20.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "UNKNOWN", "sim_iccid", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791270, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.690] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:44:47Z", "value" => "UNKNOWN"} [2026-08-21 11:44:48.734] [DEBUG] QUERY OK db=44.0ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "UNKNOWN", "sim_imsi", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.735] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791271, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.735] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:44:47Z", "value" => "UNKNOWN"} [2026-08-21 11:44:48.777] [DEBUG] QUERY OK db=41.3ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "UNKNOWN", "sim_iccid2", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791272, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.777] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:44:47Z", "value" => "UNKNOWN"} [2026-08-21 11:44:48.799] [DEBUG] QUERY OK db=21.0ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "UNKNOWN", "sim_imsi2", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791273, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.799] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:44:47Z", "value" => "35"} [2026-08-21 11:44:48.833] [DEBUG] QUERY OK db=33.0ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "35", "data_usage_mb", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791274, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.833] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:44:47Z", "value" => "0"} [2026-08-21 11:44:48.877] [DEBUG] QUERY OK db=43.9ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "0", "mobile_data_mb", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791275, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.878] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:44:47Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:44:48.928] [DEBUG] QUERY OK db=48.6ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:47Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77836, ~N[2026-08-21 11:44:48], ~N[2026-08-21 11:44:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:48.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791276, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:44:47Z", message: nil, status_log_id: 77836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:48], updated_at: ~N[2026-08-21 11:44:48]}} [2026-08-21 11:44:48.929] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:44:48.929] [INFO ] Incoming JSON payload: {"oid":"1ce2783e-39b7-41cf-a1b5-e944aec0fc54","sn":"98251226730002","uploadTime":"2026-08-21T11:44:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"ram_free_mb","value":"1000","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:44:15Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.re (truncated) [2026-08-21 11:44:48.931] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1ce2783e-39b7-41cf-a1b5-e944aec0fc54", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:44:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:44:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:44:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:44:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:44:15Z", "value" => "1000"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:44:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:44:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:44:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:44:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:44:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:44:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:44:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:44:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:44:15Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:44:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:44:15Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:44:15Z", "vendor" => "morefun"} [2026-08-21 11:44:48.933] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:44:48.933] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:44:48.933] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:44:48.934] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=56.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-08-21 11:44:48.936] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=7.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:44:48.936] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:44:48.938] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=2.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:44:48.938] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:44:48.966] [DEBUG] QUERY OK source="tms_terminals" db=27.1ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:44:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:44:48.966] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:44:48.967] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=28.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:44:49.000] [DEBUG] QUERY OK source="tms_terminals" db=32.6ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:44:48], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:44:49.040] [DEBUG] QUERY OK db=39.6ms queue=0.2ms idle=33.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "1ce2783e-39b7-41cf-a1b5-e944aec0fc54", "2026-08-21T11:44:15Z", ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:44:49.040] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77837, oid: "1ce2783e-39b7-41cf-a1b5-e944aec0fc54", upload_time: "2026-08-21T11:44:15Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]} [2026-08-21 11:44:49.041] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:44:15Z", "value" => "morefun"} [2026-08-21 11:44:49.083] [DEBUG] QUERY OK db=41.5ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "morefun", "vendor", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.083] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791277, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.083] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:44:15Z", "value" => "kiosk_launcher"} [2026-08-21 11:44:49.119] [DEBUG] QUERY OK db=35.4ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "kiosk_launcher", "model", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791278, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.119] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:44:15Z", "value" => "1.0"} [2026-08-21 11:44:49.178] [DEBUG] QUERY OK db=58.2ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "1.0", "app_version", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.178] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791279, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.178] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:44:15Z", "value" => "13"} [2026-08-21 11:44:49.221] [DEBUG] QUERY OK db=41.8ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "13", "android_version", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791280, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.223] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:44:15Z", "value" => "1000"} [2026-08-21 11:44:49.283] [DEBUG] QUERY OK db=59.9ms queue=0.1ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "1000", "ram_free_mb", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.283] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791281, itemkey: "ram_free_mb", value: "1000", timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.284] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:44:15Z", "value" => "WIFI"} [2026-08-21 11:44:49.310] [DEBUG] QUERY OK db=26.3ms idle=63.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "WIFI", "network_type", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791282, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.317] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:44:15Z", "value" => "true"} [2026-08-21 11:44:49.379] [DEBUG] QUERY OK db=57.4ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "true", "kiosk_active", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791283, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.380] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:44:15Z", "value" => ""} [2026-08-21 11:44:49.415] [DEBUG] QUERY OK db=34.9ms idle=70.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:44:15Z", "sim_operator", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791284, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.416] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:44:15Z", "value" => "UNKNOWN"} [2026-08-21 11:44:49.452] [DEBUG] QUERY OK db=35.6ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "UNKNOWN", "sim_number", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791285, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.452] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:44:15Z", "value" => "UNKNOWN"} [2026-08-21 11:44:49.486] [DEBUG] QUERY OK db=33.6ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "UNKNOWN", "sim_iccid", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791286, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.487] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:44:15Z", "value" => "UNKNOWN"} [2026-08-21 11:44:49.537] [DEBUG] QUERY OK db=50.3ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "UNKNOWN", "sim_imsi", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791287, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.538] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:44:15Z", "value" => "UNKNOWN"} [2026-08-21 11:44:49.611] [DEBUG] QUERY OK db=72.3ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "UNKNOWN", "sim_iccid2", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791288, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.611] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:44:15Z", "value" => "UNKNOWN"} [2026-08-21 11:44:49.636] [DEBUG] QUERY OK db=24.7ms idle=74.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "UNKNOWN", "sim_imsi2", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791289, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.636] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:44:15Z", "value" => "1"} [2026-08-21 11:44:49.761] [DEBUG] QUERY OK db=124.4ms idle=2.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "1", "data_usage_mb", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.762] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791290, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.763] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:44:15Z", "value" => "0"} [2026-08-21 11:44:49.820] [DEBUG] QUERY OK db=56.8ms idle=126.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "0", "mobile_data_mb", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.820] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791291, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:44:49.821] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:44:15Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:44:49.854] [DEBUG] QUERY OK db=32.3ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:15Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77837, ~N[2026-08-21 11:44:49], ~N[2026-08-21 11:44:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:44:49.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791292, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:44:15Z", message: nil, status_log_id: 77837, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:44:49], updated_at: ~N[2026-08-21 11:44:49]}} [2026-08-21 11:45:18.506] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:45:18.506] [INFO ] Incoming JSON payload: {"oid":"d156d7e5-cfe4-4de7-98de-65a082bd8387","sn":"98251226730001","uploadTime":"2026-08-21T11:45:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"ram_free_mb","value":"919","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:45:17Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:45:18.507] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d156d7e5-cfe4-4de7-98de-65a082bd8387", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:45:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:45:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:45:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:45:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:45:17Z", "value" => "919"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:45:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:45:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:45:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:45:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:45:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:45:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:45:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:45:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:45:17Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:45:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:45:17Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:45:17Z", "vendor" => "morefun"} [2026-08-21 11:45:18.507] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:45:18.507] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:45:18.507] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:45:18.508] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=759.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-08-21 11:45:18.509] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=470.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-08-21 11:45:18.509] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:45:18.510] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:45:18.510] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:45:18.556] [DEBUG] QUERY OK source="tms_terminals" db=45.5ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:45:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:45:18.556] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:45:18.557] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=46.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:45:18.581] [DEBUG] QUERY OK source="tms_terminals" db=23.5ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:45:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:45:18.618] [DEBUG] QUERY OK db=35.0ms idle=24.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "d156d7e5-cfe4-4de7-98de-65a082bd8387", "2026-08-21T11:45:17Z", ~N[2026-08-21 11:45:18], ~N[2026-08-21 11:45:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:45:18.618] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77838, oid: "d156d7e5-cfe4-4de7-98de-65a082bd8387", upload_time: "2026-08-21T11:45:17Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:18], updated_at: ~N[2026-08-21 11:45:18]} [2026-08-21 11:45:18.618] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:45:17Z", "value" => "morefun"} [2026-08-21 11:45:18.670] [DEBUG] QUERY OK db=51.8ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "morefun", "vendor", 77838, ~N[2026-08-21 11:45:18], ~N[2026-08-21 11:45:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:18.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791293, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:18], updated_at: ~N[2026-08-21 11:45:18]}} [2026-08-21 11:45:18.671] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:45:17Z", "value" => "kiosk_launcher"} [2026-08-21 11:45:18.699] [DEBUG] QUERY OK db=27.4ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "kiosk_launcher", "model", 77838, ~N[2026-08-21 11:45:18], ~N[2026-08-21 11:45:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:18.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791294, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:18], updated_at: ~N[2026-08-21 11:45:18]}} [2026-08-21 11:45:18.699] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:45:17Z", "value" => "1.0"} [2026-08-21 11:45:18.724] [DEBUG] QUERY OK db=24.5ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "1.0", "app_version", 77838, ~N[2026-08-21 11:45:18], ~N[2026-08-21 11:45:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:18.724] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791295, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:18], updated_at: ~N[2026-08-21 11:45:18]}} [2026-08-21 11:45:18.725] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:45:17Z", "value" => "13"} [2026-08-21 11:45:18.769] [DEBUG] QUERY OK db=41.9ms queue=1.0ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "13", "android_version", 77838, ~N[2026-08-21 11:45:18], ~N[2026-08-21 11:45:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:18.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791296, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:18], updated_at: ~N[2026-08-21 11:45:18]}} [2026-08-21 11:45:18.769] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:45:17Z", "value" => "919"} [2026-08-21 11:45:18.814] [DEBUG] QUERY OK db=44.7ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "919", "ram_free_mb", 77838, ~N[2026-08-21 11:45:18], ~N[2026-08-21 11:45:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:18.815] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791297, itemkey: "ram_free_mb", value: "919", timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:18], updated_at: ~N[2026-08-21 11:45:18]}} [2026-08-21 11:45:18.815] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:45:17Z", "value" => "WIFI"} [2026-08-21 11:45:18.873] [DEBUG] QUERY OK db=58.1ms queue=0.2ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "WIFI", "network_type", 77838, ~N[2026-08-21 11:45:18], ~N[2026-08-21 11:45:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:18.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791298, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:18], updated_at: ~N[2026-08-21 11:45:18]}} [2026-08-21 11:45:18.874] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:45:17Z", "value" => "true"} [2026-08-21 11:45:18.905] [DEBUG] QUERY OK db=31.1ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "true", "kiosk_active", 77838, ~N[2026-08-21 11:45:18], ~N[2026-08-21 11:45:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:18.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791299, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:18], updated_at: ~N[2026-08-21 11:45:18]}} [2026-08-21 11:45:18.906] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:45:17Z", "value" => ""} [2026-08-21 11:45:18.934] [DEBUG] QUERY OK db=28.0ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:45:17Z", "sim_operator", 77838, ~N[2026-08-21 11:45:18], ~N[2026-08-21 11:45:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:18.935] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791300, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:18], updated_at: ~N[2026-08-21 11:45:18]}} [2026-08-21 11:45:18.935] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:45:17Z", "value" => "UNKNOWN"} [2026-08-21 11:45:18.977] [DEBUG] QUERY OK db=41.2ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "UNKNOWN", "sim_number", 77838, ~N[2026-08-21 11:45:18], ~N[2026-08-21 11:45:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:18.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791301, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:18], updated_at: ~N[2026-08-21 11:45:18]}} [2026-08-21 11:45:18.977] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:45:17Z", "value" => "UNKNOWN"} [2026-08-21 11:45:19.015] [DEBUG] QUERY OK db=37.5ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "UNKNOWN", "sim_iccid", 77838, ~N[2026-08-21 11:45:18], ~N[2026-08-21 11:45:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791302, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:18], updated_at: ~N[2026-08-21 11:45:18]}} [2026-08-21 11:45:19.016] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:45:17Z", "value" => "UNKNOWN"} [2026-08-21 11:45:19.048] [DEBUG] QUERY OK db=31.9ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "UNKNOWN", "sim_imsi", 77838, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.049] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791303, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.049] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:45:17Z", "value" => "UNKNOWN"} [2026-08-21 11:45:19.099] [DEBUG] QUERY OK db=49.3ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "UNKNOWN", "sim_iccid2", 77838, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791304, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.099] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:45:17Z", "value" => "UNKNOWN"} [2026-08-21 11:45:19.131] [DEBUG] QUERY OK db=31.9ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "UNKNOWN", "sim_imsi2", 77838, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.131] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791305, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.132] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:45:17Z", "value" => "35"} [2026-08-21 11:45:19.164] [DEBUG] QUERY OK db=32.1ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "35", "data_usage_mb", 77838, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791306, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.164] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:45:17Z", "value" => "0"} [2026-08-21 11:45:19.203] [DEBUG] QUERY OK db=37.9ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "0", "mobile_data_mb", 77838, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791307, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.204] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:45:17Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:45:19.264] [DEBUG] QUERY OK db=58.0ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:17Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77838, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791308, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:45:17Z", message: nil, status_log_id: 77838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.265] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:45:19.265] [INFO ] Incoming JSON payload: {"oid":"78f20f1b-d8b8-4f25-a7e9-fe894edadefe","sn":"98251226730002","uploadTime":"2026-08-21T11:44:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"ram_free_mb","value":"993","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:44:45Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:45:19.266] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "78f20f1b-d8b8-4f25-a7e9-fe894edadefe", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:44:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:44:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:44:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:44:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:44:45Z", "value" => "993"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:44:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:44:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:44:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:44:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:44:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:44:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:44:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:44:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:44:45Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:44:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:44:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:44:45Z", "vendor" => "morefun"} [2026-08-21 11:45:19.266] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:45:19.266] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:45:19.267] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:45:19.268] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=64.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 11:45:19.268] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=5.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-08-21 11:45:19.269] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:45:19.270] [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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:45:19.270] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:45:19.384] [DEBUG] QUERY OK source="tms_terminals" db=112.4ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:45:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:45:19.384] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:45:19.385] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=114.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:45:19.429] [DEBUG] QUERY OK source="tms_terminals" db=43.7ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:45:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:45:19.484] [DEBUG] QUERY OK db=54.5ms queue=0.1ms idle=44.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "78f20f1b-d8b8-4f25-a7e9-fe894edadefe", "2026-08-21T11:44:45Z", ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:45:19.484] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77839, oid: "78f20f1b-d8b8-4f25-a7e9-fe894edadefe", upload_time: "2026-08-21T11:44:45Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]} [2026-08-21 11:45:19.485] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:44:45Z", "value" => "morefun"} [2026-08-21 11:45:19.528] [DEBUG] QUERY OK db=41.8ms idle=56.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "morefun", "vendor", 77839, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.528] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791309, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.528] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:44:45Z", "value" => "kiosk_launcher"} [2026-08-21 11:45:19.570] [DEBUG] QUERY OK db=41.4ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "kiosk_launcher", "model", 77839, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791310, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.571] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:44:45Z", "value" => "1.0"} [2026-08-21 11:45:19.605] [DEBUG] QUERY OK db=33.7ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "1.0", "app_version", 77839, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791311, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.606] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:44:45Z", "value" => "13"} [2026-08-21 11:45:19.633] [DEBUG] QUERY OK db=25.4ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "13", "android_version", 77839, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.634] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791312, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.635] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:44:45Z", "value" => "993"} [2026-08-21 11:45:19.682] [DEBUG] QUERY OK db=47.2ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "993", "ram_free_mb", 77839, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.683] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791313, itemkey: "ram_free_mb", value: "993", timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.683] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:44:45Z", "value" => "WIFI"} [2026-08-21 11:45:19.727] [DEBUG] QUERY OK db=44.3ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "WIFI", "network_type", 77839, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.728] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791314, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.728] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:44:45Z", "value" => "true"} [2026-08-21 11:45:19.769] [DEBUG] QUERY OK db=40.6ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "true", "kiosk_active", 77839, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791315, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.769] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:44:45Z", "value" => ""} [2026-08-21 11:45:19.794] [DEBUG] QUERY OK db=24.3ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:44:45Z", "sim_operator", 77839, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791316, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.795] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:44:45Z", "value" => "UNKNOWN"} [2026-08-21 11:45:19.841] [DEBUG] QUERY OK db=45.7ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "UNKNOWN", "sim_number", 77839, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791317, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.841] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:44:45Z", "value" => "UNKNOWN"} [2026-08-21 11:45:19.893] [DEBUG] QUERY OK db=50.3ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "UNKNOWN", "sim_iccid", 77839, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791318, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.893] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:44:45Z", "value" => "UNKNOWN"} [2026-08-21 11:45:19.918] [DEBUG] QUERY OK db=23.7ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "UNKNOWN", "sim_imsi", 77839, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791319, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.918] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:44:45Z", "value" => "UNKNOWN"} [2026-08-21 11:45:19.952] [DEBUG] QUERY OK db=33.9ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "UNKNOWN", "sim_iccid2", 77839, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791320, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.953] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:44:45Z", "value" => "UNKNOWN"} [2026-08-21 11:45:19.984] [DEBUG] QUERY OK db=31.2ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "UNKNOWN", "sim_imsi2", 77839, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:19.985] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791321, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:19.985] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:44:45Z", "value" => "1"} [2026-08-21 11:45:20.025] [DEBUG] QUERY OK db=39.6ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "1", "data_usage_mb", 77839, ~N[2026-08-21 11:45:19], ~N[2026-08-21 11:45:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:20.025] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791322, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:19], updated_at: ~N[2026-08-21 11:45:19]}} [2026-08-21 11:45:20.026] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:44:45Z", "value" => "0"} [2026-08-21 11:45:20.070] [DEBUG] QUERY OK db=43.8ms queue=0.1ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "0", "mobile_data_mb", 77839, ~N[2026-08-21 11:45:20], ~N[2026-08-21 11:45:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:20.070] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791323, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:20], updated_at: ~N[2026-08-21 11:45:20]}} [2026-08-21 11:45:20.071] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:44:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:45:20.102] [DEBUG] QUERY OK db=29.4ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:44:45Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77839, ~N[2026-08-21 11:45:20], ~N[2026-08-21 11:45:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:20.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791324, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:44:45Z", message: nil, status_log_id: 77839, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:20], updated_at: ~N[2026-08-21 11:45:20]}} [2026-08-21 11:45:48.616] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:45:48.616] [INFO ] Incoming JSON payload: {"oid":"dfb73814-bfde-4c6b-92f5-3b5fcbe5a12e","sn":"98251226730001","uploadTime":"2026-08-21T11:45:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:45:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:45:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:45:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:45:48Z"},{"itemkey":"ram_free_mb","value":"913","timestamp":"2026-08-21T11:45:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:45:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:45:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:45:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:45:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:45:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:45:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:45:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:45:48Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:45:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:45: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:45:48.618] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "dfb73814-bfde-4c6b-92f5-3b5fcbe5a12e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:45:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:45:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:45:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:45:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:45:48Z", "value" => "913"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:45:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:45:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:45:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:45:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:45:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:45:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:45:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:45:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:45:48Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:45:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:45: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:45:48Z", "vendor" => "morefun"} [2026-08-21 11:45:48.618] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:45:48.618] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:45:48.619] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:45:48.620] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=1581.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-08-21 11:45:48.622] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.1ms idle=777.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-08-21 11:45:48.622] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:45:48.623] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:45:48.623] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:45:48.664] [DEBUG] QUERY OK source="tms_terminals" db=40.9ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:45:48], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:45:48.664] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:45:48.665] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:45:48.698] [DEBUG] QUERY OK source="tms_terminals" db=32.3ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:45:48], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:45:48.741] [DEBUG] QUERY OK db=42.3ms idle=33.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "dfb73814-bfde-4c6b-92f5-3b5fcbe5a12e", "2026-08-21T11:45:48Z", ~N[2026-08-21 11:45:48], ~N[2026-08-21 11:45:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:45:48.741] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77840, oid: "dfb73814-bfde-4c6b-92f5-3b5fcbe5a12e", upload_time: "2026-08-21T11:45:48Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:48], updated_at: ~N[2026-08-21 11:45:48]} [2026-08-21 11:45:48.741] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:45:48Z", "value" => "morefun"} [2026-08-21 11:45:48.794] [DEBUG] QUERY OK db=53.1ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:48Z", "morefun", "vendor", 77840, ~N[2026-08-21 11:45:48], ~N[2026-08-21 11:45:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:48.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791325, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:48], updated_at: ~N[2026-08-21 11:45:48]}} [2026-08-21 11:45:48.795] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:45:48Z", "value" => "kiosk_launcher"} [2026-08-21 11:45:48.830] [DEBUG] QUERY OK db=34.4ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:48Z", "kiosk_launcher", "model", 77840, ~N[2026-08-21 11:45:48], ~N[2026-08-21 11:45:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:48.830] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791326, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:48], updated_at: ~N[2026-08-21 11:45:48]}} [2026-08-21 11:45:48.830] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:45:48Z", "value" => "1.0"} [2026-08-21 11:45:48.880] [DEBUG] QUERY OK db=49.5ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:48Z", "1.0", "app_version", 77840, ~N[2026-08-21 11:45:48], ~N[2026-08-21 11:45:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:48.880] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791327, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:48], updated_at: ~N[2026-08-21 11:45:48]}} [2026-08-21 11:45:48.880] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:45:48Z", "value" => "13"} [2026-08-21 11:45:48.913] [DEBUG] QUERY OK db=32.1ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:48Z", "13", "android_version", 77840, ~N[2026-08-21 11:45:48], ~N[2026-08-21 11:45:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:48.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791328, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:48], updated_at: ~N[2026-08-21 11:45:48]}} [2026-08-21 11:45:48.914] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:45:48Z", "value" => "913"} [2026-08-21 11:45:48.955] [DEBUG] QUERY OK db=39.7ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:48Z", "913", "ram_free_mb", 77840, ~N[2026-08-21 11:45:48], ~N[2026-08-21 11:45:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:48.955] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791329, itemkey: "ram_free_mb", value: "913", timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:48], updated_at: ~N[2026-08-21 11:45:48]}} [2026-08-21 11:45:48.955] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:45:48Z", "value" => "WIFI"} [2026-08-21 11:45:49.012] [DEBUG] QUERY OK db=56.2ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:48Z", "WIFI", "network_type", 77840, ~N[2026-08-21 11:45:48], ~N[2026-08-21 11:45:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791330, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:48], updated_at: ~N[2026-08-21 11:45:48]}} [2026-08-21 11:45:49.013] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:45:48Z", "value" => "true"} [2026-08-21 11:45:49.054] [DEBUG] QUERY OK db=39.7ms idle=59.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:48Z", "true", "kiosk_active", 77840, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.054] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791331, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.054] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:45:48Z", "value" => ""} [2026-08-21 11:45:49.095] [DEBUG] QUERY OK db=39.6ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:45:48Z", "sim_operator", 77840, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.095] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791332, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.095] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:45:48Z", "value" => "UNKNOWN"} [2026-08-21 11:45:49.137] [DEBUG] QUERY OK db=42.0ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:48Z", "UNKNOWN", "sim_number", 77840, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791333, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.138] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:45:48Z", "value" => "UNKNOWN"} [2026-08-21 11:45:49.171] [DEBUG] QUERY OK db=31.5ms queue=1.1ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:48Z", "UNKNOWN", "sim_iccid", 77840, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.172] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791334, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.172] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:45:48Z", "value" => "UNKNOWN"} [2026-08-21 11:45:49.196] [DEBUG] QUERY OK db=24.0ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:48Z", "UNKNOWN", "sim_imsi", 77840, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791335, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.197] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:45:48Z", "value" => "UNKNOWN"} [2026-08-21 11:45:49.257] [DEBUG] QUERY OK db=57.9ms queue=0.1ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:48Z", "UNKNOWN", "sim_iccid2", 77840, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791336, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.257] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:45:48Z", "value" => "UNKNOWN"} [2026-08-21 11:45:49.304] [DEBUG] QUERY OK db=46.4ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:48Z", "UNKNOWN", "sim_imsi2", 77840, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791337, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.305] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:45:48Z", "value" => "35"} [2026-08-21 11:45:49.374] [DEBUG] QUERY OK db=68.9ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:48Z", "35", "data_usage_mb", 77840, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791338, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.375] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:45:48Z", "value" => "0"} [2026-08-21 11:45:49.411] [DEBUG] QUERY OK db=35.8ms idle=70.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:48Z", "0", "mobile_data_mb", 77840, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791339, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.412] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:45: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:45:49.462] [DEBUG] QUERY OK db=49.4ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77840, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791340, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:45:48Z", message: nil, status_log_id: 77840, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.464] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:45:49.464] [INFO ] Incoming JSON payload: {"oid":"1d27e194-fc9d-4173-82f3-6b7570e1295f","sn":"98251226730002","uploadTime":"2026-08-21T11:45:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"ram_free_mb","value":"989","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:45:15Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:45:49.465] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1d27e194-fc9d-4173-82f3-6b7570e1295f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:45:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:45:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:45:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:45:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:45:15Z", "value" => "989"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:45:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:45:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:45:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:45:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:45:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:45:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:45:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:45:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:45:15Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:45:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:45:15Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:45:15Z", "vendor" => "morefun"} [2026-08-21 11:45:49.465] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:45:49.465] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:45:49.466] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:45:49.466] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=54.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-08-21 11:45:49.467] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=5.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:45:49.467] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:45:49.468] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:45:49.469] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:45:49.500] [DEBUG] QUERY OK source="tms_terminals" db=30.8ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:45:49], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:45:49.500] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:45:49.501] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=31.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:45:49.539] [DEBUG] QUERY OK source="tms_terminals" db=38.2ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:45:49], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:45:49.574] [DEBUG] QUERY OK db=34.5ms queue=0.1ms idle=39.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "1d27e194-fc9d-4173-82f3-6b7570e1295f", "2026-08-21T11:45:15Z", ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:45:49.575] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77841, oid: "1d27e194-fc9d-4173-82f3-6b7570e1295f", upload_time: "2026-08-21T11:45:15Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]} [2026-08-21 11:45:49.575] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:45:15Z", "value" => "morefun"} [2026-08-21 11:45:49.600] [DEBUG] QUERY OK db=23.6ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "morefun", "vendor", 77841, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791341, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.600] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:45:15Z", "value" => "kiosk_launcher"} [2026-08-21 11:45:49.646] [DEBUG] QUERY OK db=45.1ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "kiosk_launcher", "model", 77841, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791342, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.646] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:45:15Z", "value" => "1.0"} [2026-08-21 11:45:49.693] [DEBUG] QUERY OK db=45.7ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "1.0", "app_version", 77841, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791343, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.693] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:45:15Z", "value" => "13"} [2026-08-21 11:45:49.733] [DEBUG] QUERY OK db=39.3ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "13", "android_version", 77841, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791344, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.734] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:45:15Z", "value" => "989"} [2026-08-21 11:45:49.779] [DEBUG] QUERY OK db=43.6ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "989", "ram_free_mb", 77841, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.779] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791345, itemkey: "ram_free_mb", value: "989", timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.779] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:45:15Z", "value" => "WIFI"} [2026-08-21 11:45:49.821] [DEBUG] QUERY OK db=41.6ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "WIFI", "network_type", 77841, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.822] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791346, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.822] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:45:15Z", "value" => "true"} [2026-08-21 11:45:49.855] [DEBUG] QUERY OK db=32.8ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "true", "kiosk_active", 77841, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791347, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.856] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:45:15Z", "value" => ""} [2026-08-21 11:45:49.903] [DEBUG] QUERY OK db=46.7ms idle=8.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:45:15Z", "sim_operator", 77841, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791348, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.903] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:45:15Z", "value" => "UNKNOWN"} [2026-08-21 11:45:49.941] [DEBUG] QUERY OK db=37.2ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "UNKNOWN", "sim_number", 77841, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.941] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791349, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.941] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:45:15Z", "value" => "UNKNOWN"} [2026-08-21 11:45:49.984] [DEBUG] QUERY OK db=42.0ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "UNKNOWN", "sim_iccid", 77841, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:49.985] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791350, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:49.985] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:45:15Z", "value" => "UNKNOWN"} [2026-08-21 11:45:50.044] [DEBUG] QUERY OK db=58.3ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "UNKNOWN", "sim_imsi", 77841, ~N[2026-08-21 11:45:49], ~N[2026-08-21 11:45:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:50.044] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791351, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:49], updated_at: ~N[2026-08-21 11:45:49]}} [2026-08-21 11:45:50.045] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:45:15Z", "value" => "UNKNOWN"} [2026-08-21 11:45:50.068] [DEBUG] QUERY OK db=23.4ms idle=60.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "UNKNOWN", "sim_iccid2", 77841, ~N[2026-08-21 11:45:50], ~N[2026-08-21 11:45:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:50.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791352, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:50], updated_at: ~N[2026-08-21 11:45:50]}} [2026-08-21 11:45:50.069] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:45:15Z", "value" => "UNKNOWN"} [2026-08-21 11:45:50.106] [DEBUG] QUERY OK db=36.9ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "UNKNOWN", "sim_imsi2", 77841, ~N[2026-08-21 11:45:50], ~N[2026-08-21 11:45:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:50.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791353, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:50], updated_at: ~N[2026-08-21 11:45:50]}} [2026-08-21 11:45:50.107] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:45:15Z", "value" => "1"} [2026-08-21 11:45:50.140] [DEBUG] QUERY OK db=33.3ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "1", "data_usage_mb", 77841, ~N[2026-08-21 11:45:50], ~N[2026-08-21 11:45:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:50.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791354, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:50], updated_at: ~N[2026-08-21 11:45:50]}} [2026-08-21 11:45:50.141] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:45:15Z", "value" => "0"} [2026-08-21 11:45:50.191] [DEBUG] QUERY OK db=49.5ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "0", "mobile_data_mb", 77841, ~N[2026-08-21 11:45:50], ~N[2026-08-21 11:45:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:50.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791355, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:50], updated_at: ~N[2026-08-21 11:45:50]}} [2026-08-21 11:45:50.191] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:45:15Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:45:50.238] [DEBUG] QUERY OK db=45.3ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:15Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77841, ~N[2026-08-21 11:45:50], ~N[2026-08-21 11:45:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:45:50.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791356, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:45:15Z", message: nil, status_log_id: 77841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:45:50], updated_at: ~N[2026-08-21 11:45:50]}} [2026-08-21 11:46:18.754] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:46:18.754] [INFO ] Incoming JSON payload: {"oid":"ca085a71-dd28-414d-bee1-0ca5bd3d27f8","sn":"98251226730001","uploadTime":"2026-08-21T11:46:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:46:18Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:46:18.755] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ca085a71-dd28-414d-bee1-0ca5bd3d27f8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:46:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:46:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:46:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:46:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:46:18Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:46:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:46:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:46:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:46:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:46:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:46:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:46:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:46:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:46:18Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:46:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:46:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:46:18Z", "vendor" => "morefun"} [2026-08-21 11:46:18.755] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:46:18.755] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:46:18.756] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:46:18.757] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1717.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-08-21 11:46:18.758] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=818.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-08-21 11:46:18.758] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:46:18.759] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:46:18.759] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:46:18.822] [DEBUG] QUERY OK source="tms_terminals" db=61.4ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:46:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:46:18.822] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:46:18.823] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=63.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:46:18.873] [DEBUG] QUERY OK source="tms_terminals" db=49.3ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:46:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:46:18.932] [DEBUG] QUERY OK db=58.7ms idle=49.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ca085a71-dd28-414d-bee1-0ca5bd3d27f8", "2026-08-21T11:46:18Z", ~N[2026-08-21 11:46:18], ~N[2026-08-21 11:46:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:46:18.933] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77842, oid: "ca085a71-dd28-414d-bee1-0ca5bd3d27f8", upload_time: "2026-08-21T11:46:18Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:18], updated_at: ~N[2026-08-21 11:46:18]} [2026-08-21 11:46:18.933] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:46:18Z", "value" => "morefun"} [2026-08-21 11:46:18.966] [DEBUG] QUERY OK db=33.5ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "morefun", "vendor", 77842, ~N[2026-08-21 11:46:18], ~N[2026-08-21 11:46:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:18.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791357, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:18], updated_at: ~N[2026-08-21 11:46:18]}} [2026-08-21 11:46:18.967] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:46:18Z", "value" => "kiosk_launcher"} [2026-08-21 11:46:19.021] [DEBUG] QUERY OK db=53.6ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "kiosk_launcher", "model", 77842, ~N[2026-08-21 11:46:18], ~N[2026-08-21 11:46:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791358, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:18], updated_at: ~N[2026-08-21 11:46:18]}} [2026-08-21 11:46:19.021] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:46:18Z", "value" => "1.0"} [2026-08-21 11:46:19.059] [DEBUG] QUERY OK db=36.4ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "1.0", "app_version", 77842, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.059] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791359, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.060] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:46:18Z", "value" => "13"} [2026-08-21 11:46:19.113] [DEBUG] QUERY OK db=49.9ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "13", "android_version", 77842, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.113] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791360, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.113] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:46:18Z", "value" => "921"} [2026-08-21 11:46:19.135] [DEBUG] QUERY OK db=21.5ms idle=55.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "921", "ram_free_mb", 77842, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.136] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791361, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.136] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:46:18Z", "value" => "WIFI"} [2026-08-21 11:46:19.175] [DEBUG] QUERY OK db=37.9ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "WIFI", "network_type", 77842, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791362, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.175] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:46:18Z", "value" => "true"} [2026-08-21 11:46:19.211] [DEBUG] QUERY OK db=35.7ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "true", "kiosk_active", 77842, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.212] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791363, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.212] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:46:18Z", "value" => ""} [2026-08-21 11:46:19.236] [DEBUG] QUERY OK db=23.3ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:46:18Z", "sim_operator", 77842, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791364, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.237] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:46:18Z", "value" => "UNKNOWN"} [2026-08-21 11:46:19.279] [DEBUG] QUERY OK db=41.6ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "UNKNOWN", "sim_number", 77842, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791365, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.279] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:46:18Z", "value" => "UNKNOWN"} [2026-08-21 11:46:19.312] [DEBUG] QUERY OK db=32.7ms queue=0.4ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "UNKNOWN", "sim_iccid", 77842, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791366, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.313] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:46:18Z", "value" => "UNKNOWN"} [2026-08-21 11:46:19.345] [DEBUG] QUERY OK db=31.5ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "UNKNOWN", "sim_imsi", 77842, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791367, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.345] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:46:18Z", "value" => "UNKNOWN"} [2026-08-21 11:46:19.396] [DEBUG] QUERY OK db=50.4ms queue=0.3ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "UNKNOWN", "sim_iccid2", 77842, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.397] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791368, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.397] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:46:18Z", "value" => "UNKNOWN"} [2026-08-21 11:46:19.438] [DEBUG] QUERY OK db=40.8ms queue=0.1ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "UNKNOWN", "sim_imsi2", 77842, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791369, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.438] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:46:18Z", "value" => "35"} [2026-08-21 11:46:19.475] [DEBUG] QUERY OK db=35.4ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "35", "data_usage_mb", 77842, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791370, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.476] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:46:18Z", "value" => "0"} [2026-08-21 11:46:19.530] [DEBUG] QUERY OK db=54.1ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "0", "mobile_data_mb", 77842, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791371, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.532] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:46:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:46:19.580] [DEBUG] QUERY OK db=47.4ms idle=58.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:18Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77842, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791372, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:46:18Z", message: nil, status_log_id: 77842, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.581] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:46:19.581] [INFO ] Incoming JSON payload: {"oid":"18295244-8009-49c1-bc6d-09555ceb12df","sn":"98251226730002","uploadTime":"2026-08-21T11:45:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"ram_free_mb","value":"1001","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:45:45Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.re (truncated) [2026-08-21 11:46:19.582] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "18295244-8009-49c1-bc6d-09555ceb12df", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:45:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:45:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:45:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:45:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:45:45Z", "value" => "1001"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:45:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:45:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:45:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:45:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:45:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:45:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:45:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:45:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:45:45Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:45:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:45:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:45:45Z", "vendor" => "morefun"} [2026-08-21 11:46:19.582] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:46:19.582] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:46:19.583] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:46:19.583] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=52.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-08-21 11:46:19.584] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=3.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:46:19.584] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:46:19.585] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=0.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:46:19.586] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:46:19.655] [DEBUG] QUERY OK source="tms_terminals" db=66.4ms queue=2.2ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:46:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:46:19.655] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:46:19.656] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=69.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:46:19.787] [DEBUG] QUERY OK source="tms_terminals" db=129.9ms queue=0.1ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:46:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:46:19.844] [DEBUG] QUERY OK db=57.0ms idle=130.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "18295244-8009-49c1-bc6d-09555ceb12df", "2026-08-21T11:45:45Z", ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:46:19.844] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77843, oid: "18295244-8009-49c1-bc6d-09555ceb12df", upload_time: "2026-08-21T11:45:45Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]} [2026-08-21 11:46:19.845] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:45:45Z", "value" => "morefun"} [2026-08-21 11:46:19.910] [DEBUG] QUERY OK db=65.3ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "morefun", "vendor", 77843, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:19.911] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791373, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:19.911] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:45:45Z", "value" => "kiosk_launcher"} [2026-08-21 11:46:20.055] [DEBUG] QUERY OK db=143.6ms idle=67.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "kiosk_launcher", "model", 77843, ~N[2026-08-21 11:46:19], ~N[2026-08-21 11:46:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791374, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:19], updated_at: ~N[2026-08-21 11:46:19]}} [2026-08-21 11:46:20.056] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:45:45Z", "value" => "1.0"} [2026-08-21 11:46:20.126] [DEBUG] QUERY OK db=70.2ms idle=110.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "1.0", "app_version", 77843, ~N[2026-08-21 11:46:20], ~N[2026-08-21 11:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791375, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:20], updated_at: ~N[2026-08-21 11:46:20]}} [2026-08-21 11:46:20.127] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:45:45Z", "value" => "13"} [2026-08-21 11:46:20.157] [DEBUG] QUERY OK db=29.0ms queue=0.6ms idle=71.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "13", "android_version", 77843, ~N[2026-08-21 11:46:20], ~N[2026-08-21 11:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791376, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:20], updated_at: ~N[2026-08-21 11:46:20]}} [2026-08-21 11:46:20.157] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:45:45Z", "value" => "1001"} [2026-08-21 11:46:20.192] [DEBUG] QUERY OK db=33.8ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "1001", "ram_free_mb", 77843, ~N[2026-08-21 11:46:20], ~N[2026-08-21 11:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791377, itemkey: "ram_free_mb", value: "1001", timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:20], updated_at: ~N[2026-08-21 11:46:20]}} [2026-08-21 11:46:20.192] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:45:45Z", "value" => "WIFI"} [2026-08-21 11:46:20.234] [DEBUG] QUERY OK db=40.4ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "WIFI", "network_type", 77843, ~N[2026-08-21 11:46:20], ~N[2026-08-21 11:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.235] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791378, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:20], updated_at: ~N[2026-08-21 11:46:20]}} [2026-08-21 11:46:20.235] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:45:45Z", "value" => "true"} [2026-08-21 11:46:20.287] [DEBUG] QUERY OK db=51.3ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "true", "kiosk_active", 77843, ~N[2026-08-21 11:46:20], ~N[2026-08-21 11:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791379, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:20], updated_at: ~N[2026-08-21 11:46:20]}} [2026-08-21 11:46:20.288] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:45:45Z", "value" => ""} [2026-08-21 11:46:20.342] [DEBUG] QUERY OK db=53.5ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:45:45Z", "sim_operator", 77843, ~N[2026-08-21 11:46:20], ~N[2026-08-21 11:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.343] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791380, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:20], updated_at: ~N[2026-08-21 11:46:20]}} [2026-08-21 11:46:20.343] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:45:45Z", "value" => "UNKNOWN"} [2026-08-21 11:46:20.366] [DEBUG] QUERY OK db=22.7ms idle=56.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "UNKNOWN", "sim_number", 77843, ~N[2026-08-21 11:46:20], ~N[2026-08-21 11:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791381, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:20], updated_at: ~N[2026-08-21 11:46:20]}} [2026-08-21 11:46:20.367] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:45:45Z", "value" => "UNKNOWN"} [2026-08-21 11:46:20.400] [DEBUG] QUERY OK db=33.1ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "UNKNOWN", "sim_iccid", 77843, ~N[2026-08-21 11:46:20], ~N[2026-08-21 11:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.400] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791382, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:20], updated_at: ~N[2026-08-21 11:46:20]}} [2026-08-21 11:46:20.401] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:45:45Z", "value" => "UNKNOWN"} [2026-08-21 11:46:20.457] [DEBUG] QUERY OK db=55.0ms queue=0.6ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "UNKNOWN", "sim_imsi", 77843, ~N[2026-08-21 11:46:20], ~N[2026-08-21 11:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791383, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:20], updated_at: ~N[2026-08-21 11:46:20]}} [2026-08-21 11:46:20.457] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:45:45Z", "value" => "UNKNOWN"} [2026-08-21 11:46:20.490] [DEBUG] QUERY OK db=32.4ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "UNKNOWN", "sim_iccid2", 77843, ~N[2026-08-21 11:46:20], ~N[2026-08-21 11:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791384, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:20], updated_at: ~N[2026-08-21 11:46:20]}} [2026-08-21 11:46:20.491] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:45:45Z", "value" => "UNKNOWN"} [2026-08-21 11:46:20.545] [DEBUG] QUERY OK db=53.6ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "UNKNOWN", "sim_imsi2", 77843, ~N[2026-08-21 11:46:20], ~N[2026-08-21 11:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791385, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:20], updated_at: ~N[2026-08-21 11:46:20]}} [2026-08-21 11:46:20.546] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:45:45Z", "value" => "1"} [2026-08-21 11:46:20.592] [DEBUG] QUERY OK db=45.5ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "1", "data_usage_mb", 77843, ~N[2026-08-21 11:46:20], ~N[2026-08-21 11:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.593] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791386, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:20], updated_at: ~N[2026-08-21 11:46:20]}} [2026-08-21 11:46:20.593] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:45:45Z", "value" => "0"} [2026-08-21 11:46:20.635] [DEBUG] QUERY OK db=40.6ms queue=0.1ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "0", "mobile_data_mb", 77843, ~N[2026-08-21 11:46:20], ~N[2026-08-21 11:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.635] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791387, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:20], updated_at: ~N[2026-08-21 11:46:20]}} [2026-08-21 11:46:20.636] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:45:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:46:20.719] [DEBUG] QUERY OK db=82.2ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:45:45Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77843, ~N[2026-08-21 11:46:20], ~N[2026-08-21 11:46:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:20.720] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791388, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:45:45Z", message: nil, status_log_id: 77843, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:20], updated_at: ~N[2026-08-21 11:46:20]}} [2026-08-21 11:46:41.444] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:46:41.444] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T11:46:41Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T11:46:41Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T11:46:41Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T11:46:41Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T11:46:41Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T11:46:41Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T11:46:41Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T11:46:41Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T11:46:41Z","vendor":"MoreFun"} [2026-08-21 11:46:41.444] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:46:41Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:46:41Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:46:41Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:46:41Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:46:41Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:46:41Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:46:41Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:46:41Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:46:41Z", "vendor" => "MoreFun"} [2026-08-21 11:46:41.444] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:46:41.444] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:46:41.444] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 11:46:41.446] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.5ms idle=1402.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-08-21 11:46:41.447] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=430.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-08-21 11:46:41.448] [DEBUG] QUERY OK source="parameter_template_values" db=0.9ms queue=0.1ms idle=1.5ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:46:41.450] [DEBUG] QUERY OK source="parameter_definitions" db=0.8ms queue=0.4ms idle=2.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:46:41.452] [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-08-21 11:46:41.492] [DEBUG] QUERY OK source="pos_merchant" db=39.4ms queue=0.1ms idle=1.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:46:41.493] [DEBUG] QUERY OK db=0.6ms queue=0.6ms idle=454.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 ["626165170000000"] [2026-08-21 11:46:41.493] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:46:41.494] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=41.7ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:46:41.494] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 11:46:41.495] [DEBUG] QUERY OK source="address" db=0.4ms 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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:46:41.495] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 11:46:41.496] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 11:46:41.545] [DEBUG] QUERY OK db=48.3ms idle=2.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "0e2b38369616dc5ea892e4d4b05273a8322b59f46a20aceadb46e5cc5fe6b913", 2372, 936, ~U[2026-08-21 11:46:41Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:46:41], ~N[2026-08-21 11:46:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:46:41.545] [INFO ] AutoPushService: Created push log 49036 for MF919 params.zip [2026-08-21 11:46:41.545] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 2372, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:46:41.546] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 11:46:41.547] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 11:46:41.548] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=52.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 11:46:41.554] [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-08-21 11:46:41.596] [DEBUG] QUERY OK db=41.6ms idle=9.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3c33b357d9e8fec7b26cca737805786fffd6425f2caeafee59cf78bf7c5fbed9", 6146, 17947, ~U[2026-08-21 11:46:41Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:46:41], ~N[2026-08-21 11:46:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:46:41.596] [INFO ] AutoPushService: Created push log 49037 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:46:41.596] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 6146, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:46:41.597] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 11:46:41.597] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 11:46:41.598] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 11:46:41.598] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 11:46:41.598] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:46:41.599] [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-08-21 11:46:41.600] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:46:41.600] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:46:41.601] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:46:41.602] [DEBUG] QUERY OK source="config_file_versions" db=0.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-08-21 11:46:41.602] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:46:41.603] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 11:46:41.604] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:46:41.710] [DEBUG] QUERY OK source="tms_terminals" db=64.1ms queue=41.5ms idle=2.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 11:46:41], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 11:46:41.710] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:46:41.710] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 11:46:41.710] [INFO ] Event published: terminal_updated [2026-08-21 11:46:41.710] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 11:46:41.711] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms idle=106.7ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 11:46:41], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 11:46:41.711] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 11:46:41.713] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 11:46:41.714] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 11:46:41.714] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 11:46:41.776] [DEBUG] QUERY OK source="tms_terminals" db=23.7ms queue=41.0ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 11:46:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:46:41.778] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=62.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-08-21 11:46:41.782] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=4.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:46:41.782] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=4.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:46:41.783] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:46:41.836] [DEBUG] QUERY OK source="parameter_push_logs" db=53.1ms queue=0.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-08-21 11:16:41]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:46:41.837] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:46:41.838] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 11:46:41.839] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:46:41.841] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms idle=3.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:46:41.843] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:46:41.847] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:46:41.931] [DEBUG] QUERY OK source="tms_terminals" db=42.1ms queue=41.3ms idle=5.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:46:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:46:41.973] [DEBUG] QUERY OK db=41.4ms queue=0.1ms idle=84.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T11:46:41Z", ~N[2026-08-21 11:46:41], ~N[2026-08-21 11:46:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:46:41.973] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77844, oid: "organization_id", upload_time: "2026-08-21T11:46:41Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:41], updated_at: ~N[2026-08-21 11:46:41]} [2026-08-21 11:46:41.973] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:46:41Z", "value" => "online"} [2026-08-21 11:46:41.998] [DEBUG] QUERY OK db=25.1ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T11:46:41Z", "online", "status", 77844, ~N[2026-08-21 11:46:41], ~N[2026-08-21 11:46:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:41.999] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791389, itemkey: "status", value: "online", timestamp: "2026-08-21T11:46:41Z", message: "Terminal status update", status_log_id: 77844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:41], updated_at: ~N[2026-08-21 11:46:41]}} [2026-08-21 11:46:41.999] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 11:46:42.000] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:46:41Z", "value" => "54"} [2026-08-21 11:46:42.033] [DEBUG] QUERY OK db=33.3ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T11:46:41Z", "54", "battery", 77844, ~N[2026-08-21 11:46:42], ~N[2026-08-21 11:46:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:42.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791390, itemkey: "battery", value: "54", timestamp: "2026-08-21T11:46:41Z", message: "Battery level", status_log_id: 77844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:42], updated_at: ~N[2026-08-21 11:46:42]}} [2026-08-21 11:46:42.034] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:46:41Z", "value" => "online"} [2026-08-21 11:46:42.068] [DEBUG] QUERY OK db=33.5ms idle=15.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T11:46:41Z", "online", "network", 77844, ~N[2026-08-21 11:46:42], ~N[2026-08-21 11:46:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:42.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791391, itemkey: "network", value: "online", timestamp: "2026-08-21T11:46:41Z", message: "Network connectivity", status_log_id: 77844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:42], updated_at: ~N[2026-08-21 11:46:42]}} [2026-08-21 11:46:42.068] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 11:46:42.068] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:46:41Z", "value" => "0"} [2026-08-21 11:46:42.115] [DEBUG] QUERY OK db=46.4ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T11:46:41Z", "0", "cpu", 77844, ~N[2026-08-21 11:46:42], ~N[2026-08-21 11:46:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:42.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791392, itemkey: "cpu", value: "0", timestamp: "2026-08-21T11:46:41Z", message: "CPU usage percentage", status_log_id: 77844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:42], updated_at: ~N[2026-08-21 11:46:42]}} [2026-08-21 11:46:42.115] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:46:41Z", "value" => "1.0.0"} [2026-08-21 11:46:42.150] [DEBUG] QUERY OK db=34.0ms 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-08-21T11:46:41Z", "1.0.0", "parameter_config", 77844, ~N[2026-08-21 11:46:42], ~N[2026-08-21 11:46:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:42.150] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791393, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T11:46:41Z", message: "Current parameters version", status_log_id: 77844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:42], updated_at: ~N[2026-08-21 11:46:42]}} [2026-08-21 11:46:42.150] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:46:41Z", "value" => "1.0.1"} [2026-08-21 11:46:42.184] [DEBUG] QUERY OK db=33.7ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T11:46:41Z", "1.0.1", "emv_config", 77844, ~N[2026-08-21 11:46:42], ~N[2026-08-21 11:46:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:42.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791394, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T11:46:41Z", message: "Current EMV config version", status_log_id: 77844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:42], updated_at: ~N[2026-08-21 11:46:42]}} [2026-08-21 11:46:42.185] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:46:41Z", "value" => ""} [2026-08-21 11:46:42.254] [DEBUG] QUERY OK db=27.7ms queue=41.2ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T11:46:41Z", "keys_config", 77844, ~N[2026-08-21 11:46:42], ~N[2026-08-21 11:46:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:42.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791395, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T11:46:41Z", message: "Current keys config version", status_log_id: 77844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:42], updated_at: ~N[2026-08-21 11:46:42]}} [2026-08-21 11:46:42.255] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:46:41Z", "value" => "3.8.7.3"} [2026-08-21 11:46:42.300] [DEBUG] QUERY OK db=45.2ms idle=70.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T11:46:41Z", "3.8.7.3", "application", 77844, ~N[2026-08-21 11:46:42], ~N[2026-08-21 11:46:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:42.301] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791396, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T11:46:41Z", message: "Current application version", status_log_id: 77844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:42], updated_at: ~N[2026-08-21 11:46:42]}} [2026-08-21 11:46:42.301] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T11:46:41Z"} [2026-08-21 11:46:42.301] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T11:46:41Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 85, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 11:46:48.826] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:46:48.826] [INFO ] Incoming JSON payload: {"oid":"2f752638-e86a-4068-8a16-0ec7851a8dcc","sn":"98251226730001","uploadTime":"2026-08-21T11:46:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:46:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:46:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:46:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:46:48Z"},{"itemkey":"ram_free_mb","value":"918","timestamp":"2026-08-21T11:46:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:46:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:46:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:46:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:46:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:46:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:46:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:46:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:46:48Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:46:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:46: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:46:48.827] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2f752638-e86a-4068-8a16-0ec7851a8dcc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:46:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:46:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:46:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:46:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:46:48Z", "value" => "918"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:46:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:46:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:46:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:46:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:46:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:46:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:46:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:46:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:46:48Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:46:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:46: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:46:48Z", "vendor" => "morefun"} [2026-08-21 11:46:48.827] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:46:48.827] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:46:48.827] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:46:48.828] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=788.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-08-21 11:46:48.829] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=786.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-08-21 11:46:48.829] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:46:48.830] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:46:48.893] [DEBUG] QUERY OK source="tms_terminals" db=22.7ms queue=40.5ms idle=1.0ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 11:46:48], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 11:46:48.893] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:46:48.894] [INFO ] Event published: terminal_updated [2026-08-21 11:46:48.894] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 11:46:48.894] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 11:46:48.894] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 11:46:48.895] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms idle=64.4ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 11:46:48], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 11:46:48.896] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=0.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 11:46:48.896] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 11:46:48.897] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 11:46:49.027] [DEBUG] QUERY OK source="tms_terminals" db=90.3ms queue=41.4ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 11:46:48], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:46:49.027] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:46:49.028] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=130.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-08-21 11:46:49.051] [DEBUG] QUERY OK source="tms_terminals" db=22.1ms queue=0.3ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:46:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:46:49.113] [DEBUG] QUERY OK db=61.8ms idle=9.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2f752638-e86a-4068-8a16-0ec7851a8dcc", "2026-08-21T11:46:48Z", ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:46:49.113] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77845, oid: "2f752638-e86a-4068-8a16-0ec7851a8dcc", upload_time: "2026-08-21T11:46:48Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]} [2026-08-21 11:46:49.113] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:46:48Z", "value" => "morefun"} [2026-08-21 11:46:49.177] [DEBUG] QUERY OK db=22.0ms queue=41.2ms idle=62.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:48Z", "morefun", "vendor", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791397, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.177] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:46:48Z", "value" => "kiosk_launcher"} [2026-08-21 11:46:49.208] [DEBUG] QUERY OK db=30.2ms idle=64.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:48Z", "kiosk_launcher", "model", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791398, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.208] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:46:48Z", "value" => "1.0"} [2026-08-21 11:46:49.280] [DEBUG] QUERY OK db=70.7ms queue=0.1ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:48Z", "1.0", "app_version", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791399, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.280] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:46:48Z", "value" => "13"} [2026-08-21 11:46:49.315] [DEBUG] QUERY OK db=35.1ms idle=72.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:48Z", "13", "android_version", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791400, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.316] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:46:48Z", "value" => "918"} [2026-08-21 11:46:49.367] [DEBUG] QUERY OK db=50.0ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:48Z", "918", "ram_free_mb", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791401, itemkey: "ram_free_mb", value: "918", timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.367] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:46:48Z", "value" => "WIFI"} [2026-08-21 11:46:49.406] [DEBUG] QUERY OK db=37.9ms idle=52.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:48Z", "WIFI", "network_type", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.406] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791402, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.406] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:46:48Z", "value" => "true"} [2026-08-21 11:46:49.444] [DEBUG] QUERY OK db=37.8ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:48Z", "true", "kiosk_active", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791403, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.445] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:46:48Z", "value" => ""} [2026-08-21 11:46:49.512] [DEBUG] QUERY OK db=67.0ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:46:48Z", "sim_operator", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791404, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.512] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:46:48Z", "value" => "UNKNOWN"} [2026-08-21 11:46:49.551] [DEBUG] QUERY OK db=37.7ms idle=68.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:48Z", "UNKNOWN", "sim_number", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791405, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.551] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:46:48Z", "value" => "UNKNOWN"} [2026-08-21 11:46:49.594] [DEBUG] QUERY OK db=42.8ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:48Z", "UNKNOWN", "sim_iccid", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.595] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791406, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.595] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:46:48Z", "value" => "UNKNOWN"} [2026-08-21 11:46:49.618] [DEBUG] QUERY OK db=22.8ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:48Z", "UNKNOWN", "sim_imsi", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791407, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.619] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:46:48Z", "value" => "UNKNOWN"} [2026-08-21 11:46:49.694] [DEBUG] QUERY OK db=75.0ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:48Z", "UNKNOWN", "sim_iccid2", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791408, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.695] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:46:48Z", "value" => "UNKNOWN"} [2026-08-21 11:46:49.739] [DEBUG] QUERY OK db=43.8ms idle=76.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:48Z", "UNKNOWN", "sim_imsi2", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791409, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.739] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:46:48Z", "value" => "35"} [2026-08-21 11:46:49.798] [DEBUG] QUERY OK db=58.2ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:48Z", "35", "data_usage_mb", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.798] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791410, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.798] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:46:48Z", "value" => "0"} [2026-08-21 11:46:49.834] [DEBUG] QUERY OK db=34.9ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:48Z", "0", "mobile_data_mb", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791411, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.835] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:46: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:46:49.879] [DEBUG] QUERY OK db=42.1ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77845, ~N[2026-08-21 11:46:49], ~N[2026-08-21 11:46:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:49.880] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791412, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:46:48Z", message: nil, status_log_id: 77845, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:49], updated_at: ~N[2026-08-21 11:46:49]}} [2026-08-21 11:46:49.880] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:46:49.880] [INFO ] Incoming JSON payload: {"oid":"4e6f800a-eb02-4af2-bc55-8f06a7df494b","sn":"98251226730002","uploadTime":"2026-08-21T11:46:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"ram_free_mb","value":"997","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:46:15Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:46:49.882] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4e6f800a-eb02-4af2-bc55-8f06a7df494b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:46:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:46:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:46:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:46:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:46:15Z", "value" => "997"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:46:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:46:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:46:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:46:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:46:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:46:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:46:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:46:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:46:15Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:46:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:46:15Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:46:15Z", "vendor" => "morefun"} [2026-08-21 11:46:49.882] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:46:49.882] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:46:49.882] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:46:49.883] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=48.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-08-21 11:46:49.884] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=5.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-08-21 11:46:49.884] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:46:49.885] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:46:49.885] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:46:49.962] [DEBUG] QUERY OK source="tms_terminals" db=35.7ms queue=40.9ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:46:49], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:46:49.962] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:46:49.964] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=78.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:46:50.013] [DEBUG] QUERY OK source="tms_terminals" db=49.1ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:46:49], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:46:50.054] [DEBUG] QUERY OK db=40.4ms idle=49.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "4e6f800a-eb02-4af2-bc55-8f06a7df494b", "2026-08-21T11:46:15Z", ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:46:50.054] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77846, oid: "4e6f800a-eb02-4af2-bc55-8f06a7df494b", upload_time: "2026-08-21T11:46:15Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]} [2026-08-21 11:46:50.054] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:46:15Z", "value" => "morefun"} [2026-08-21 11:46:50.125] [DEBUG] QUERY OK db=70.5ms idle=9.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "morefun", "vendor", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791413, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.126] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:46:15Z", "value" => "kiosk_launcher"} [2026-08-21 11:46:50.168] [DEBUG] QUERY OK db=42.0ms idle=72.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "kiosk_launcher", "model", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.169] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791414, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.169] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:46:15Z", "value" => "1.0"} [2026-08-21 11:46:50.213] [DEBUG] QUERY OK db=39.6ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "1.0", "app_version", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.213] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791415, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.213] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:46:15Z", "value" => "13"} [2026-08-21 11:46:50.276] [DEBUG] QUERY OK db=61.3ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "13", "android_version", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791416, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.278] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:46:15Z", "value" => "997"} [2026-08-21 11:46:50.333] [DEBUG] QUERY OK db=54.4ms idle=65.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "997", "ram_free_mb", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.333] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791417, itemkey: "ram_free_mb", value: "997", timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.334] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:46:15Z", "value" => "WIFI"} [2026-08-21 11:46:50.367] [DEBUG] QUERY OK db=32.7ms idle=58.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "WIFI", "network_type", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791418, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.367] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:46:15Z", "value" => "true"} [2026-08-21 11:46:50.413] [DEBUG] QUERY OK db=45.9ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "true", "kiosk_active", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791419, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.414] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:46:15Z", "value" => ""} [2026-08-21 11:46:50.451] [DEBUG] QUERY OK db=37.5ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:46:15Z", "sim_operator", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791420, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.452] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:46:15Z", "value" => "UNKNOWN"} [2026-08-21 11:46:50.511] [DEBUG] QUERY OK db=58.9ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "UNKNOWN", "sim_number", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791421, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.512] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:46:15Z", "value" => "UNKNOWN"} [2026-08-21 11:46:50.535] [DEBUG] QUERY OK db=23.2ms idle=60.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "UNKNOWN", "sim_iccid", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791422, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.536] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:46:15Z", "value" => "UNKNOWN"} [2026-08-21 11:46:50.597] [DEBUG] QUERY OK db=61.0ms queue=0.1ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "UNKNOWN", "sim_imsi", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.597] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791423, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.597] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:46:15Z", "value" => "UNKNOWN"} [2026-08-21 11:46:50.638] [DEBUG] QUERY OK db=40.2ms idle=62.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "UNKNOWN", "sim_iccid2", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791424, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.638] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:46:15Z", "value" => "UNKNOWN"} [2026-08-21 11:46:50.706] [DEBUG] QUERY OK db=67.3ms queue=0.3ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "UNKNOWN", "sim_imsi2", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791425, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.707] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:46:15Z", "value" => "1"} [2026-08-21 11:46:50.756] [DEBUG] QUERY OK db=48.4ms idle=69.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "1", "data_usage_mb", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791426, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.756] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:46:15Z", "value" => "0"} [2026-08-21 11:46:50.805] [DEBUG] QUERY OK db=48.0ms queue=0.3ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "0", "mobile_data_mb", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791427, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:46:50.806] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:46:15Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:46:50.844] [DEBUG] QUERY OK db=36.7ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:15Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77846, ~N[2026-08-21 11:46:50], ~N[2026-08-21 11:46:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:46:50.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791428, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:46:15Z", message: nil, status_log_id: 77846, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:46:50], updated_at: ~N[2026-08-21 11:46:50]}} [2026-08-21 11:47:01.974] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T11:46:41Z"} [2026-08-21 11:47:01.974] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T11:46:41Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 86, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 11:47:05.276] [INFO ] Running offline device check... [2026-08-21 11:47:05.276] [INFO ] Starting offline device check... [2026-08-21 11:47:05.278] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=232.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 11:47:05.290] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.8ms idle=168.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:47:05.302] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.5ms 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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.304] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=12.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.305] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.309] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=2.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.309] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.311] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.313] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.314] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.315] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.324] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.3ms queue=0.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.325] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.345] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.0ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.354] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.8ms idle=19.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.360] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms idle=11.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.361] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.363] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.398] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=33.6ms 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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.399] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=35.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:47:05.401] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.402] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.404] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.405] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.467] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=61.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.468] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=62.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:47:05.470] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.482] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.6ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.483] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=12.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.488] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.492] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.494] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.4ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.499] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.500] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=5.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.502] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.505] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.509] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=5.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.511] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.512] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.513] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.514] [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-08-21 11:47:05.515] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.519] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.522] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.524] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.3ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.526] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.527] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.528] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.529] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.532] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.535] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=0.1ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.537] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.541] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms decode=0.2ms queue=0.1ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:47:05.543] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 11:47:05.545] [INFO ] Offline device check completed successfully [2026-08-21 11:47:18.929] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:47:18.929] [INFO ] Incoming JSON payload: {"oid":"3070eaa2-4dd5-4f60-8a7b-b07f47e82866","sn":"98251226730001","uploadTime":"2026-08-21T11:47:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:47:18Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:47:18.930] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3070eaa2-4dd5-4f60-8a7b-b07f47e82866", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:47:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:47:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:47:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:47:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:47:18Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:47:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:47:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:47:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:47:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:47:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:47:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:47:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:47:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:47:18Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:47:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:47:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:47:18Z", "vendor" => "morefun"} [2026-08-21 11:47:18.930] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:47:18.931] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:47:18.931] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:47:18.933] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=882.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-08-21 11:47:18.934] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=748.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-08-21 11:47:18.934] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:47:18.935] [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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:47:18.936] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:47:21.320] [DEBUG] QUERY OK source="tms_terminals" db=2382.4ms queue=0.1ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:47:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:47:21.321] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:47:21.322] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=124.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-08-21 11:47:21.421] [DEBUG] QUERY OK source="tms_terminals" db=96.8ms queue=0.9ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:47:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:47:21.467] [DEBUG] QUERY OK db=45.1ms idle=98.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "3070eaa2-4dd5-4f60-8a7b-b07f47e82866", "2026-08-21T11:47:18Z", ~N[2026-08-21 11:47:21], ~N[2026-08-21 11:47:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:47:21.468] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77847, oid: "3070eaa2-4dd5-4f60-8a7b-b07f47e82866", upload_time: "2026-08-21T11:47:18Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:21], updated_at: ~N[2026-08-21 11:47:21]} [2026-08-21 11:47:21.468] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:47:18Z", "value" => "morefun"} [2026-08-21 11:47:21.537] [DEBUG] QUERY OK db=69.4ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "morefun", "vendor", 77847, ~N[2026-08-21 11:47:21], ~N[2026-08-21 11:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:21.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791429, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:21], updated_at: ~N[2026-08-21 11:47:21]}} [2026-08-21 11:47:21.538] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:47:18Z", "value" => "kiosk_launcher"} [2026-08-21 11:47:21.600] [DEBUG] QUERY OK db=58.4ms idle=3.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "kiosk_launcher", "model", 77847, ~N[2026-08-21 11:47:21], ~N[2026-08-21 11:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:21.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791430, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:21], updated_at: ~N[2026-08-21 11:47:21]}} [2026-08-21 11:47:21.602] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:47:18Z", "value" => "1.0"} [2026-08-21 11:47:21.742] [DEBUG] QUERY OK db=139.5ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "1.0", "app_version", 77847, ~N[2026-08-21 11:47:21], ~N[2026-08-21 11:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:21.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791431, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:21], updated_at: ~N[2026-08-21 11:47:21]}} [2026-08-21 11:47:21.743] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:47:18Z", "value" => "13"} [2026-08-21 11:47:21.785] [DEBUG] QUERY OK db=41.1ms idle=143.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "13", "android_version", 77847, ~N[2026-08-21 11:47:21], ~N[2026-08-21 11:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:21.785] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791432, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:21], updated_at: ~N[2026-08-21 11:47:21]}} [2026-08-21 11:47:21.787] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:47:18Z", "value" => "917"} [2026-08-21 11:47:21.829] [DEBUG] QUERY OK db=42.0ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "917", "ram_free_mb", 77847, ~N[2026-08-21 11:47:21], ~N[2026-08-21 11:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:21.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791433, itemkey: "ram_free_mb", value: "917", timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:21], updated_at: ~N[2026-08-21 11:47:21]}} [2026-08-21 11:47:21.830] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:47:18Z", "value" => "WIFI"} [2026-08-21 11:47:21.877] [DEBUG] QUERY OK db=46.9ms queue=0.1ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "WIFI", "network_type", 77847, ~N[2026-08-21 11:47:21], ~N[2026-08-21 11:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:21.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791434, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:21], updated_at: ~N[2026-08-21 11:47:21]}} [2026-08-21 11:47:21.877] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:47:18Z", "value" => "true"} [2026-08-21 11:47:21.904] [DEBUG] QUERY OK db=23.9ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "true", "kiosk_active", 77847, ~N[2026-08-21 11:47:21], ~N[2026-08-21 11:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:21.905] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791435, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:21], updated_at: ~N[2026-08-21 11:47:21]}} [2026-08-21 11:47:21.905] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:47:18Z", "value" => ""} [2026-08-21 11:47:21.941] [DEBUG] QUERY OK db=35.6ms queue=0.2ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:47:18Z", "sim_operator", 77847, ~N[2026-08-21 11:47:21], ~N[2026-08-21 11:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:21.941] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791436, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:21], updated_at: ~N[2026-08-21 11:47:21]}} [2026-08-21 11:47:21.941] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:47:18Z", "value" => "UNKNOWN"} [2026-08-21 11:47:22.017] [DEBUG] QUERY OK db=75.3ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "UNKNOWN", "sim_number", 77847, ~N[2026-08-21 11:47:21], ~N[2026-08-21 11:47:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791437, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:21], updated_at: ~N[2026-08-21 11:47:21]}} [2026-08-21 11:47:22.018] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:47:18Z", "value" => "UNKNOWN"} [2026-08-21 11:47:22.041] [DEBUG] QUERY OK db=23.0ms idle=77.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "UNKNOWN", "sim_iccid", 77847, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.041] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791438, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.042] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:47:18Z", "value" => "UNKNOWN"} [2026-08-21 11:47:22.091] [DEBUG] QUERY OK db=48.1ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "UNKNOWN", "sim_imsi", 77847, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791439, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.091] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:47:18Z", "value" => "UNKNOWN"} [2026-08-21 11:47:22.141] [DEBUG] QUERY OK db=49.1ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "UNKNOWN", "sim_iccid2", 77847, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.141] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791440, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.141] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:47:18Z", "value" => "UNKNOWN"} [2026-08-21 11:47:22.192] [DEBUG] QUERY OK db=49.9ms idle=51.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "UNKNOWN", "sim_imsi2", 77847, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791441, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.193] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:47:18Z", "value" => "35"} [2026-08-21 11:47:22.260] [DEBUG] QUERY OK db=66.8ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "35", "data_usage_mb", 77847, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.261] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791442, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.261] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:47:18Z", "value" => "0"} [2026-08-21 11:47:22.302] [DEBUG] QUERY OK db=41.0ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "0", "mobile_data_mb", 77847, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.303] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791443, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.306] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:47:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:47:22.373] [DEBUG] QUERY OK db=60.7ms queue=3.2ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:18Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77847, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791444, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:47:18Z", message: nil, status_log_id: 77847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.377] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:47:22.378] [INFO ] Incoming JSON payload: {"oid":"90903ae0-f69b-4866-ab5e-7e33df317665","sn":"98251226730002","uploadTime":"2026-08-21T11:46:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"ram_free_mb","value":"996","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:46:45Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:47:22.383] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "90903ae0-f69b-4866-ab5e-7e33df317665", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:46:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:46:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:46:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:46:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:46:45Z", "value" => "996"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:46:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:46:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:46:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:46:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:46:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:46:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:46:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:46:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:46:45Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:46:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:46:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:46:45Z", "vendor" => "morefun"} [2026-08-21 11:47:22.384] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:47:22.385] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:47:22.385] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:47:22.388] [DEBUG] QUERY OK source="parameter_templates" db=2.9ms idle=82.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-08-21 11:47:22.389] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=17.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:47:22.389] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:47:22.392] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=0.6ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:47:22.395] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:47:22.449] [DEBUG] QUERY OK source="tms_terminals" db=51.6ms idle=8.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:47:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:47:22.449] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:47:22.451] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:47:22.481] [DEBUG] QUERY OK source="tms_terminals" db=29.4ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:47:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:47:22.537] [DEBUG] QUERY OK db=55.6ms idle=30.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "90903ae0-f69b-4866-ab5e-7e33df317665", "2026-08-21T11:46:45Z", ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:47:22.537] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77848, oid: "90903ae0-f69b-4866-ab5e-7e33df317665", upload_time: "2026-08-21T11:46:45Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]} [2026-08-21 11:47:22.537] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:46:45Z", "value" => "morefun"} [2026-08-21 11:47:22.572] [DEBUG] QUERY OK db=34.1ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "morefun", "vendor", 77848, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791445, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.573] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:46:45Z", "value" => "kiosk_launcher"} [2026-08-21 11:47:22.598] [DEBUG] QUERY OK db=24.9ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "kiosk_launcher", "model", 77848, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791446, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.599] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:46:45Z", "value" => "1.0"} [2026-08-21 11:47:22.664] [DEBUG] QUERY OK db=65.4ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "1.0", "app_version", 77848, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791447, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.665] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:46:45Z", "value" => "13"} [2026-08-21 11:47:22.695] [DEBUG] QUERY OK db=28.9ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "13", "android_version", 77848, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791448, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.695] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:46:45Z", "value" => "996"} [2026-08-21 11:47:22.783] [DEBUG] QUERY OK db=87.2ms idle=30.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "996", "ram_free_mb", 77848, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791449, itemkey: "ram_free_mb", value: "996", timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.783] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:46:45Z", "value" => "WIFI"} [2026-08-21 11:47:22.816] [DEBUG] QUERY OK db=32.3ms idle=89.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "WIFI", "network_type", 77848, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791450, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.816] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:46:45Z", "value" => "true"} [2026-08-21 11:47:22.841] [DEBUG] QUERY OK db=24.1ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "true", "kiosk_active", 77848, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791451, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.842] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:46:45Z", "value" => ""} [2026-08-21 11:47:22.891] [DEBUG] QUERY OK db=49.3ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:46:45Z", "sim_operator", 77848, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791452, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.892] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:46:45Z", "value" => "UNKNOWN"} [2026-08-21 11:47:22.961] [DEBUG] QUERY OK db=68.7ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "UNKNOWN", "sim_number", 77848, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.961] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791453, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.961] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:46:45Z", "value" => "UNKNOWN"} [2026-08-21 11:47:22.995] [DEBUG] QUERY OK db=32.4ms queue=0.4ms idle=70.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "UNKNOWN", "sim_iccid", 77848, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:22.995] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791454, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:22.995] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:46:45Z", "value" => "UNKNOWN"} [2026-08-21 11:47:23.058] [DEBUG] QUERY OK db=62.8ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "UNKNOWN", "sim_imsi", 77848, ~N[2026-08-21 11:47:22], ~N[2026-08-21 11:47:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:23.059] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791455, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:22], updated_at: ~N[2026-08-21 11:47:22]}} [2026-08-21 11:47:23.059] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:46:45Z", "value" => "UNKNOWN"} [2026-08-21 11:47:23.083] [DEBUG] QUERY OK db=23.8ms idle=64.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "UNKNOWN", "sim_iccid2", 77848, ~N[2026-08-21 11:47:23], ~N[2026-08-21 11:47:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:23.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791456, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:23], updated_at: ~N[2026-08-21 11:47:23]}} [2026-08-21 11:47:23.084] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:46:45Z", "value" => "UNKNOWN"} [2026-08-21 11:47:23.143] [DEBUG] QUERY OK db=56.1ms queue=0.2ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "UNKNOWN", "sim_imsi2", 77848, ~N[2026-08-21 11:47:23], ~N[2026-08-21 11:47:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:23.143] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791457, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:23], updated_at: ~N[2026-08-21 11:47:23]}} [2026-08-21 11:47:23.146] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:46:45Z", "value" => "1"} [2026-08-21 11:47:23.199] [DEBUG] QUERY OK db=49.7ms queue=2.0ms idle=64.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "1", "data_usage_mb", 77848, ~N[2026-08-21 11:47:23], ~N[2026-08-21 11:47:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:23.200] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791458, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:23], updated_at: ~N[2026-08-21 11:47:23]}} [2026-08-21 11:47:23.200] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:46:45Z", "value" => "0"} [2026-08-21 11:47:23.243] [DEBUG] QUERY OK db=43.0ms idle=56.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "0", "mobile_data_mb", 77848, ~N[2026-08-21 11:47:23], ~N[2026-08-21 11:47:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:23.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791459, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:23], updated_at: ~N[2026-08-21 11:47:23]}} [2026-08-21 11:47:23.244] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:46:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:47:23.350] [DEBUG] QUERY OK db=104.6ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:46:45Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77848, ~N[2026-08-21 11:47:23], ~N[2026-08-21 11:47:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:23.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791460, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:46:45Z", message: nil, status_log_id: 77848, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:23], updated_at: ~N[2026-08-21 11:47:23]}} [2026-08-21 11:47:49.046] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:47:49.046] [INFO ] Incoming JSON payload: {"oid":"48c76537-bc28-4a6b-b5b0-51212e1effcb","sn":"98251226730001","uploadTime":"2026-08-21T11:47:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:47:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:47:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:47:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:47:48Z"},{"itemkey":"ram_free_mb","value":"915","timestamp":"2026-08-21T11:47:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:47:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:47:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:47:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:47:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:47:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:47:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:47:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:47:48Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:47:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:47: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:47:49.048] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "48c76537-bc28-4a6b-b5b0-51212e1effcb", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:47:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:47:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:47:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:47:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:47:48Z", "value" => "915"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:47:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:47:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:47:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:47:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:47:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:47:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:47:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:47:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:47:48Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:47:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:47: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:47:48Z", "vendor" => "morefun"} [2026-08-21 11:47:49.048] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:47:49.048] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:47:49.048] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:47:49.049] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=746.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-08-21 11:47:49.050] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=0.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-08-21 11:47:49.051] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:47:49.052] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:47:49.052] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:47:49.090] [DEBUG] QUERY OK source="tms_terminals" db=37.6ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:47:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:47:49.091] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:47:49.093] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=39.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:47:49.132] [DEBUG] QUERY OK source="tms_terminals" db=39.1ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:47:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:47:49.176] [DEBUG] QUERY OK db=43.8ms idle=39.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "48c76537-bc28-4a6b-b5b0-51212e1effcb", "2026-08-21T11:47:48Z", ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:47:49.177] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77849, oid: "48c76537-bc28-4a6b-b5b0-51212e1effcb", upload_time: "2026-08-21T11:47:48Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]} [2026-08-21 11:47:49.177] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:47:48Z", "value" => "morefun"} [2026-08-21 11:47:49.232] [DEBUG] QUERY OK db=54.6ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:48Z", "morefun", "vendor", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.233] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791461, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.233] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:47:48Z", "value" => "kiosk_launcher"} [2026-08-21 11:47:49.269] [DEBUG] QUERY OK db=33.1ms queue=0.3ms idle=56.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:48Z", "kiosk_launcher", "model", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791462, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.270] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:47:48Z", "value" => "1.0"} [2026-08-21 11:47:49.313] [DEBUG] QUERY OK db=42.6ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:48Z", "1.0", "app_version", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791463, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.313] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:47:48Z", "value" => "13"} [2026-08-21 11:47:49.417] [DEBUG] QUERY OK db=103.6ms idle=6.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:48Z", "13", "android_version", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791464, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.418] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:47:48Z", "value" => "915"} [2026-08-21 11:47:49.468] [DEBUG] QUERY OK db=50.1ms idle=105.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:48Z", "915", "ram_free_mb", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791465, itemkey: "ram_free_mb", value: "915", timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.469] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:47:48Z", "value" => "WIFI"} [2026-08-21 11:47:49.546] [DEBUG] QUERY OK db=77.1ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:48Z", "WIFI", "network_type", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791466, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.549] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:47:48Z", "value" => "true"} [2026-08-21 11:47:49.618] [DEBUG] QUERY OK db=68.6ms idle=80.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:48Z", "true", "kiosk_active", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791467, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.618] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:47:48Z", "value" => ""} [2026-08-21 11:47:49.643] [DEBUG] QUERY OK db=24.3ms idle=71.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:47:48Z", "sim_operator", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.643] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791468, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.644] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:47:48Z", "value" => "UNKNOWN"} [2026-08-21 11:47:49.685] [DEBUG] QUERY OK db=40.3ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:48Z", "UNKNOWN", "sim_number", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.686] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791469, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.686] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:47:48Z", "value" => "UNKNOWN"} [2026-08-21 11:47:49.722] [DEBUG] QUERY OK db=35.7ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:48Z", "UNKNOWN", "sim_iccid", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791470, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.722] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:47:48Z", "value" => "UNKNOWN"} [2026-08-21 11:47:49.759] [DEBUG] QUERY OK db=36.7ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:48Z", "UNKNOWN", "sim_imsi", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.760] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791471, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.760] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:47:48Z", "value" => "UNKNOWN"} [2026-08-21 11:47:49.797] [DEBUG] QUERY OK db=36.6ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:48Z", "UNKNOWN", "sim_iccid2", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.797] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791472, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.797] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:47:48Z", "value" => "UNKNOWN"} [2026-08-21 11:47:49.854] [DEBUG] QUERY OK db=56.1ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:48Z", "UNKNOWN", "sim_imsi2", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791473, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.854] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:47:48Z", "value" => "35"} [2026-08-21 11:47:49.898] [DEBUG] QUERY OK db=43.6ms idle=57.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:48Z", "35", "data_usage_mb", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791474, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.899] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:47:48Z", "value" => "0"} [2026-08-21 11:47:49.936] [DEBUG] QUERY OK db=37.0ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:48Z", "0", "mobile_data_mb", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.937] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791475, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.938] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:47: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:47:49.985] [DEBUG] QUERY OK db=44.2ms queue=0.2ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77849, ~N[2026-08-21 11:47:49], ~N[2026-08-21 11:47:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:49.986] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791476, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:47:48Z", message: nil, status_log_id: 77849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:49], updated_at: ~N[2026-08-21 11:47:49]}} [2026-08-21 11:47:49.986] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:47:49.986] [INFO ] Incoming JSON payload: {"oid":"f76846c8-f460-453f-ad7b-3fb41c00a727","sn":"98251226730002","uploadTime":"2026-08-21T11:47:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"ram_free_mb","value":"991","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:47:16Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:47:49.991] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f76846c8-f460-453f-ad7b-3fb41c00a727", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:47:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:47:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:47:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:47:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:47:16Z", "value" => "991"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:47:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:47:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:47:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:47:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:47:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:47:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:47:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:47:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:47:16Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:47:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:47:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:47:16Z", "vendor" => "morefun"} [2026-08-21 11:47:49.991] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:47:49.994] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:47:49.995] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:47:49.996] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.2ms idle=58.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-08-21 11:47:49.997] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=12.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-08-21 11:47:49.997] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:47:49.998] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.2ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:47:49.998] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:47:50.062] [DEBUG] QUERY OK source="tms_terminals" db=63.7ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:47:49], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:47:50.063] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:47:50.065] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=66.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:47:50.104] [DEBUG] QUERY OK source="tms_terminals" db=38.4ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:47:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:47:50.140] [DEBUG] QUERY OK db=35.2ms queue=0.2ms idle=39.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "f76846c8-f460-453f-ad7b-3fb41c00a727", "2026-08-21T11:47:16Z", ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:47:50.140] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77850, oid: "f76846c8-f460-453f-ad7b-3fb41c00a727", upload_time: "2026-08-21T11:47:16Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]} [2026-08-21 11:47:50.140] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:47:16Z", "value" => "morefun"} [2026-08-21 11:47:50.196] [DEBUG] QUERY OK db=52.3ms queue=0.8ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "morefun", "vendor", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791477, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.196] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:47:16Z", "value" => "kiosk_launcher"} [2026-08-21 11:47:50.239] [DEBUG] QUERY OK db=42.8ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "kiosk_launcher", "model", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.241] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791478, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.241] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:47:16Z", "value" => "1.0"} [2026-08-21 11:47:50.298] [DEBUG] QUERY OK db=55.2ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "1.0", "app_version", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.298] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791479, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.298] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:47:16Z", "value" => "13"} [2026-08-21 11:47:50.351] [DEBUG] QUERY OK db=51.9ms idle=1.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "13", "android_version", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.351] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791480, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.352] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:47:16Z", "value" => "991"} [2026-08-21 11:47:50.418] [DEBUG] QUERY OK db=65.7ms queue=0.1ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "991", "ram_free_mb", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791481, itemkey: "ram_free_mb", value: "991", timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.418] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:47:16Z", "value" => "WIFI"} [2026-08-21 11:47:50.444] [DEBUG] QUERY OK db=23.8ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "WIFI", "network_type", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791482, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.447] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:47:16Z", "value" => "true"} [2026-08-21 11:47:50.504] [DEBUG] QUERY OK db=56.1ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "true", "kiosk_active", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791483, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.505] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:47:16Z", "value" => ""} [2026-08-21 11:47:50.550] [DEBUG] QUERY OK db=43.6ms queue=1.3ms idle=61.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:47:16Z", "sim_operator", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791484, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.550] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:47:16Z", "value" => "UNKNOWN"} [2026-08-21 11:47:50.606] [DEBUG] QUERY OK db=55.0ms queue=0.2ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "UNKNOWN", "sim_number", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791485, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.607] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:47:16Z", "value" => "UNKNOWN"} [2026-08-21 11:47:50.657] [DEBUG] QUERY OK db=50.1ms idle=57.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "UNKNOWN", "sim_iccid", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791486, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.658] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:47:16Z", "value" => "UNKNOWN"} [2026-08-21 11:47:50.701] [DEBUG] QUERY OK db=42.1ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "UNKNOWN", "sim_imsi", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791487, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.701] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:47:16Z", "value" => "UNKNOWN"} [2026-08-21 11:47:50.745] [DEBUG] QUERY OK db=43.6ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "UNKNOWN", "sim_iccid2", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791488, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.746] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:47:16Z", "value" => "UNKNOWN"} [2026-08-21 11:47:50.788] [DEBUG] QUERY OK db=42.0ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "UNKNOWN", "sim_imsi2", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791489, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.789] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:47:16Z", "value" => "1"} [2026-08-21 11:47:50.813] [DEBUG] QUERY OK db=23.2ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "1", "data_usage_mb", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.813] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791490, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.813] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:47:16Z", "value" => "0"} [2026-08-21 11:47:50.849] [DEBUG] QUERY OK db=35.6ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "0", "mobile_data_mb", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.849] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791491, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:50.850] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:47:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:47:50.923] [DEBUG] QUERY OK db=71.5ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:16Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77850, ~N[2026-08-21 11:47:50], ~N[2026-08-21 11:47:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:50.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791492, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:47:16Z", message: nil, status_log_id: 77850, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:50], updated_at: ~N[2026-08-21 11:47:50]}} [2026-08-21 11:47:56.106] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 11:47:56.106] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T02:57:21Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T02:57:21Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T02:57:21Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T02:57:21Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T02:57:21Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T02:57:21Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T02:57:21Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T02:57:21Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T02:57:21Z","vendor":"MoreFun"} [2026-08-21 11:47:56.106] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:57:21Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:57:21Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:57:21Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:57:21Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:57:21Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:57:21Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:57:21Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:57:21Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T02:57:21Z", "vendor" => "MoreFun"} [2026-08-21 11:47:56.106] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:47:56.107] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 11:47:56.107] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 11:47:56.108] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=725.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-08-21 11:47:56.110] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms idle=59.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 11:47:56.110] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms idle=1.5ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:47:56.112] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.6ms 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-08-21 11:47:56.115] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms queue=0.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 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:47:56.154] [DEBUG] QUERY OK source="pos_merchant" db=38.7ms idle=2.5ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:47:56.156] [DEBUG] QUERY OK db=0.9ms queue=0.4ms idle=1102.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 ["123451234512345"] [2026-08-21 11:47:56.156] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:47:56.157] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=41.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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:47:56.157] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 11:47:56.157] [DEBUG] QUERY OK source="address" db=0.4ms idle=3.3ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:47:56.157] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 11:47:56.158] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 11:47:56.200] [DEBUG] QUERY OK db=40.7ms idle=2.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c9952d56a61fa81fa460620796514230f3d3121b540d847be2e4736c8f85089d", 1349, 932, ~U[2026-08-21 11:47:56Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:47:56], ~N[2026-08-21 11:47:56]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:47:56.200] [INFO ] AutoPushService: Created push log 49038 for MF919 params.zip [2026-08-21 11:47:56.200] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 1349, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:47:56.201] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:47:56.201] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 11:47:56.203] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=44.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 11:47:56.207] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 11:47:56.265] [DEBUG] QUERY OK db=56.4ms queue=0.2ms idle=8.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "9385f10471f21b9f13bb6ec94a5a0daf5deadd812177540aee3373750f5dd6fa", 6306, 17947, ~U[2026-08-21 11:47:56Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:47:56], ~N[2026-08-21 11:47:56]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:47:56.266] [INFO ] AutoPushService: Created push log 49039 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:47:56.266] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 6306, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:47:56.266] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:47:56.267] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 11:47:56.267] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 11:47:56.268] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 11:47:56.268] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=2.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:47:56.269] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 11:47:56.269] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:47:56.270] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:47:56.270] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:47:56.270] [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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:47:56.271] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:47:56.271] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 11:47:56.271] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:47:56.271] [INFO ] Terminal updated: 98250623730001 [2026-08-21 11:47:56.311] [DEBUG] QUERY OK source="tms_terminals" db=39.6ms queue=0.1ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:47:56], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:47:56.313] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=41.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-08-21 11:47:56.314] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.2ms idle=1.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:47:56.315] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:47:56.315] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:47:56.338] [DEBUG] QUERY OK source="parameter_push_logs" db=23.2ms idle=1.0ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [19, "application", ~N[2026-08-21 11:17:56]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:47:56.338] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:47:56.338] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 11:47:56.339] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=24.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:47:56.340] [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.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:47:56.340] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:47:56.341] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:47:56.387] [DEBUG] QUERY OK source="tms_terminals" db=46.1ms idle=0.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:47:56], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:47:56.478] [DEBUG] QUERY OK db=89.5ms queue=0.2ms idle=2.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T02:57:21Z", ~N[2026-08-21 11:47:56], ~N[2026-08-21 11:47:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:47:56.478] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77851, oid: "organization_id", upload_time: "2026-08-21T02:57:21Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:56], updated_at: ~N[2026-08-21 11:47:56]} [2026-08-21 11:47:56.478] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T02:57:21Z", "value" => "online"} [2026-08-21 11:47:56.552] [DEBUG] QUERY OK db=73.4ms idle=91.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T02:57:21Z", "online", "status", 77851, ~N[2026-08-21 11:47:56], ~N[2026-08-21 11:47:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:56.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791493, itemkey: "status", value: "online", timestamp: "2026-08-21T02:57:21Z", message: "Terminal status update", status_log_id: 77851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:56], updated_at: ~N[2026-08-21 11:47:56]}} [2026-08-21 11:47:56.553] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 11:47:56.553] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T02:57:21Z", "value" => "51"} [2026-08-21 11:47:56.632] [DEBUG] QUERY OK db=77.0ms idle=75.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T02:57:21Z", "51", "battery", 77851, ~N[2026-08-21 11:47:56], ~N[2026-08-21 11:47:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:56.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791494, itemkey: "battery", value: "51", timestamp: "2026-08-21T02:57:21Z", message: "Battery level", status_log_id: 77851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:56], updated_at: ~N[2026-08-21 11:47:56]}} [2026-08-21 11:47:56.633] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T02:57:21Z", "value" => "online"} [2026-08-21 11:47:56.706] [DEBUG] QUERY OK db=73.2ms idle=80.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T02:57:21Z", "online", "network", 77851, ~N[2026-08-21 11:47:56], ~N[2026-08-21 11:47:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:56.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791495, itemkey: "network", value: "online", timestamp: "2026-08-21T02:57:21Z", message: "Network connectivity", status_log_id: 77851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:56], updated_at: ~N[2026-08-21 11:47:56]}} [2026-08-21 11:47:56.707] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 11:47:56.707] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T02:57:21Z", "value" => "0"} [2026-08-21 11:47:56.794] [DEBUG] QUERY OK db=86.8ms idle=76.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T02:57:21Z", "0", "cpu", 77851, ~N[2026-08-21 11:47:56], ~N[2026-08-21 11:47:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:56.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791496, itemkey: "cpu", value: "0", timestamp: "2026-08-21T02:57:21Z", message: "CPU usage percentage", status_log_id: 77851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:56], updated_at: ~N[2026-08-21 11:47:56]}} [2026-08-21 11:47:56.794] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T02:57:21Z", "value" => "1.0.0"} [2026-08-21 11:47:56.848] [DEBUG] QUERY OK db=52.4ms idle=89.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T02:57:21Z", "1.0.0", "parameter_config", 77851, ~N[2026-08-21 11:47:56], ~N[2026-08-21 11:47:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:56.848] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791497, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T02:57:21Z", message: "Current parameters version", status_log_id: 77851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:56], updated_at: ~N[2026-08-21 11:47:56]}} [2026-08-21 11:47:56.849] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T02:57:21Z", "value" => "1.0.1"} [2026-08-21 11:47:56.920] [DEBUG] QUERY OK db=70.8ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T02:57:21Z", "1.0.1", "emv_config", 77851, ~N[2026-08-21 11:47:56], ~N[2026-08-21 11:47:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:56.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791498, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T02:57:21Z", message: "Current EMV config version", status_log_id: 77851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:56], updated_at: ~N[2026-08-21 11:47:56]}} [2026-08-21 11:47:56.920] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T02:57:21Z", "value" => ""} [2026-08-21 11:47:56.994] [DEBUG] QUERY OK db=70.8ms queue=3.1ms idle=72.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T02:57:21Z", "keys_config", 77851, ~N[2026-08-21 11:47:56], ~N[2026-08-21 11:47:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:56.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791499, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T02:57:21Z", message: "Current keys config version", status_log_id: 77851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:56], updated_at: ~N[2026-08-21 11:47:56]}} [2026-08-21 11:47:56.996] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T02:57:21Z", "value" => "3.8.7.3"} [2026-08-21 11:47:57.042] [DEBUG] QUERY OK db=45.0ms queue=1.3ms idle=76.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T02:57:21Z", "3.8.7.3", "application", 77851, ~N[2026-08-21 11:47:56], ~N[2026-08-21 11:47:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:47:57.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791500, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T02:57:21Z", message: "Current application version", status_log_id: 77851, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:47:56], updated_at: ~N[2026-08-21 11:47:56]}} [2026-08-21 11:47:57.043] [WARN ] Unexpected async result [2026-08-21 11:47:57.043] [WARN ] Unexpected async result [2026-08-21 11:48:19.152] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:48:19.152] [INFO ] Incoming JSON payload: {"oid":"2969836d-5ba9-4adc-8ebd-020ec8a58474","sn":"98251226730001","uploadTime":"2026-08-21T11:48:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"ram_free_mb","value":"922","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:48:18Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:48:19.154] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2969836d-5ba9-4adc-8ebd-020ec8a58474", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:48:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:48:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:48:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:48:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:48:18Z", "value" => "922"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:48:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:48:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:48:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:48:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:48:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:48:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:48:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:48:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:48:18Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:48:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:48:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:48:18Z", "vendor" => "morefun"} [2026-08-21 11:48:19.154] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:48:19.155] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:48:19.155] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:48:19.157] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms 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-08-21 11:48:19.158] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=107.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-08-21 11:48:19.159] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:48:19.159] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:48:19.160] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:48:19.198] [DEBUG] QUERY OK source="tms_terminals" db=38.2ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:48:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:48:19.199] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:48:19.200] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=39.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:48:19.265] [DEBUG] QUERY OK source="tms_terminals" db=64.3ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:48:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:48:19.345] [DEBUG] QUERY OK db=79.7ms idle=65.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2969836d-5ba9-4adc-8ebd-020ec8a58474", "2026-08-21T11:48:18Z", ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:48:19.346] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77852, oid: "2969836d-5ba9-4adc-8ebd-020ec8a58474", upload_time: "2026-08-21T11:48:18Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]} [2026-08-21 11:48:19.346] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:48:18Z", "value" => "morefun"} [2026-08-21 11:48:19.412] [DEBUG] QUERY OK db=66.0ms idle=81.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:18Z", "morefun", "vendor", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791501, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.413] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:48:18Z", "value" => "kiosk_launcher"} [2026-08-21 11:48:19.439] [DEBUG] QUERY OK db=24.6ms queue=1.2ms idle=68.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:18Z", "kiosk_launcher", "model", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791502, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.439] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:48:18Z", "value" => "1.0"} [2026-08-21 11:48:19.485] [DEBUG] QUERY OK db=45.1ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:18Z", "1.0", "app_version", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.485] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791503, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.486] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:48:18Z", "value" => "13"} [2026-08-21 11:48:19.541] [DEBUG] QUERY OK db=55.1ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:18Z", "13", "android_version", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791504, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.541] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:48:18Z", "value" => "922"} [2026-08-21 11:48:19.567] [DEBUG] QUERY OK db=24.4ms queue=0.7ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:18Z", "922", "ram_free_mb", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791505, itemkey: "ram_free_mb", value: "922", timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.568] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:48:18Z", "value" => "WIFI"} [2026-08-21 11:48:19.629] [DEBUG] QUERY OK db=61.4ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:18Z", "WIFI", "network_type", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791506, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.630] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:48:18Z", "value" => "true"} [2026-08-21 11:48:19.655] [DEBUG] QUERY OK db=24.6ms idle=64.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:18Z", "true", "kiosk_active", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791507, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.655] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:48:18Z", "value" => ""} [2026-08-21 11:48:19.708] [DEBUG] QUERY OK db=52.0ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:48:18Z", "sim_operator", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791508, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.708] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:48:18Z", "value" => "UNKNOWN"} [2026-08-21 11:48:19.752] [DEBUG] QUERY OK db=43.7ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:18Z", "UNKNOWN", "sim_number", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791509, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.753] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:48:18Z", "value" => "UNKNOWN"} [2026-08-21 11:48:19.786] [DEBUG] QUERY OK db=32.9ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:18Z", "UNKNOWN", "sim_iccid", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.786] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791510, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.786] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:48:18Z", "value" => "UNKNOWN"} [2026-08-21 11:48:19.821] [DEBUG] QUERY OK db=33.9ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:18Z", "UNKNOWN", "sim_imsi", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791511, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.821] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:48:18Z", "value" => "UNKNOWN"} [2026-08-21 11:48:19.858] [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-08-21T11:48:18Z", "UNKNOWN", "sim_iccid2", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791512, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.858] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:48:18Z", "value" => "UNKNOWN"} [2026-08-21 11:48:19.894] [DEBUG] QUERY OK db=35.1ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:18Z", "UNKNOWN", "sim_imsi2", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791513, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.894] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:48:18Z", "value" => "35"} [2026-08-21 11:48:19.942] [DEBUG] QUERY OK db=47.3ms queue=0.5ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:18Z", "35", "data_usage_mb", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791514, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.943] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:48:18Z", "value" => "0"} [2026-08-21 11:48:19.981] [DEBUG] QUERY OK db=37.8ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:18Z", "0", "mobile_data_mb", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:19.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791515, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:19.985] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:48:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:48:20.021] [DEBUG] QUERY OK db=35.1ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:18Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77852, ~N[2026-08-21 11:48:19], ~N[2026-08-21 11:48:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.023] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791516, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:48:18Z", message: nil, status_log_id: 77852, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:19], updated_at: ~N[2026-08-21 11:48:19]}} [2026-08-21 11:48:20.024] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:48:20.024] [INFO ] Incoming JSON payload: {"oid":"32d8f57a-a14a-4d3c-8e35-0c393d356fa2","sn":"98251226730002","uploadTime":"2026-08-21T11:47:46Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"ram_free_mb","value":"998","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:47:46Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:48:20.026] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "32d8f57a-a14a-4d3c-8e35-0c393d356fa2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:47:46Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:47:46Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:47:46Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:47:46Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:47:46Z", "value" => "998"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:47:46Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:47:46Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:47:46Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:47:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:47:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:47:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:47:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:47:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:47:46Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:47:46Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:47:46Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:47:46Z", "vendor" => "morefun"} [2026-08-21 11:48:20.027] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:48:20.027] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:48:20.028] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:48:20.030] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms 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.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 11:48:20.032] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.4ms idle=9.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-08-21 11:48:20.032] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:48:20.035] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:48:20.035] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:48:20.085] [DEBUG] QUERY OK source="tms_terminals" db=49.0ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:48:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:48:20.085] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:48:20.088] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:48:20.140] [DEBUG] QUERY OK source="tms_terminals" db=50.1ms idle=5.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:48:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:48:20.171] [DEBUG] QUERY OK db=30.3ms idle=52.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "32d8f57a-a14a-4d3c-8e35-0c393d356fa2", "2026-08-21T11:47:46Z", ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:48:20.171] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77853, oid: "32d8f57a-a14a-4d3c-8e35-0c393d356fa2", upload_time: "2026-08-21T11:47:46Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]} [2026-08-21 11:48:20.171] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:47:46Z", "value" => "morefun"} [2026-08-21 11:48:20.229] [DEBUG] QUERY OK db=57.9ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "morefun", "vendor", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.230] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791517, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.230] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:47:46Z", "value" => "kiosk_launcher"} [2026-08-21 11:48:20.264] [DEBUG] QUERY OK db=31.2ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "kiosk_launcher", "model", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.265] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791518, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.265] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:47:46Z", "value" => "1.0"} [2026-08-21 11:48:20.319] [DEBUG] QUERY OK db=53.7ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "1.0", "app_version", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791519, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.321] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:47:46Z", "value" => "13"} [2026-08-21 11:48:20.372] [DEBUG] QUERY OK db=50.8ms idle=56.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "13", "android_version", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791520, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.372] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:47:46Z", "value" => "998"} [2026-08-21 11:48:20.413] [DEBUG] QUERY OK db=40.5ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "998", "ram_free_mb", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791521, itemkey: "ram_free_mb", value: "998", timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.414] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:47:46Z", "value" => "WIFI"} [2026-08-21 11:48:20.453] [DEBUG] QUERY OK db=38.6ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "WIFI", "network_type", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791522, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.455] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:47:46Z", "value" => "true"} [2026-08-21 11:48:20.489] [DEBUG] QUERY OK db=33.9ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "true", "kiosk_active", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791523, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.489] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:47:46Z", "value" => ""} [2026-08-21 11:48:20.553] [DEBUG] QUERY OK db=63.4ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:47:46Z", "sim_operator", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.555] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791524, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.555] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:47:46Z", "value" => "UNKNOWN"} [2026-08-21 11:48:20.606] [DEBUG] QUERY OK db=50.5ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "UNKNOWN", "sim_number", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791525, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.609] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:47:46Z", "value" => "UNKNOWN"} [2026-08-21 11:48:20.650] [DEBUG] QUERY OK db=37.6ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "UNKNOWN", "sim_iccid", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.651] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791526, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.651] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:47:46Z", "value" => "UNKNOWN"} [2026-08-21 11:48:20.721] [DEBUG] QUERY OK db=69.3ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "UNKNOWN", "sim_imsi", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791527, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.722] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:47:46Z", "value" => "UNKNOWN"} [2026-08-21 11:48:20.762] [DEBUG] QUERY OK db=40.0ms idle=72.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "UNKNOWN", "sim_iccid2", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.762] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791528, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.762] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:47:46Z", "value" => "UNKNOWN"} [2026-08-21 11:48:20.808] [DEBUG] QUERY OK db=45.2ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "UNKNOWN", "sim_imsi2", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791529, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.809] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:47:46Z", "value" => "1"} [2026-08-21 11:48:20.870] [DEBUG] QUERY OK db=60.8ms queue=0.1ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "1", "data_usage_mb", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791530, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.870] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:47:46Z", "value" => "0"} [2026-08-21 11:48:20.895] [DEBUG] QUERY OK db=23.9ms idle=62.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "0", "mobile_data_mb", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791531, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:20.897] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:47:46Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:48:20.957] [DEBUG] QUERY OK db=58.0ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:47:46Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77853, ~N[2026-08-21 11:48:20], ~N[2026-08-21 11:48:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:20.959] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791532, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:47:46Z", message: nil, status_log_id: 77853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:20], updated_at: ~N[2026-08-21 11:48:20]}} [2026-08-21 11:48:49.503] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:48:49.504] [INFO ] Incoming JSON payload: {"oid":"a9ebbdda-a742-44c6-b0a7-68b815f03053","sn":"98251226730001","uploadTime":"2026-08-21T11:48:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:48:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:48:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:48:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:48:48Z"},{"itemkey":"ram_free_mb","value":"923","timestamp":"2026-08-21T11:48:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:48:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:48:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:48:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:48:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:48:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:48:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:48:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:48:48Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:48:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:48: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:48:49.505] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a9ebbdda-a742-44c6-b0a7-68b815f03053", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:48:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:48:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:48:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:48:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:48:48Z", "value" => "923"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:48:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:48:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:48:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:48:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:48:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:48:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:48:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:48:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:48:48Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:48:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:48: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:48:48Z", "vendor" => "morefun"} [2026-08-21 11:48:49.505] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:48:49.505] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:48:49.505] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:48:49.507] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms queue=0.1ms idle=917.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-08-21 11:48:49.509] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.6ms idle=448.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-08-21 11:48:49.509] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:48:49.510] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:48:49.510] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:48:49.547] [DEBUG] QUERY OK source="tms_terminals" db=36.5ms queue=0.2ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:48:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:48:49.547] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:48:49.549] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=37.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:48:49.585] [DEBUG] QUERY OK source="tms_terminals" db=35.5ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:48:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:48:49.608] [DEBUG] QUERY OK db=21.8ms queue=0.1ms idle=36.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a9ebbdda-a742-44c6-b0a7-68b815f03053", "2026-08-21T11:48:48Z", ~N[2026-08-21 11:48:49], ~N[2026-08-21 11:48:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:48:49.608] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77854, oid: "a9ebbdda-a742-44c6-b0a7-68b815f03053", upload_time: "2026-08-21T11:48:48Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:49], updated_at: ~N[2026-08-21 11:48:49]} [2026-08-21 11:48:49.609] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:48:48Z", "value" => "morefun"} [2026-08-21 11:48:49.639] [DEBUG] QUERY OK db=30.0ms queue=0.2ms idle=19.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:48Z", "morefun", "vendor", 77854, ~N[2026-08-21 11:48:49], ~N[2026-08-21 11:48:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:49.639] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791533, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:49], updated_at: ~N[2026-08-21 11:48:49]}} [2026-08-21 11:48:49.640] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:48:48Z", "value" => "kiosk_launcher"} [2026-08-21 11:48:49.676] [DEBUG] QUERY OK db=36.0ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:48Z", "kiosk_launcher", "model", 77854, ~N[2026-08-21 11:48:49], ~N[2026-08-21 11:48:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:49.676] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791534, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:49], updated_at: ~N[2026-08-21 11:48:49]}} [2026-08-21 11:48:49.677] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:48:48Z", "value" => "1.0"} [2026-08-21 11:48:49.704] [DEBUG] QUERY OK db=26.5ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:48Z", "1.0", "app_version", 77854, ~N[2026-08-21 11:48:49], ~N[2026-08-21 11:48:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:49.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791535, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:49], updated_at: ~N[2026-08-21 11:48:49]}} [2026-08-21 11:48:49.704] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:48:48Z", "value" => "13"} [2026-08-21 11:48:49.752] [DEBUG] QUERY OK db=46.9ms idle=28.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:48Z", "13", "android_version", 77854, ~N[2026-08-21 11:48:49], ~N[2026-08-21 11:48:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:49.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791536, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:49], updated_at: ~N[2026-08-21 11:48:49]}} [2026-08-21 11:48:49.752] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:48:48Z", "value" => "923"} [2026-08-21 11:48:49.793] [DEBUG] QUERY OK db=39.6ms queue=0.3ms idle=48.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:48Z", "923", "ram_free_mb", 77854, ~N[2026-08-21 11:48:49], ~N[2026-08-21 11:48:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:49.793] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791537, itemkey: "ram_free_mb", value: "923", timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:49], updated_at: ~N[2026-08-21 11:48:49]}} [2026-08-21 11:48:49.793] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:48:48Z", "value" => "WIFI"} [2026-08-21 11:48:49.829] [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-08-21T11:48:48Z", "WIFI", "network_type", 77854, ~N[2026-08-21 11:48:49], ~N[2026-08-21 11:48:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:49.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791538, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:49], updated_at: ~N[2026-08-21 11:48:49]}} [2026-08-21 11:48:49.830] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:48:48Z", "value" => "true"} [2026-08-21 11:48:49.873] [DEBUG] QUERY OK db=43.2ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:48Z", "true", "kiosk_active", 77854, ~N[2026-08-21 11:48:49], ~N[2026-08-21 11:48:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:49.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791539, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:49], updated_at: ~N[2026-08-21 11:48:49]}} [2026-08-21 11:48:49.874] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:48:48Z", "value" => ""} [2026-08-21 11:48:49.904] [DEBUG] QUERY OK db=29.2ms queue=0.1ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:48:48Z", "sim_operator", 77854, ~N[2026-08-21 11:48:49], ~N[2026-08-21 11:48:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:49.904] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791540, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:49], updated_at: ~N[2026-08-21 11:48:49]}} [2026-08-21 11:48:49.904] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:48:48Z", "value" => "UNKNOWN"} [2026-08-21 11:48:49.956] [DEBUG] QUERY OK db=51.0ms queue=0.1ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:48Z", "UNKNOWN", "sim_number", 77854, ~N[2026-08-21 11:48:49], ~N[2026-08-21 11:48:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:49.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791541, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:49], updated_at: ~N[2026-08-21 11:48:49]}} [2026-08-21 11:48:49.956] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:48:48Z", "value" => "UNKNOWN"} [2026-08-21 11:48:49.986] [DEBUG] QUERY OK db=29.4ms idle=52.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:48Z", "UNKNOWN", "sim_iccid", 77854, ~N[2026-08-21 11:48:49], ~N[2026-08-21 11:48:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:49.986] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791542, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:49], updated_at: ~N[2026-08-21 11:48:49]}} [2026-08-21 11:48:49.986] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:48:48Z", "value" => "UNKNOWN"} [2026-08-21 11:48:50.066] [DEBUG] QUERY OK db=79.5ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:48Z", "UNKNOWN", "sim_imsi", 77854, ~N[2026-08-21 11:48:49], ~N[2026-08-21 11:48:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791543, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:49], updated_at: ~N[2026-08-21 11:48:49]}} [2026-08-21 11:48:50.067] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:48:48Z", "value" => "UNKNOWN"} [2026-08-21 11:48:50.096] [DEBUG] QUERY OK db=28.5ms idle=81.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:48Z", "UNKNOWN", "sim_iccid2", 77854, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.096] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791544, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.096] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:48:48Z", "value" => "UNKNOWN"} [2026-08-21 11:48:50.137] [DEBUG] QUERY OK db=40.0ms queue=0.1ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:48Z", "UNKNOWN", "sim_imsi2", 77854, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791545, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.137] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:48:48Z", "value" => "35"} [2026-08-21 11:48:50.183] [DEBUG] QUERY OK db=44.8ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:48Z", "35", "data_usage_mb", 77854, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791546, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.183] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:48:48Z", "value" => "0"} [2026-08-21 11:48:50.218] [DEBUG] QUERY OK db=33.9ms queue=0.1ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:48Z", "0", "mobile_data_mb", 77854, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.218] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791547, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.219] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:48: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:48:50.255] [DEBUG] QUERY OK db=34.3ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77854, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791548, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:48:48Z", message: nil, status_log_id: 77854, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.257] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:48:50.258] [INFO ] Incoming JSON payload: {"oid":"837d7076-5c02-48ff-84ce-a68100160c97","sn":"98251226730002","uploadTime":"2026-08-21T11:48:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"ram_free_mb","value":"998","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:48:16Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:48:50.259] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "837d7076-5c02-48ff-84ce-a68100160c97", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:48:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:48:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:48:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:48:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:48:16Z", "value" => "998"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:48:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:48:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:48:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:48:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:48:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:48:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:48:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:48:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:48:16Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:48:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:48:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:48:16Z", "vendor" => "morefun"} [2026-08-21 11:48:50.259] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:48:50.259] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:48:50.260] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:48:50.262] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=42.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 11:48:50.263] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=8.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:48:50.263] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:48:50.264] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:48:50.265] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:48:50.308] [DEBUG] QUERY OK source="tms_terminals" db=40.6ms queue=0.9ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:48:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:48:50.308] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:48:50.311] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=44.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:48:50.359] [DEBUG] QUERY OK source="tms_terminals" db=47.3ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:48:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:48:50.388] [DEBUG] QUERY OK db=28.2ms idle=48.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "837d7076-5c02-48ff-84ce-a68100160c97", "2026-08-21T11:48:16Z", ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:48:50.389] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77855, oid: "837d7076-5c02-48ff-84ce-a68100160c97", upload_time: "2026-08-21T11:48:16Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]} [2026-08-21 11:48:50.389] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:48:16Z", "value" => "morefun"} [2026-08-21 11:48:50.430] [DEBUG] QUERY OK db=40.8ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "morefun", "vendor", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.431] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791549, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.431] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:48:16Z", "value" => "kiosk_launcher"} [2026-08-21 11:48:50.479] [DEBUG] QUERY OK db=46.9ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "kiosk_launcher", "model", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791550, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.480] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:48:16Z", "value" => "1.0"} [2026-08-21 11:48:50.508] [DEBUG] QUERY OK db=27.4ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "1.0", "app_version", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.508] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791551, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.508] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:48:16Z", "value" => "13"} [2026-08-21 11:48:50.545] [DEBUG] QUERY OK db=36.1ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "13", "android_version", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.545] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791552, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.545] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:48:16Z", "value" => "998"} [2026-08-21 11:48:50.589] [DEBUG] QUERY OK db=43.2ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "998", "ram_free_mb", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791553, itemkey: "ram_free_mb", value: "998", timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.589] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:48:16Z", "value" => "WIFI"} [2026-08-21 11:48:50.612] [DEBUG] QUERY OK db=22.6ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "WIFI", "network_type", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791554, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.613] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:48:16Z", "value" => "true"} [2026-08-21 11:48:50.670] [DEBUG] QUERY OK db=56.2ms queue=0.7ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "true", "kiosk_active", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791555, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.671] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:48:16Z", "value" => ""} [2026-08-21 11:48:50.700] [DEBUG] QUERY OK db=29.0ms idle=59.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:48:16Z", "sim_operator", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791556, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.702] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:48:16Z", "value" => "UNKNOWN"} [2026-08-21 11:48:50.744] [DEBUG] QUERY OK db=41.9ms queue=0.2ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "UNKNOWN", "sim_number", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791557, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.745] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:48:16Z", "value" => "UNKNOWN"} [2026-08-21 11:48:50.803] [DEBUG] QUERY OK db=57.1ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "UNKNOWN", "sim_iccid", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791558, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.803] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:48:16Z", "value" => "UNKNOWN"} [2026-08-21 11:48:50.826] [DEBUG] QUERY OK db=22.1ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "UNKNOWN", "sim_imsi", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791559, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.826] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:48:16Z", "value" => "UNKNOWN"} [2026-08-21 11:48:50.862] [DEBUG] QUERY OK db=35.1ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "UNKNOWN", "sim_iccid2", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.862] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791560, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.862] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:48:16Z", "value" => "UNKNOWN"} [2026-08-21 11:48:50.908] [DEBUG] QUERY OK db=44.6ms queue=0.4ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "UNKNOWN", "sim_imsi2", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.909] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791561, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.909] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:48:16Z", "value" => "1"} [2026-08-21 11:48:50.950] [DEBUG] QUERY OK db=41.3ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "1", "data_usage_mb", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.951] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791562, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.951] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:48:16Z", "value" => "0"} [2026-08-21 11:48:50.997] [DEBUG] QUERY OK db=45.3ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "0", "mobile_data_mb", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:50.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791563, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:48:50.998] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:48:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:48:51.089] [DEBUG] QUERY OK db=88.9ms queue=0.7ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:16Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77855, ~N[2026-08-21 11:48:50], ~N[2026-08-21 11:48:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:48:51.090] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791564, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:48:16Z", message: nil, status_log_id: 77855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:48:50], updated_at: ~N[2026-08-21 11:48:50]}} [2026-08-21 11:49:16.575] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 11:49:16.575] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T15:49:14Z","org.device":[{"itemkey":"battery","value":50,"timestamp":"2026-08-21T15:49:14Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T15:49:14Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T15:49:14Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T15:49:14Z","message":""}]} [2026-08-21 11:49:16.575] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T15:49:14Z", "value" => 50}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T15:49:14Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T15:49:14Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T15:49:14Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T15:49:14Z"} [2026-08-21 11:49:16.575] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:49:16.576] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1197.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:49:16.576] [INFO ] Terminal updated: 61250415798001 [2026-08-21 11:49:16.601] [DEBUG] QUERY OK source="tms_terminals" db=23.8ms idle=892.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:49:16], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:49:16.602] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=24.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:49:16.639] [DEBUG] QUERY OK source="tms_terminals" db=37.4ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:49:16], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:49:16.678] [DEBUG] QUERY OK db=38.0ms idle=38.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T15:49:14Z", ~N[2026-08-21 11:49:16], ~N[2026-08-21 11:49:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:49:16.678] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77856, oid: "org-id-placeholder", upload_time: "2026-08-21T15:49:14Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:16], updated_at: ~N[2026-08-21 11:49:16]} [2026-08-21 11:49:16.678] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T15:49:14Z", "value" => 50} [2026-08-21 11:49:16.712] [DEBUG] QUERY OK db=33.0ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:49:14Z", "50", "battery", 77856, ~N[2026-08-21 11:49:16], ~N[2026-08-21 11:49:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:16.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791565, itemkey: "battery", value: "50", timestamp: "2026-08-21T15:49:14Z", message: nil, status_log_id: 77856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:16], updated_at: ~N[2026-08-21 11:49:16]}} [2026-08-21 11:49:16.712] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T15:49:14Z", "value" => 50} [2026-08-21 11:49:16.754] [DEBUG] QUERY OK db=40.8ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T15:49:14Z", "50", "memory", 77856, ~N[2026-08-21 11:49:16], ~N[2026-08-21 11:49:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:16.755] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791566, itemkey: "memory", value: "50", timestamp: "2026-08-21T15:49:14Z", message: "Normal", status_log_id: 77856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:16], updated_at: ~N[2026-08-21 11:49:16]}} [2026-08-21 11:49:16.755] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T15:49:14Z", "value" => 50} [2026-08-21 11:49:16.790] [DEBUG] QUERY OK db=35.1ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:49:14Z", "50", "cpu", 77856, ~N[2026-08-21 11:49:16], ~N[2026-08-21 11:49:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:16.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791567, itemkey: "cpu", value: "50", timestamp: "2026-08-21T15:49:14Z", message: nil, status_log_id: 77856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:16], updated_at: ~N[2026-08-21 11:49:16]}} [2026-08-21 11:49:16.791] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T15:49:14Z", "value" => "online"} [2026-08-21 11:49:16.841] [DEBUG] QUERY OK db=48.9ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:49:14Z", "online", "network", 77856, ~N[2026-08-21 11:49:16], ~N[2026-08-21 11:49:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:16.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791568, itemkey: "network", value: "online", timestamp: "2026-08-21T15:49:14Z", message: nil, status_log_id: 77856, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:16], updated_at: ~N[2026-08-21 11:49:16]}} [2026-08-21 11:49:16.841] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 11:49:19.584] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:49:19.584] [INFO ] Incoming JSON payload: {"oid":"ae9c2ccd-e662-4644-945b-afc1571f6ac7","sn":"98251226730002","uploadTime":"2026-08-21T11:48:46Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"ram_free_mb","value":"998","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:48:46Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:49:19.588] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ae9c2ccd-e662-4644-945b-afc1571f6ac7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:48:46Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:48:46Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:48:46Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:48:46Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:48:46Z", "value" => "998"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:48:46Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:48:46Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:48:46Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:48:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:48:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:48:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:48:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:48:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:48:46Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:48:46Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:48:46Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:48:46Z", "vendor" => "morefun"} [2026-08-21 11:49:19.588] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:49:19.589] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:49:19.589] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:49:19.597] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms idle=1533.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-08-21 11:49:19.599] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=903.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:49:19.601] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:49:19.603] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=4.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:49:19.603] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:49:19.649] [DEBUG] QUERY OK source="tms_terminals" db=40.7ms idle=9.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:49:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:49:19.650] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:49:19.657] [DEBUG] QUERY OK source="tms_terminals" db=6.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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:49:19.714] [DEBUG] QUERY OK source="tms_terminals" db=56.9ms queue=0.1ms idle=7.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:49:19], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:49:19.760] [DEBUG] QUERY OK db=45.5ms idle=16.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "ae9c2ccd-e662-4644-945b-afc1571f6ac7", "2026-08-21T11:48:46Z", ~N[2026-08-21 11:49:19], ~N[2026-08-21 11:49:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:49:19.760] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77857, oid: "ae9c2ccd-e662-4644-945b-afc1571f6ac7", upload_time: "2026-08-21T11:48:46Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:19], updated_at: ~N[2026-08-21 11:49:19]} [2026-08-21 11:49:19.760] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:48:46Z", "value" => "morefun"} [2026-08-21 11:49:19.801] [DEBUG] QUERY OK db=39.7ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "morefun", "vendor", 77857, ~N[2026-08-21 11:49:19], ~N[2026-08-21 11:49:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:19.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791569, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:19], updated_at: ~N[2026-08-21 11:49:19]}} [2026-08-21 11:49:19.802] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:48:46Z", "value" => "kiosk_launcher"} [2026-08-21 11:49:19.844] [DEBUG] QUERY OK db=42.6ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "kiosk_launcher", "model", 77857, ~N[2026-08-21 11:49:19], ~N[2026-08-21 11:49:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:19.845] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791570, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:19], updated_at: ~N[2026-08-21 11:49:19]}} [2026-08-21 11:49:19.847] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:48:46Z", "value" => "1.0"} [2026-08-21 11:49:19.893] [DEBUG] QUERY OK db=45.3ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "1.0", "app_version", 77857, ~N[2026-08-21 11:49:19], ~N[2026-08-21 11:49:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:19.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791571, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:19], updated_at: ~N[2026-08-21 11:49:19]}} [2026-08-21 11:49:19.893] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:48:46Z", "value" => "13"} [2026-08-21 11:49:19.937] [DEBUG] QUERY OK db=43.7ms queue=0.1ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "13", "android_version", 77857, ~N[2026-08-21 11:49:19], ~N[2026-08-21 11:49:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:19.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791572, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:19], updated_at: ~N[2026-08-21 11:49:19]}} [2026-08-21 11:49:19.938] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:48:46Z", "value" => "998"} [2026-08-21 11:49:19.975] [DEBUG] QUERY OK db=36.9ms queue=0.1ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "998", "ram_free_mb", 77857, ~N[2026-08-21 11:49:19], ~N[2026-08-21 11:49:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:19.975] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791573, itemkey: "ram_free_mb", value: "998", timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:19], updated_at: ~N[2026-08-21 11:49:19]}} [2026-08-21 11:49:19.975] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:48:46Z", "value" => "WIFI"} [2026-08-21 11:49:20.079] [DEBUG] QUERY OK db=103.0ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "WIFI", "network_type", 77857, ~N[2026-08-21 11:49:19], ~N[2026-08-21 11:49:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.079] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791574, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:19], updated_at: ~N[2026-08-21 11:49:19]}} [2026-08-21 11:49:20.079] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:48:46Z", "value" => "true"} [2026-08-21 11:49:20.135] [DEBUG] QUERY OK db=55.7ms idle=104.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "true", "kiosk_active", 77857, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.136] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791575, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.136] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:48:46Z", "value" => ""} [2026-08-21 11:49:20.256] [DEBUG] QUERY OK db=119.4ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:48:46Z", "sim_operator", 77857, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791576, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.256] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:48:46Z", "value" => "UNKNOWN"} [2026-08-21 11:49:20.285] [DEBUG] QUERY OK db=28.6ms idle=121.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "UNKNOWN", "sim_number", 77857, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.286] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791577, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.286] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:48:46Z", "value" => "UNKNOWN"} [2026-08-21 11:49:20.348] [DEBUG] QUERY OK db=61.4ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "UNKNOWN", "sim_iccid", 77857, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791578, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.348] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:48:46Z", "value" => "UNKNOWN"} [2026-08-21 11:49:20.379] [DEBUG] QUERY OK db=30.6ms idle=63.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "UNKNOWN", "sim_imsi", 77857, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791579, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.379] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:48:46Z", "value" => "UNKNOWN"} [2026-08-21 11:49:20.417] [DEBUG] QUERY OK db=37.6ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "UNKNOWN", "sim_iccid2", 77857, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791580, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.418] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:48:46Z", "value" => "UNKNOWN"} [2026-08-21 11:49:20.452] [DEBUG] QUERY OK db=33.1ms queue=0.1ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "UNKNOWN", "sim_imsi2", 77857, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791581, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.452] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:48:46Z", "value" => "1"} [2026-08-21 11:49:20.491] [DEBUG] QUERY OK db=38.4ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "1", "data_usage_mb", 77857, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791582, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.491] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:48:46Z", "value" => "0"} [2026-08-21 11:49:20.544] [DEBUG] QUERY OK db=52.4ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "0", "mobile_data_mb", 77857, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.545] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791583, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.546] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:48:46Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:49:20.609] [DEBUG] QUERY OK db=62.2ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:48:46Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77857, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791584, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:48:46Z", message: nil, status_log_id: 77857, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.610] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:49:20.610] [INFO ] Incoming JSON payload: {"oid":"87706640-9703-473d-8664-5e04654bea0f","sn":"98251226730001","uploadTime":"2026-08-21T11:49:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:49:19Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:49:20.611] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "87706640-9703-473d-8664-5e04654bea0f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:49:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:49:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:49:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:49:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:49:19Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:49:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:49:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:49:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:49:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:49:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:49:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:49:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:49:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:49:19Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:49:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:49:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:49:19Z", "vendor" => "morefun"} [2026-08-21 11:49:20.611] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:49:20.611] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:49:20.611] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:49:20.612] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=66.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 11:49:20.613] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=3.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:49:20.613] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:49:20.614] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:49:20.614] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:49:20.653] [DEBUG] QUERY OK source="tms_terminals" db=38.4ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:49:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:49:20.653] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:49:20.654] [DEBUG] QUERY OK source="tms_terminals" db=0.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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:49:20.696] [DEBUG] QUERY OK source="tms_terminals" db=41.0ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:49:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:49:20.738] [DEBUG] QUERY OK db=41.4ms idle=42.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "87706640-9703-473d-8664-5e04654bea0f", "2026-08-21T11:49:19Z", ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:49:20.738] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77858, oid: "87706640-9703-473d-8664-5e04654bea0f", upload_time: "2026-08-21T11:49:19Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]} [2026-08-21 11:49:20.740] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:49:19Z", "value" => "morefun"} [2026-08-21 11:49:20.775] [DEBUG] QUERY OK db=34.4ms queue=0.1ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "morefun", "vendor", 77858, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791585, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.775] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:49:19Z", "value" => "kiosk_launcher"} [2026-08-21 11:49:20.800] [DEBUG] QUERY OK db=24.4ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "kiosk_launcher", "model", 77858, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791586, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.801] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:49:19Z", "value" => "1.0"} [2026-08-21 11:49:20.858] [DEBUG] QUERY OK db=57.1ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "1.0", "app_version", 77858, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791587, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.859] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:49:19Z", "value" => "13"} [2026-08-21 11:49:20.883] [DEBUG] QUERY OK db=23.4ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "13", "android_version", 77858, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791588, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.884] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:49:19Z", "value" => "921"} [2026-08-21 11:49:20.919] [DEBUG] QUERY OK db=34.2ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "921", "ram_free_mb", 77858, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791589, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.919] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:49:19Z", "value" => "WIFI"} [2026-08-21 11:49:20.974] [DEBUG] QUERY OK db=54.4ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "WIFI", "network_type", 77858, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:20.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791590, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:20.974] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:49:19Z", "value" => "true"} [2026-08-21 11:49:21.094] [DEBUG] QUERY OK db=118.9ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "true", "kiosk_active", 77858, ~N[2026-08-21 11:49:20], ~N[2026-08-21 11:49:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:21.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791591, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:20], updated_at: ~N[2026-08-21 11:49:20]}} [2026-08-21 11:49:21.094] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:49:19Z", "value" => ""} [2026-08-21 11:49:21.130] [DEBUG] QUERY OK db=35.1ms idle=121.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:49:19Z", "sim_operator", 77858, ~N[2026-08-21 11:49:21], ~N[2026-08-21 11:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:21.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791592, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:21], updated_at: ~N[2026-08-21 11:49:21]}} [2026-08-21 11:49:21.130] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:49:19Z", "value" => "UNKNOWN"} [2026-08-21 11:49:21.154] [DEBUG] QUERY OK db=22.7ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "UNKNOWN", "sim_number", 77858, ~N[2026-08-21 11:49:21], ~N[2026-08-21 11:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:21.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791593, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:21], updated_at: ~N[2026-08-21 11:49:21]}} [2026-08-21 11:49:21.154] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:49:19Z", "value" => "UNKNOWN"} [2026-08-21 11:49:21.194] [DEBUG] QUERY OK db=39.5ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "UNKNOWN", "sim_iccid", 77858, ~N[2026-08-21 11:49:21], ~N[2026-08-21 11:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:21.194] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791594, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:21], updated_at: ~N[2026-08-21 11:49:21]}} [2026-08-21 11:49:21.195] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:49:19Z", "value" => "UNKNOWN"} [2026-08-21 11:49:21.227] [DEBUG] QUERY OK db=32.4ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "UNKNOWN", "sim_imsi", 77858, ~N[2026-08-21 11:49:21], ~N[2026-08-21 11:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:21.228] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791595, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:21], updated_at: ~N[2026-08-21 11:49:21]}} [2026-08-21 11:49:21.228] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:49:19Z", "value" => "UNKNOWN"} [2026-08-21 11:49:21.252] [DEBUG] QUERY OK db=23.1ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "UNKNOWN", "sim_iccid2", 77858, ~N[2026-08-21 11:49:21], ~N[2026-08-21 11:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:21.253] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791596, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:21], updated_at: ~N[2026-08-21 11:49:21]}} [2026-08-21 11:49:21.254] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:49:19Z", "value" => "UNKNOWN"} [2026-08-21 11:49:21.310] [DEBUG] QUERY OK db=55.4ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "UNKNOWN", "sim_imsi2", 77858, ~N[2026-08-21 11:49:21], ~N[2026-08-21 11:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:21.310] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791597, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:21], updated_at: ~N[2026-08-21 11:49:21]}} [2026-08-21 11:49:21.310] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:49:19Z", "value" => "35"} [2026-08-21 11:49:21.343] [DEBUG] QUERY OK db=32.8ms idle=58.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "35", "data_usage_mb", 77858, ~N[2026-08-21 11:49:21], ~N[2026-08-21 11:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:21.344] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791598, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:21], updated_at: ~N[2026-08-21 11:49:21]}} [2026-08-21 11:49:21.344] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:49:19Z", "value" => "0"} [2026-08-21 11:49:21.381] [DEBUG] QUERY OK db=37.0ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "0", "mobile_data_mb", 77858, ~N[2026-08-21 11:49:21], ~N[2026-08-21 11:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:21.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791599, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:21], updated_at: ~N[2026-08-21 11:49:21]}} [2026-08-21 11:49:21.382] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:49:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:49:21.435] [DEBUG] QUERY OK db=52.2ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:19Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77858, ~N[2026-08-21 11:49:21], ~N[2026-08-21 11:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:21.436] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791600, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:49:19Z", message: nil, status_log_id: 77858, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:21], updated_at: ~N[2026-08-21 11:49:21]}} [2026-08-21 11:49:49.727] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:49:49.727] [INFO ] Incoming JSON payload: {"oid":"ed3dff8c-9180-46d1-baad-70e2557bd136","sn":"98251226730001","uploadTime":"2026-08-21T11:49:49Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"ram_free_mb","value":"920","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:49:49Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:49:49.728] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ed3dff8c-9180-46d1-baad-70e2557bd136", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:49:49Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:49:49Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:49:49Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:49:49Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:49:49Z", "value" => "920"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:49:49Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:49:49Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:49:49Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:49:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:49:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:49:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:49:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:49:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:49:49Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:49:49Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:49:49Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:49:49Z", "vendor" => "morefun"} [2026-08-21 11:49:49.728] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:49:49.729] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:49:49.729] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:49:49.730] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1661.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-08-21 11:49:49.731] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.3ms idle=894.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-08-21 11:49:49.731] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:49:49.732] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:49:49.732] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:49:50.069] [DEBUG] QUERY OK source="tms_terminals" db=335.2ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:49:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:49:50.069] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:49:50.070] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=230.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-08-21 11:49:50.202] [DEBUG] QUERY OK source="tms_terminals" db=130.4ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:49:50], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:49:50.255] [DEBUG] QUERY OK db=51.9ms queue=0.1ms idle=132.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ed3dff8c-9180-46d1-baad-70e2557bd136", "2026-08-21T11:49:49Z", ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:49:50.256] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77859, oid: "ed3dff8c-9180-46d1-baad-70e2557bd136", upload_time: "2026-08-21T11:49:49Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]} [2026-08-21 11:49:50.256] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:49:49Z", "value" => "morefun"} [2026-08-21 11:49:50.316] [DEBUG] QUERY OK db=59.5ms idle=54.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "morefun", "vendor", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:50.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791601, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:50.318] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:49:49Z", "value" => "kiosk_launcher"} [2026-08-21 11:49:50.356] [DEBUG] QUERY OK db=37.2ms queue=0.6ms idle=63.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "kiosk_launcher", "model", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:50.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791602, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:50.357] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:49:49Z", "value" => "1.0"} [2026-08-21 11:49:50.407] [DEBUG] QUERY OK db=49.6ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "1.0", "app_version", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:50.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791603, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:50.408] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:49:49Z", "value" => "13"} [2026-08-21 11:49:50.444] [DEBUG] QUERY OK db=36.0ms queue=0.1ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "13", "android_version", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:50.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791604, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:50.445] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:49:49Z", "value" => "920"} [2026-08-21 11:49:50.502] [DEBUG] QUERY OK db=56.8ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "920", "ram_free_mb", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:50.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791605, itemkey: "ram_free_mb", value: "920", timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:50.503] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:49:49Z", "value" => "WIFI"} [2026-08-21 11:49:50.551] [DEBUG] QUERY OK db=47.6ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "WIFI", "network_type", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:50.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791606, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:50.551] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:49:49Z", "value" => "true"} [2026-08-21 11:49:50.593] [DEBUG] QUERY OK db=40.8ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "true", "kiosk_active", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:50.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791607, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:50.594] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:49:49Z", "value" => ""} [2026-08-21 11:49:50.664] [DEBUG] QUERY OK db=70.1ms queue=0.1ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:49:49Z", "sim_operator", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:50.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791608, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:50.665] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:49:49Z", "value" => "UNKNOWN"} [2026-08-21 11:49:50.706] [DEBUG] QUERY OK db=40.0ms queue=0.6ms idle=71.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "UNKNOWN", "sim_number", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:50.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791609, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:50.706] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:49:49Z", "value" => "UNKNOWN"} [2026-08-21 11:49:50.738] [DEBUG] QUERY OK db=31.4ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "UNKNOWN", "sim_iccid", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:50.738] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791610, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:50.739] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:49:49Z", "value" => "UNKNOWN"} [2026-08-21 11:49:50.783] [DEBUG] QUERY OK db=43.3ms queue=0.2ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "UNKNOWN", "sim_imsi", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:50.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791611, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:50.783] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:49:49Z", "value" => "UNKNOWN"} [2026-08-21 11:49:50.860] [DEBUG] QUERY OK db=75.8ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "UNKNOWN", "sim_iccid2", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:50.860] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791612, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:50.860] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:49:49Z", "value" => "UNKNOWN"} [2026-08-21 11:49:50.943] [DEBUG] QUERY OK db=80.8ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "UNKNOWN", "sim_imsi2", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:50.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791613, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:50.943] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:49:49Z", "value" => "35"} [2026-08-21 11:49:50.973] [DEBUG] QUERY OK db=29.2ms queue=0.1ms idle=84.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "35", "data_usage_mb", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:50.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791614, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:50.973] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:49:49Z", "value" => "0"} [2026-08-21 11:49:51.030] [DEBUG] QUERY OK db=56.4ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "0", "mobile_data_mb", 77859, ~N[2026-08-21 11:49:50], ~N[2026-08-21 11:49:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.031] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791615, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:50], updated_at: ~N[2026-08-21 11:49:50]}} [2026-08-21 11:49:51.031] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:49:49Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:49:51.084] [DEBUG] QUERY OK db=52.0ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:49Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77859, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.085] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791616, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:49:49Z", message: nil, status_log_id: 77859, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.086] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:49:51.086] [INFO ] Incoming JSON payload: {"oid":"0c0345c4-a0a4-4938-925b-2d4834e32f6c","sn":"98251226730002","uploadTime":"2026-08-21T11:49:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"ram_free_mb","value":"996","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:49:16Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:49:51.086] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0c0345c4-a0a4-4938-925b-2d4834e32f6c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:49:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:49:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:49:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:49:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:49:16Z", "value" => "996"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:49:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:49:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:49:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:49:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:49:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:49:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:49:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:49:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:49:16Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:49:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:49:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:49:16Z", "vendor" => "morefun"} [2026-08-21 11:49:51.086] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:49:51.087] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:49:51.087] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:49:51.087] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=56.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-08-21 11:49:51.088] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=3.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:49:51.088] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:49:51.090] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:49:51.090] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:49:51.127] [DEBUG] QUERY OK source="tms_terminals" db=36.3ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:49:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:49:51.127] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:49:51.128] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=37.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:49:51.170] [DEBUG] QUERY OK source="tms_terminals" db=42.5ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:49:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:49:51.204] [DEBUG] QUERY OK db=32.8ms idle=43.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "0c0345c4-a0a4-4938-925b-2d4834e32f6c", "2026-08-21T11:49:16Z", ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:49:51.204] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77860, oid: "0c0345c4-a0a4-4938-925b-2d4834e32f6c", upload_time: "2026-08-21T11:49:16Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]} [2026-08-21 11:49:51.204] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:49:16Z", "value" => "morefun"} [2026-08-21 11:49:51.257] [DEBUG] QUERY OK db=52.2ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:16Z", "morefun", "vendor", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791617, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.257] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:49:16Z", "value" => "kiosk_launcher"} [2026-08-21 11:49:51.306] [DEBUG] QUERY OK db=48.0ms idle=54.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:16Z", "kiosk_launcher", "model", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791618, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.306] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:49:16Z", "value" => "1.0"} [2026-08-21 11:49:51.331] [DEBUG] QUERY OK db=23.8ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:16Z", "1.0", "app_version", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.331] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791619, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.331] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:49:16Z", "value" => "13"} [2026-08-21 11:49:51.388] [DEBUG] QUERY OK db=56.7ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:16Z", "13", "android_version", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791620, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.389] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:49:16Z", "value" => "996"} [2026-08-21 11:49:51.421] [DEBUG] QUERY OK db=31.9ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:16Z", "996", "ram_free_mb", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791621, itemkey: "ram_free_mb", value: "996", timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.421] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:49:16Z", "value" => "WIFI"} [2026-08-21 11:49:51.452] [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-08-21T11:49:16Z", "WIFI", "network_type", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791622, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.452] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:49:16Z", "value" => "true"} [2026-08-21 11:49:51.486] [DEBUG] QUERY OK db=33.2ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:16Z", "true", "kiosk_active", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791623, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.486] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:49:16Z", "value" => ""} [2026-08-21 11:49:51.522] [DEBUG] QUERY OK db=35.4ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:49:16Z", "sim_operator", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791624, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.523] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:49:16Z", "value" => "UNKNOWN"} [2026-08-21 11:49:51.554] [DEBUG] QUERY OK db=30.1ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:16Z", "UNKNOWN", "sim_number", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791625, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.554] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:49:16Z", "value" => "UNKNOWN"} [2026-08-21 11:49:51.622] [DEBUG] QUERY OK db=66.9ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:16Z", "UNKNOWN", "sim_iccid", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791626, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.622] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:49:16Z", "value" => "UNKNOWN"} [2026-08-21 11:49:51.669] [DEBUG] QUERY OK db=46.8ms idle=69.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:16Z", "UNKNOWN", "sim_imsi", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791627, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.670] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:49:16Z", "value" => "UNKNOWN"} [2026-08-21 11:49:51.707] [DEBUG] QUERY OK db=36.8ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:16Z", "UNKNOWN", "sim_iccid2", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791628, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.708] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:49:16Z", "value" => "UNKNOWN"} [2026-08-21 11:49:51.811] [DEBUG] QUERY OK db=103.1ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:16Z", "UNKNOWN", "sim_imsi2", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791629, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.811] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:49:16Z", "value" => "1"} [2026-08-21 11:49:51.867] [DEBUG] QUERY OK db=55.0ms idle=104.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:16Z", "1", "data_usage_mb", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791630, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.870] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:49:16Z", "value" => "0"} [2026-08-21 11:49:51.904] [DEBUG] QUERY OK db=32.6ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:16Z", "0", "mobile_data_mb", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.905] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791631, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:49:51.907] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:49:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:49:51.947] [DEBUG] QUERY OK db=38.7ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:16Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77860, ~N[2026-08-21 11:49:51], ~N[2026-08-21 11:49:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:49:51.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791632, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:49:16Z", message: nil, status_log_id: 77860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:49:51], updated_at: ~N[2026-08-21 11:49:51]}} [2026-08-21 11:50:19.854] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:50:19.854] [INFO ] Incoming JSON payload: {"oid":"e46a5787-c764-4951-aa3c-e9ea378a046d","sn":"98251226730001","uploadTime":"2026-08-21T11:50:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:50:19Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:50:19.855] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e46a5787-c764-4951-aa3c-e9ea378a046d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:50:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:50:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:50:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:50:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:50:19Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:50:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:50:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:50:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:50:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:50:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:50:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:50:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:50:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:50:19Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:50:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:50:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:50:19Z", "vendor" => "morefun"} [2026-08-21 11:50:19.856] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:50:19.856] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:50:19.856] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:50:19.857] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1779.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-08-21 11:50:19.857] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=809.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-08-21 11:50:19.858] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:50:19.859] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:50:19.859] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:50:19.897] [DEBUG] QUERY OK source="tms_terminals" db=37.8ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:50:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:50:19.897] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:50:19.899] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=39.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 11:50:19.933] [DEBUG] QUERY OK source="tms_terminals" db=33.5ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:50:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:50:19.967] [DEBUG] QUERY OK db=33.2ms idle=34.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e46a5787-c764-4951-aa3c-e9ea378a046d", "2026-08-21T11:50:19Z", ~N[2026-08-21 11:50:19], ~N[2026-08-21 11:50:19]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:50:19.967] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77861, oid: "e46a5787-c764-4951-aa3c-e9ea378a046d", upload_time: "2026-08-21T11:50:19Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:19], updated_at: ~N[2026-08-21 11:50:19]} [2026-08-21 11:50:19.967] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:50:19Z", "value" => "morefun"} [2026-08-21 11:50:20.006] [DEBUG] QUERY OK db=38.2ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "morefun", "vendor", 77861, ~N[2026-08-21 11:50:19], ~N[2026-08-21 11:50:19]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.007] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791633, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:19], updated_at: ~N[2026-08-21 11:50:19]}} [2026-08-21 11:50:20.007] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:50:19Z", "value" => "kiosk_launcher"} [2026-08-21 11:50:20.068] [DEBUG] QUERY OK db=60.0ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "kiosk_launcher", "model", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791634, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.068] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:50:19Z", "value" => "1.0"} [2026-08-21 11:50:20.108] [DEBUG] QUERY OK db=39.7ms idle=18.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "1.0", "app_version", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791635, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.109] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:50:19Z", "value" => "13"} [2026-08-21 11:50:20.153] [DEBUG] QUERY OK db=43.2ms queue=0.1ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "13", "android_version", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791636, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.155] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:50:19Z", "value" => "917"} [2026-08-21 11:50:20.213] [DEBUG] QUERY OK db=55.8ms queue=0.1ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "917", "ram_free_mb", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791637, itemkey: "ram_free_mb", value: "917", timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.214] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:50:19Z", "value" => "WIFI"} [2026-08-21 11:50:20.262] [DEBUG] QUERY OK db=47.3ms idle=61.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "WIFI", "network_type", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.263] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791638, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.263] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:50:19Z", "value" => "true"} [2026-08-21 11:50:20.316] [DEBUG] QUERY OK db=52.8ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "true", "kiosk_active", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791639, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.316] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:50:19Z", "value" => ""} [2026-08-21 11:50:20.377] [DEBUG] QUERY OK db=59.7ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:50:19Z", "sim_operator", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791640, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.377] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:50:19Z", "value" => "UNKNOWN"} [2026-08-21 11:50:20.428] [DEBUG] QUERY OK db=50.9ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "UNKNOWN", "sim_number", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791641, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.430] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:50:19Z", "value" => "UNKNOWN"} [2026-08-21 11:50:20.484] [DEBUG] QUERY OK db=53.1ms idle=54.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "UNKNOWN", "sim_iccid", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791642, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.484] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:50:19Z", "value" => "UNKNOWN"} [2026-08-21 11:50:20.515] [DEBUG] QUERY OK db=30.2ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "UNKNOWN", "sim_imsi", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791643, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.515] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:50:19Z", "value" => "UNKNOWN"} [2026-08-21 11:50:20.573] [DEBUG] QUERY OK db=57.7ms queue=0.1ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "UNKNOWN", "sim_iccid2", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791644, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.574] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:50:19Z", "value" => "UNKNOWN"} [2026-08-21 11:50:20.631] [DEBUG] QUERY OK db=57.1ms idle=59.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "UNKNOWN", "sim_imsi2", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791645, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.633] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:50:19Z", "value" => "35"} [2026-08-21 11:50:20.670] [DEBUG] QUERY OK db=36.3ms idle=60.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "35", "data_usage_mb", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791646, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.671] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:50:19Z", "value" => "0"} [2026-08-21 11:50:20.720] [DEBUG] QUERY OK db=48.8ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "0", "mobile_data_mb", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.720] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791647, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.721] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:50:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:50:20.789] [DEBUG] QUERY OK db=66.3ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:19Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77861, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:20.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791648, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:50:19Z", message: nil, status_log_id: 77861, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:20.789] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:50:20.790] [INFO ] Incoming JSON payload: {"oid":"021f701d-ea6a-486e-bee2-9028a5049316","sn":"98251226730002","uploadTime":"2026-08-21T11:49:46Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"ram_free_mb","value":"992","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:49:46Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:50:20.792] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "021f701d-ea6a-486e-bee2-9028a5049316", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:49:46Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:49:46Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:49:46Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:49:46Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:49:46Z", "value" => "992"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:49:46Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:49:46Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:49:46Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:49:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:49:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:49:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:49:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:49:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:49:46Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:49:46Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:49:46Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:49:46Z", "vendor" => "morefun"} [2026-08-21 11:50:20.792] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:50:20.792] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:50:20.792] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:50:20.793] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=72.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-08-21 11:50:20.794] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=5.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:50:20.794] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:50:20.795] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:50:20.796] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:50:20.830] [DEBUG] QUERY OK source="tms_terminals" db=33.3ms queue=0.4ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:50:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:50:20.830] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:50:20.832] [DEBUG] QUERY OK source="tms_terminals" db=1.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 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:50:20.888] [DEBUG] QUERY OK source="tms_terminals" db=55.3ms queue=0.1ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:50:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:50:20.943] [DEBUG] QUERY OK db=54.5ms idle=56.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "021f701d-ea6a-486e-bee2-9028a5049316", "2026-08-21T11:49:46Z", ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:50:20.944] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77862, oid: "021f701d-ea6a-486e-bee2-9028a5049316", upload_time: "2026-08-21T11:49:46Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]} [2026-08-21 11:50:20.944] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:49:46Z", "value" => "morefun"} [2026-08-21 11:50:21.000] [DEBUG] QUERY OK db=51.8ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "morefun", "vendor", 77862, ~N[2026-08-21 11:50:20], ~N[2026-08-21 11:50:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791649, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:20], updated_at: ~N[2026-08-21 11:50:20]}} [2026-08-21 11:50:21.000] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:49:46Z", "value" => "kiosk_launcher"} [2026-08-21 11:50:21.034] [DEBUG] QUERY OK db=32.9ms queue=0.1ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "kiosk_launcher", "model", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791650, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:21.035] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:49:46Z", "value" => "1.0"} [2026-08-21 11:50:21.078] [DEBUG] QUERY OK db=41.2ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "1.0", "app_version", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791651, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:21.078] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:49:46Z", "value" => "13"} [2026-08-21 11:50:21.103] [DEBUG] QUERY OK db=24.6ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "13", "android_version", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791652, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:21.108] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:49:46Z", "value" => "992"} [2026-08-21 11:50:21.148] [DEBUG] QUERY OK db=39.2ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "992", "ram_free_mb", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791653, itemkey: "ram_free_mb", value: "992", timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:21.149] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:49:46Z", "value" => "WIFI"} [2026-08-21 11:50:21.187] [DEBUG] QUERY OK db=37.4ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "WIFI", "network_type", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791654, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:21.187] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:49:46Z", "value" => "true"} [2026-08-21 11:50:21.227] [DEBUG] QUERY OK db=38.9ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "true", "kiosk_active", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.227] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791655, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:21.227] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:49:46Z", "value" => ""} [2026-08-21 11:50:21.261] [DEBUG] QUERY OK db=33.5ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:49:46Z", "sim_operator", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791656, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:21.264] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:49:46Z", "value" => "UNKNOWN"} [2026-08-21 11:50:21.327] [DEBUG] QUERY OK db=62.6ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "UNKNOWN", "sim_number", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.327] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791657, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:21.327] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:49:46Z", "value" => "UNKNOWN"} [2026-08-21 11:50:21.378] [DEBUG] QUERY OK db=49.1ms idle=66.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "UNKNOWN", "sim_iccid", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791658, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:21.378] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:49:46Z", "value" => "UNKNOWN"} [2026-08-21 11:50:21.408] [DEBUG] QUERY OK db=29.2ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "UNKNOWN", "sim_imsi", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791659, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:21.408] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:49:46Z", "value" => "UNKNOWN"} [2026-08-21 11:50:21.473] [DEBUG] QUERY OK db=63.1ms queue=1.1ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "UNKNOWN", "sim_iccid2", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791660, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:21.473] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:49:46Z", "value" => "UNKNOWN"} [2026-08-21 11:50:21.504] [DEBUG] QUERY OK db=30.5ms idle=65.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "UNKNOWN", "sim_imsi2", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791661, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:21.505] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:49:46Z", "value" => "1"} [2026-08-21 11:50:21.543] [DEBUG] QUERY OK db=38.1ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "1", "data_usage_mb", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.545] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791662, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:21.545] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:49:46Z", "value" => "0"} [2026-08-21 11:50:21.617] [DEBUG] QUERY OK db=70.8ms queue=0.2ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "0", "mobile_data_mb", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791663, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:21.618] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:49:46Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:50:21.657] [DEBUG] QUERY OK db=38.4ms idle=75.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:49:46Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77862, ~N[2026-08-21 11:50:21], ~N[2026-08-21 11:50:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:21.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791664, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:49:46Z", message: nil, status_log_id: 77862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:21], updated_at: ~N[2026-08-21 11:50:21]}} [2026-08-21 11:50:50.245] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:50:50.245] [INFO ] Incoming JSON payload: {"oid":"559b63d1-caa6-459e-92c1-665ce133486a","sn":"98251226730002","uploadTime":"2026-08-21T11:50:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"ram_free_mb","value":"989","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:50:16Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:50:50.246] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "559b63d1-caa6-459e-92c1-665ce133486a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:50:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:50:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:50:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:50:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:50:16Z", "value" => "989"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:50:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:50:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:50:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:50:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:50:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:50:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:50:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:50:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:50:16Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:50:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:50:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:50:16Z", "vendor" => "morefun"} [2026-08-21 11:50:50.246] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:50:50.246] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:50:50.246] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:50:50.247] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=880.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-08-21 11:50:50.248] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=162.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-08-21 11:50:50.248] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:50:50.251] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:50:50.251] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:50:50.296] [DEBUG] QUERY OK source="tms_terminals" db=44.7ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:50:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:50:50.296] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:50:50.298] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:50:50.353] [DEBUG] QUERY OK source="tms_terminals" db=54.7ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:50:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:50:50.388] [DEBUG] QUERY OK db=34.5ms idle=56.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "559b63d1-caa6-459e-92c1-665ce133486a", "2026-08-21T11:50:16Z", ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:50:50.389] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77863, oid: "559b63d1-caa6-459e-92c1-665ce133486a", upload_time: "2026-08-21T11:50:16Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]} [2026-08-21 11:50:50.389] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:50:16Z", "value" => "morefun"} [2026-08-21 11:50:50.454] [DEBUG] QUERY OK db=64.2ms idle=17.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:16Z", "morefun", "vendor", 77863, ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:50.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791665, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]}} [2026-08-21 11:50:50.454] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:50:16Z", "value" => "kiosk_launcher"} [2026-08-21 11:50:50.478] [DEBUG] QUERY OK db=22.7ms idle=66.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:16Z", "kiosk_launcher", "model", 77863, ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:50.478] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791666, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]}} [2026-08-21 11:50:50.478] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:50:16Z", "value" => "1.0"} [2026-08-21 11:50:50.513] [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-08-21T11:50:16Z", "1.0", "app_version", 77863, ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:50.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791667, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]}} [2026-08-21 11:50:50.513] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:50:16Z", "value" => "13"} [2026-08-21 11:50:50.549] [DEBUG] QUERY OK db=35.0ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:16Z", "13", "android_version", 77863, ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:50.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791668, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]}} [2026-08-21 11:50:50.549] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:50:16Z", "value" => "989"} [2026-08-21 11:50:50.590] [DEBUG] QUERY OK db=40.5ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:16Z", "989", "ram_free_mb", 77863, ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:50.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791669, itemkey: "ram_free_mb", value: "989", timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]}} [2026-08-21 11:50:50.591] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:50:16Z", "value" => "WIFI"} [2026-08-21 11:50:50.645] [DEBUG] QUERY OK db=51.9ms queue=1.2ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:16Z", "WIFI", "network_type", 77863, ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:50.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791670, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]}} [2026-08-21 11:50:50.645] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:50:16Z", "value" => "true"} [2026-08-21 11:50:50.705] [DEBUG] QUERY OK db=59.5ms idle=54.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:16Z", "true", "kiosk_active", 77863, ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:50.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791671, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]}} [2026-08-21 11:50:50.705] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:50:16Z", "value" => ""} [2026-08-21 11:50:50.749] [DEBUG] QUERY OK db=43.2ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:50:16Z", "sim_operator", 77863, ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:50.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791672, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]}} [2026-08-21 11:50:50.749] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:50:16Z", "value" => "UNKNOWN"} [2026-08-21 11:50:50.811] [DEBUG] QUERY OK db=60.6ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:16Z", "UNKNOWN", "sim_number", 77863, ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:50.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791673, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]}} [2026-08-21 11:50:50.811] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:50:16Z", "value" => "UNKNOWN"} [2026-08-21 11:50:50.847] [DEBUG] QUERY OK db=35.5ms idle=62.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:16Z", "UNKNOWN", "sim_iccid", 77863, ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:50.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791674, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]}} [2026-08-21 11:50:50.848] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:50:16Z", "value" => "UNKNOWN"} [2026-08-21 11:50:50.915] [DEBUG] QUERY OK db=61.8ms queue=5.4ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:16Z", "UNKNOWN", "sim_imsi", 77863, ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:50.916] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791675, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]}} [2026-08-21 11:50:50.916] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:50:16Z", "value" => "UNKNOWN"} [2026-08-21 11:50:50.947] [DEBUG] QUERY OK db=30.0ms idle=70.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:16Z", "UNKNOWN", "sim_iccid2", 77863, ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:50.948] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791676, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]}} [2026-08-21 11:50:50.948] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:50:16Z", "value" => "UNKNOWN"} [2026-08-21 11:50:50.992] [DEBUG] QUERY OK db=43.6ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:16Z", "UNKNOWN", "sim_imsi2", 77863, ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:50.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791677, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]}} [2026-08-21 11:50:50.992] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:50:16Z", "value" => "1"} [2026-08-21 11:50:51.038] [DEBUG] QUERY OK db=45.4ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:16Z", "1", "data_usage_mb", 77863, ~N[2026-08-21 11:50:50], ~N[2026-08-21 11:50:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791678, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:50], updated_at: ~N[2026-08-21 11:50:50]}} [2026-08-21 11:50:51.039] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:50:16Z", "value" => "0"} [2026-08-21 11:50:51.096] [DEBUG] QUERY OK db=56.5ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:16Z", "0", "mobile_data_mb", 77863, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.096] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791679, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.097] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:50:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:50:51.226] [DEBUG] QUERY OK db=127.8ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:16Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77863, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.227] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791680, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:50:16Z", message: nil, status_log_id: 77863, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.227] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:50:51.227] [INFO ] Incoming JSON payload: {"oid":"8754d996-d2fa-4aae-8f1c-62fbac4bcb7e","sn":"98251226730001","uploadTime":"2026-08-21T11:50:49Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:50:49Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:50:51.228] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8754d996-d2fa-4aae-8f1c-62fbac4bcb7e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:50:49Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:50:49Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:50:49Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:50:49Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:50:49Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:50:49Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:50:49Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:50:49Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:50:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:50:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:50:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:50:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:50:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:50:49Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:50:49Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:50:49Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:50:49Z", "vendor" => "morefun"} [2026-08-21 11:50:51.228] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:50:51.229] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:50:51.229] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:50:51.230] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=133.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 11:50:51.231] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=4.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:50:51.231] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:50:51.234] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:50:51.234] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:50:51.262] [DEBUG] QUERY OK source="tms_terminals" db=27.9ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:50:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:50:51.263] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:50:51.265] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.8ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:50:51.334] [DEBUG] QUERY OK source="tms_terminals" db=67.1ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:50:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:50:51.357] [DEBUG] QUERY OK db=23.2ms idle=69.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "8754d996-d2fa-4aae-8f1c-62fbac4bcb7e", "2026-08-21T11:50:49Z", ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:50:51.359] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77864, oid: "8754d996-d2fa-4aae-8f1c-62fbac4bcb7e", upload_time: "2026-08-21T11:50:49Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]} [2026-08-21 11:50:51.359] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:50:49Z", "value" => "morefun"} [2026-08-21 11:50:51.407] [DEBUG] QUERY OK db=47.9ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "morefun", "vendor", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791681, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.408] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:50:49Z", "value" => "kiosk_launcher"} [2026-08-21 11:50:51.460] [DEBUG] QUERY OK db=52.1ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "kiosk_launcher", "model", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791682, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.469] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:50:49Z", "value" => "1.0"} [2026-08-21 11:50:51.523] [DEBUG] QUERY OK db=42.1ms idle=73.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "1.0", "app_version", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791683, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.524] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:50:49Z", "value" => "13"} [2026-08-21 11:50:51.563] [DEBUG] QUERY OK db=39.4ms queue=0.1ms idle=63.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "13", "android_version", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791684, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.564] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:50:49Z", "value" => "917"} [2026-08-21 11:50:51.598] [DEBUG] QUERY OK db=33.3ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "917", "ram_free_mb", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791685, itemkey: "ram_free_mb", value: "917", timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.598] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:50:49Z", "value" => "WIFI"} [2026-08-21 11:50:51.621] [DEBUG] QUERY OK db=22.8ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "WIFI", "network_type", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791686, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.622] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:50:49Z", "value" => "true"} [2026-08-21 11:50:51.668] [DEBUG] QUERY OK db=45.7ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "true", "kiosk_active", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.669] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791687, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.669] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:50:49Z", "value" => ""} [2026-08-21 11:50:51.718] [DEBUG] QUERY OK db=49.2ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:50:49Z", "sim_operator", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791688, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.719] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:50:49Z", "value" => "UNKNOWN"} [2026-08-21 11:50:51.763] [DEBUG] QUERY OK db=43.6ms idle=51.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "UNKNOWN", "sim_number", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791689, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.764] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:50:49Z", "value" => "UNKNOWN"} [2026-08-21 11:50:51.806] [DEBUG] QUERY OK db=41.8ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "UNKNOWN", "sim_iccid", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.806] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791690, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.807] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:50:49Z", "value" => "UNKNOWN"} [2026-08-21 11:50:51.836] [DEBUG] QUERY OK db=29.3ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "UNKNOWN", "sim_imsi", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791691, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.837] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:50:49Z", "value" => "UNKNOWN"} [2026-08-21 11:50:51.875] [DEBUG] QUERY OK db=38.4ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "UNKNOWN", "sim_iccid2", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.876] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791692, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.876] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:50:49Z", "value" => "UNKNOWN"} [2026-08-21 11:50:51.922] [DEBUG] QUERY OK db=43.7ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "UNKNOWN", "sim_imsi2", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791693, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.923] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:50:49Z", "value" => "35"} [2026-08-21 11:50:51.982] [DEBUG] QUERY OK db=58.8ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "35", "data_usage_mb", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:51.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791694, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:51.982] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:50:49Z", "value" => "0"} [2026-08-21 11:50:52.037] [DEBUG] QUERY OK db=53.6ms queue=0.3ms idle=61.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "0", "mobile_data_mb", 77864, ~N[2026-08-21 11:50:51], ~N[2026-08-21 11:50:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:52.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791695, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:51], updated_at: ~N[2026-08-21 11:50:51]}} [2026-08-21 11:50:52.041] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:50:49Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:50:52.109] [DEBUG] QUERY OK db=63.2ms queue=0.1ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:49Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77864, ~N[2026-08-21 11:50:52], ~N[2026-08-21 11:50:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:50:52.110] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791696, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:50:49Z", message: nil, status_log_id: 77864, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:50:52], updated_at: ~N[2026-08-21 11:50:52]}} [2026-08-21 11:51:20.312] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:51:20.313] [INFO ] Incoming JSON payload: {"oid":"e64362e9-d4a2-4df2-b9a2-4def4c185a62","sn":"98251226730001","uploadTime":"2026-08-21T11:51:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"ram_free_mb","value":"922","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:51:19Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:51:20.314] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e64362e9-d4a2-4df2-b9a2-4def4c185a62", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:51:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:51:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:51:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:51:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:51:19Z", "value" => "922"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:51:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:51:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:51:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:51:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:51:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:51:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:51:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:51:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:51:19Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:51:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:51:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:51:19Z", "vendor" => "morefun"} [2026-08-21 11:51:20.315] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:51:20.316] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:51:20.316] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:51:20.318] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=808.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-08-21 11:51:20.319] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=228.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-08-21 11:51:20.319] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:51:20.319] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:51:20.320] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:51:20.482] [DEBUG] QUERY OK source="tms_terminals" db=161.9ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:51:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:51:20.482] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:51:20.484] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=162.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 11:51:20.531] [DEBUG] QUERY OK source="tms_terminals" db=46.9ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:51:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:51:20.569] [DEBUG] QUERY OK db=36.9ms idle=18.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e64362e9-d4a2-4df2-b9a2-4def4c185a62", "2026-08-21T11:51:19Z", ~N[2026-08-21 11:51:20], ~N[2026-08-21 11:51:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:51:20.569] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77865, oid: "e64362e9-d4a2-4df2-b9a2-4def4c185a62", upload_time: "2026-08-21T11:51:19Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:20], updated_at: ~N[2026-08-21 11:51:20]} [2026-08-21 11:51:20.569] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:51:19Z", "value" => "morefun"} [2026-08-21 11:51:20.615] [DEBUG] QUERY OK db=44.7ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "morefun", "vendor", 77865, ~N[2026-08-21 11:51:20], ~N[2026-08-21 11:51:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:20.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791697, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:20], updated_at: ~N[2026-08-21 11:51:20]}} [2026-08-21 11:51:20.615] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:51:19Z", "value" => "kiosk_launcher"} [2026-08-21 11:51:20.673] [DEBUG] QUERY OK db=57.5ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "kiosk_launcher", "model", 77865, ~N[2026-08-21 11:51:20], ~N[2026-08-21 11:51:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:20.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791698, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:20], updated_at: ~N[2026-08-21 11:51:20]}} [2026-08-21 11:51:20.674] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:51:19Z", "value" => "1.0"} [2026-08-21 11:51:20.717] [DEBUG] QUERY OK db=42.6ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "1.0", "app_version", 77865, ~N[2026-08-21 11:51:20], ~N[2026-08-21 11:51:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:20.717] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791699, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:20], updated_at: ~N[2026-08-21 11:51:20]}} [2026-08-21 11:51:20.717] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:51:19Z", "value" => "13"} [2026-08-21 11:51:20.751] [DEBUG] QUERY OK db=33.8ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "13", "android_version", 77865, ~N[2026-08-21 11:51:20], ~N[2026-08-21 11:51:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:20.754] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791700, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:20], updated_at: ~N[2026-08-21 11:51:20]}} [2026-08-21 11:51:20.754] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:51:19Z", "value" => "922"} [2026-08-21 11:51:20.790] [DEBUG] QUERY OK db=30.4ms queue=0.1ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "922", "ram_free_mb", 77865, ~N[2026-08-21 11:51:20], ~N[2026-08-21 11:51:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:20.790] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791701, itemkey: "ram_free_mb", value: "922", timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:20], updated_at: ~N[2026-08-21 11:51:20]}} [2026-08-21 11:51:20.792] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:51:19Z", "value" => "WIFI"} [2026-08-21 11:51:20.857] [DEBUG] QUERY OK db=61.6ms idle=43.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "WIFI", "network_type", 77865, ~N[2026-08-21 11:51:20], ~N[2026-08-21 11:51:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:20.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791702, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:20], updated_at: ~N[2026-08-21 11:51:20]}} [2026-08-21 11:51:20.857] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:51:19Z", "value" => "true"} [2026-08-21 11:51:20.920] [DEBUG] QUERY OK db=62.4ms idle=67.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "true", "kiosk_active", 77865, ~N[2026-08-21 11:51:20], ~N[2026-08-21 11:51:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:20.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791703, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:20], updated_at: ~N[2026-08-21 11:51:20]}} [2026-08-21 11:51:20.920] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:51:19Z", "value" => ""} [2026-08-21 11:51:20.959] [DEBUG] QUERY OK db=37.8ms idle=63.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:51:19Z", "sim_operator", 77865, ~N[2026-08-21 11:51:20], ~N[2026-08-21 11:51:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:20.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791704, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:20], updated_at: ~N[2026-08-21 11:51:20]}} [2026-08-21 11:51:20.960] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:51:19Z", "value" => "UNKNOWN"} [2026-08-21 11:51:20.999] [DEBUG] QUERY OK db=38.3ms queue=0.3ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "UNKNOWN", "sim_number", 77865, ~N[2026-08-21 11:51:20], ~N[2026-08-21 11:51:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:20.999] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791705, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:20], updated_at: ~N[2026-08-21 11:51:20]}} [2026-08-21 11:51:21.000] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:51:19Z", "value" => "UNKNOWN"} [2026-08-21 11:51:21.034] [DEBUG] QUERY OK db=34.6ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "UNKNOWN", "sim_iccid", 77865, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791706, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.035] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:51:19Z", "value" => "UNKNOWN"} [2026-08-21 11:51:21.092] [DEBUG] QUERY OK db=56.4ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "UNKNOWN", "sim_imsi", 77865, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791707, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.093] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:51:19Z", "value" => "UNKNOWN"} [2026-08-21 11:51:21.117] [DEBUG] QUERY OK db=24.1ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "UNKNOWN", "sim_iccid2", 77865, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.117] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791708, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.118] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:51:19Z", "value" => "UNKNOWN"} [2026-08-21 11:51:21.176] [DEBUG] QUERY OK db=57.2ms queue=0.1ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "UNKNOWN", "sim_imsi2", 77865, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.176] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791709, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.176] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:51:19Z", "value" => "35"} [2026-08-21 11:51:21.202] [DEBUG] QUERY OK db=25.5ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "35", "data_usage_mb", 77865, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.202] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791710, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.203] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:51:19Z", "value" => "0"} [2026-08-21 11:51:21.236] [DEBUG] QUERY OK db=33.4ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "0", "mobile_data_mb", 77865, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791711, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.237] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:51:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:51:21.283] [DEBUG] QUERY OK db=45.0ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:19Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77865, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.286] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791712, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:51:19Z", message: nil, status_log_id: 77865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.286] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:51:21.287] [INFO ] Incoming JSON payload: {"oid":"87fc00f0-d897-42f9-98b0-8ec1237f7ad9","sn":"98251226730002","uploadTime":"2026-08-21T11:50:46Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"ram_free_mb","value":"999","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:50:46Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:51:21.289] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "87fc00f0-d897-42f9-98b0-8ec1237f7ad9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:50:46Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:50:46Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:50:46Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:50:46Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:50:46Z", "value" => "999"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:50:46Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:50:46Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:50:46Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:50:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:50:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:50:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:50:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:50:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:50:46Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:50:46Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:50:46Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:50:46Z", "vendor" => "morefun"} [2026-08-21 11:51:21.289] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:51:21.289] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:51:21.289] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:51:21.291] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.3ms idle=53.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-08-21 11:51:21.293] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.1ms idle=9.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-08-21 11:51:21.293] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:51:21.294] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=2.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:51:21.295] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:51:21.341] [DEBUG] QUERY OK source="tms_terminals" db=46.2ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:51:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:51:21.341] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:51:21.343] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.1ms idle=47.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:51:21.419] [DEBUG] QUERY OK source="tms_terminals" db=75.4ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:51:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:51:21.474] [DEBUG] QUERY OK db=47.0ms queue=2.4ms idle=81.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "87fc00f0-d897-42f9-98b0-8ec1237f7ad9", "2026-08-21T11:50:46Z", ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:51:21.475] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77866, oid: "87fc00f0-d897-42f9-98b0-8ec1237f7ad9", upload_time: "2026-08-21T11:50:46Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]} [2026-08-21 11:51:21.475] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:50:46Z", "value" => "morefun"} [2026-08-21 11:51:21.509] [DEBUG] QUERY OK db=34.1ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "morefun", "vendor", 77866, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791713, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.510] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:50:46Z", "value" => "kiosk_launcher"} [2026-08-21 11:51:21.570] [DEBUG] QUERY OK db=55.2ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "kiosk_launcher", "model", 77866, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791714, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.570] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:50:46Z", "value" => "1.0"} [2026-08-21 11:51:21.605] [DEBUG] QUERY OK db=34.4ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "1.0", "app_version", 77866, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.605] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791715, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.607] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:50:46Z", "value" => "13"} [2026-08-21 11:51:21.655] [DEBUG] QUERY OK db=47.2ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "13", "android_version", 77866, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791716, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.655] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:50:46Z", "value" => "999"} [2026-08-21 11:51:21.694] [DEBUG] QUERY OK db=37.8ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "999", "ram_free_mb", 77866, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791717, itemkey: "ram_free_mb", value: "999", timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.696] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:50:46Z", "value" => "WIFI"} [2026-08-21 11:51:21.754] [DEBUG] QUERY OK db=57.1ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "WIFI", "network_type", 77866, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.754] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791718, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.754] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:50:46Z", "value" => "true"} [2026-08-21 11:51:21.797] [DEBUG] QUERY OK db=42.6ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "true", "kiosk_active", 77866, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.798] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791719, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.798] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:50:46Z", "value" => ""} [2026-08-21 11:51:21.866] [DEBUG] QUERY OK db=67.4ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:50:46Z", "sim_operator", 77866, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791720, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.866] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:50:46Z", "value" => "UNKNOWN"} [2026-08-21 11:51:21.937] [DEBUG] QUERY OK db=69.9ms idle=69.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "UNKNOWN", "sim_number", 77866, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791721, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.939] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:50:46Z", "value" => "UNKNOWN"} [2026-08-21 11:51:21.981] [DEBUG] QUERY OK db=41.2ms idle=73.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "UNKNOWN", "sim_iccid", 77866, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:21.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791722, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:21.981] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:50:46Z", "value" => "UNKNOWN"} [2026-08-21 11:51:22.005] [DEBUG] QUERY OK db=23.3ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "UNKNOWN", "sim_imsi", 77866, ~N[2026-08-21 11:51:21], ~N[2026-08-21 11:51:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:22.005] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791723, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:21], updated_at: ~N[2026-08-21 11:51:21]}} [2026-08-21 11:51:22.005] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:50:46Z", "value" => "UNKNOWN"} [2026-08-21 11:51:22.055] [DEBUG] QUERY OK db=49.7ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "UNKNOWN", "sim_iccid2", 77866, ~N[2026-08-21 11:51:22], ~N[2026-08-21 11:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:22.055] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791724, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:22], updated_at: ~N[2026-08-21 11:51:22]}} [2026-08-21 11:51:22.056] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:50:46Z", "value" => "UNKNOWN"} [2026-08-21 11:51:22.083] [DEBUG] QUERY OK db=24.1ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "UNKNOWN", "sim_imsi2", 77866, ~N[2026-08-21 11:51:22], ~N[2026-08-21 11:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:22.085] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791725, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:22], updated_at: ~N[2026-08-21 11:51:22]}} [2026-08-21 11:51:22.085] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:50:46Z", "value" => "1"} [2026-08-21 11:51:22.165] [DEBUG] QUERY OK db=75.2ms queue=2.5ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "1", "data_usage_mb", 77866, ~N[2026-08-21 11:51:22], ~N[2026-08-21 11:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:22.165] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791726, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:22], updated_at: ~N[2026-08-21 11:51:22]}} [2026-08-21 11:51:22.165] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:50:46Z", "value" => "0"} [2026-08-21 11:51:22.190] [DEBUG] QUERY OK db=24.2ms idle=82.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "0", "mobile_data_mb", 77866, ~N[2026-08-21 11:51:22], ~N[2026-08-21 11:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:22.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791727, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:22], updated_at: ~N[2026-08-21 11:51:22]}} [2026-08-21 11:51:22.194] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:50:46Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:51:22.260] [DEBUG] QUERY OK db=63.3ms queue=1.8ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:50:46Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77866, ~N[2026-08-21 11:51:22], ~N[2026-08-21 11:51:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:22.262] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791728, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:50:46Z", message: nil, status_log_id: 77866, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:22], updated_at: ~N[2026-08-21 11:51:22]}} [2026-08-21 11:51:50.414] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:51:50.414] [INFO ] Incoming JSON payload: {"oid":"f5e02136-fb21-43e7-b739-f46c53fefe63","sn":"98251226730001","uploadTime":"2026-08-21T11:51:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"ram_free_mb","value":"920","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:51:50Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:51:50.416] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f5e02136-fb21-43e7-b739-f46c53fefe63", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:51:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:51:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:51:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:51:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:51:50Z", "value" => "920"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:51:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:51:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:51:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:51:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:51:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:51:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:51:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:51:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:51:50Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:51:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:51:50Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:51:50Z", "vendor" => "morefun"} [2026-08-21 11:51:50.416] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:51:50.416] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:51:50.417] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:51:50.418] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1324.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-08-21 11:51:50.418] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=765.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-08-21 11:51:50.419] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:51:50.420] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:51:50.420] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:51:50.488] [DEBUG] QUERY OK source="tms_terminals" db=68.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:51:50], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:51:50.489] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:51:50.489] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=69.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:51:50.530] [DEBUG] QUERY OK source="tms_terminals" db=38.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:51:50], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:51:50.577] [DEBUG] QUERY OK db=46.1ms idle=40.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "f5e02136-fb21-43e7-b739-f46c53fefe63", "2026-08-21T11:51:50Z", ~N[2026-08-21 11:51:50], ~N[2026-08-21 11:51:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:51:50.577] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77867, oid: "f5e02136-fb21-43e7-b739-f46c53fefe63", upload_time: "2026-08-21T11:51:50Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:50], updated_at: ~N[2026-08-21 11:51:50]} [2026-08-21 11:51:50.577] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:51:50Z", "value" => "morefun"} [2026-08-21 11:51:50.602] [DEBUG] QUERY OK db=23.6ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "morefun", "vendor", 77867, ~N[2026-08-21 11:51:50], ~N[2026-08-21 11:51:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:50.603] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791729, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:50], updated_at: ~N[2026-08-21 11:51:50]}} [2026-08-21 11:51:50.603] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:51:50Z", "value" => "kiosk_launcher"} [2026-08-21 11:51:50.646] [DEBUG] QUERY OK db=42.2ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "kiosk_launcher", "model", 77867, ~N[2026-08-21 11:51:50], ~N[2026-08-21 11:51:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:50.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791730, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:50], updated_at: ~N[2026-08-21 11:51:50]}} [2026-08-21 11:51:50.646] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:51:50Z", "value" => "1.0"} [2026-08-21 11:51:50.712] [DEBUG] QUERY OK db=65.3ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "1.0", "app_version", 77867, ~N[2026-08-21 11:51:50], ~N[2026-08-21 11:51:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:50.713] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791731, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:50], updated_at: ~N[2026-08-21 11:51:50]}} [2026-08-21 11:51:50.713] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:51:50Z", "value" => "13"} [2026-08-21 11:51:50.751] [DEBUG] QUERY OK db=38.1ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "13", "android_version", 77867, ~N[2026-08-21 11:51:50], ~N[2026-08-21 11:51:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:50.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791732, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:50], updated_at: ~N[2026-08-21 11:51:50]}} [2026-08-21 11:51:50.752] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:51:50Z", "value" => "920"} [2026-08-21 11:51:50.788] [DEBUG] QUERY OK db=35.6ms queue=0.1ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "920", "ram_free_mb", 77867, ~N[2026-08-21 11:51:50], ~N[2026-08-21 11:51:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:50.788] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791733, itemkey: "ram_free_mb", value: "920", timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:50], updated_at: ~N[2026-08-21 11:51:50]}} [2026-08-21 11:51:50.788] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:51:50Z", "value" => "WIFI"} [2026-08-21 11:51:50.816] [DEBUG] QUERY OK db=27.6ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "WIFI", "network_type", 77867, ~N[2026-08-21 11:51:50], ~N[2026-08-21 11:51:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:50.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791734, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:50], updated_at: ~N[2026-08-21 11:51:50]}} [2026-08-21 11:51:50.816] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:51:50Z", "value" => "true"} [2026-08-21 11:51:50.864] [DEBUG] QUERY OK db=46.3ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "true", "kiosk_active", 77867, ~N[2026-08-21 11:51:50], ~N[2026-08-21 11:51:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:50.864] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791735, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:50], updated_at: ~N[2026-08-21 11:51:50]}} [2026-08-21 11:51:50.865] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:51:50Z", "value" => ""} [2026-08-21 11:51:50.934] [DEBUG] QUERY OK db=68.6ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:51:50Z", "sim_operator", 77867, ~N[2026-08-21 11:51:50], ~N[2026-08-21 11:51:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:50.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791736, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:50], updated_at: ~N[2026-08-21 11:51:50]}} [2026-08-21 11:51:50.935] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:51:50Z", "value" => "UNKNOWN"} [2026-08-21 11:51:50.980] [DEBUG] QUERY OK db=44.9ms idle=71.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "UNKNOWN", "sim_number", 77867, ~N[2026-08-21 11:51:50], ~N[2026-08-21 11:51:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:50.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791737, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:50], updated_at: ~N[2026-08-21 11:51:50]}} [2026-08-21 11:51:50.982] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:51:50Z", "value" => "UNKNOWN"} [2026-08-21 11:51:51.018] [DEBUG] QUERY OK db=33.5ms queue=1.2ms idle=48.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "UNKNOWN", "sim_iccid", 77867, ~N[2026-08-21 11:51:50], ~N[2026-08-21 11:51:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791738, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:50], updated_at: ~N[2026-08-21 11:51:50]}} [2026-08-21 11:51:51.019] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:51:50Z", "value" => "UNKNOWN"} [2026-08-21 11:51:51.064] [DEBUG] QUERY OK db=44.2ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "UNKNOWN", "sim_imsi", 77867, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.064] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791739, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.064] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:51:50Z", "value" => "UNKNOWN"} [2026-08-21 11:51:51.093] [DEBUG] QUERY OK db=28.5ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "UNKNOWN", "sim_iccid2", 77867, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791740, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.094] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:51:50Z", "value" => "UNKNOWN"} [2026-08-21 11:51:51.125] [DEBUG] QUERY OK db=30.9ms idle=29.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "UNKNOWN", "sim_imsi2", 77867, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.125] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791741, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.125] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:51:50Z", "value" => "35"} [2026-08-21 11:51:51.159] [DEBUG] QUERY OK db=33.2ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "35", "data_usage_mb", 77867, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.159] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791742, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.159] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:51:50Z", "value" => "0"} [2026-08-21 11:51:51.192] [DEBUG] QUERY OK db=32.2ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "0", "mobile_data_mb", 77867, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791743, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.193] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:51:50Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:51:51.237] [DEBUG] QUERY OK db=42.5ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:50Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77867, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.239] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791744, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:51:50Z", message: nil, status_log_id: 77867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.239] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:51:51.239] [INFO ] Incoming JSON payload: {"oid":"f9635656-afa1-42f1-93a9-256c76ccc9de","sn":"98251226730002","uploadTime":"2026-08-21T11:51:16Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"ram_free_mb","value":"997","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:51:16Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:51:51.242] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f9635656-afa1-42f1-93a9-256c76ccc9de", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:51:16Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:51:16Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:51:16Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:51:16Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:51:16Z", "value" => "997"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:51:16Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:51:16Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:51:16Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:51:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:51:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:51:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:51:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:51:16Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:51:16Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:51:16Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:51:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:51:16Z", "vendor" => "morefun"} [2026-08-21 11:51:51.243] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:51:51.243] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:51:51.243] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:51:51.245] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=51.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-08-21 11:51:51.246] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=8.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-08-21 11:51:51.246] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:51:51.249] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms queue=0.1ms idle=2.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:51:51.250] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:51:51.290] [DEBUG] QUERY OK source="tms_terminals" db=39.5ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:51:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:51:51.290] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:51:51.293] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:51:51.348] [DEBUG] QUERY OK source="tms_terminals" db=54.9ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:51:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:51:51.381] [DEBUG] QUERY OK db=31.9ms idle=55.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "f9635656-afa1-42f1-93a9-256c76ccc9de", "2026-08-21T11:51:16Z", ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:51:51.382] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77868, oid: "f9635656-afa1-42f1-93a9-256c76ccc9de", upload_time: "2026-08-21T11:51:16Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]} [2026-08-21 11:51:51.382] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:51:16Z", "value" => "morefun"} [2026-08-21 11:51:51.438] [DEBUG] QUERY OK db=55.3ms queue=0.1ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "morefun", "vendor", 77868, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791745, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.442] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:51:16Z", "value" => "kiosk_launcher"} [2026-08-21 11:51:51.498] [DEBUG] QUERY OK db=55.6ms idle=62.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "kiosk_launcher", "model", 77868, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791746, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.499] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:51:16Z", "value" => "1.0"} [2026-08-21 11:51:51.551] [DEBUG] QUERY OK db=49.7ms queue=0.8ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "1.0", "app_version", 77868, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791747, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.552] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:51:16Z", "value" => "13"} [2026-08-21 11:51:51.710] [DEBUG] QUERY OK db=158.0ms idle=53.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "13", "android_version", 77868, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791748, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.711] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:51:16Z", "value" => "997"} [2026-08-21 11:51:51.756] [DEBUG] QUERY OK db=44.3ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "997", "ram_free_mb", 77868, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791749, itemkey: "ram_free_mb", value: "997", timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.756] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:51:16Z", "value" => "WIFI"} [2026-08-21 11:51:51.801] [DEBUG] QUERY OK db=44.4ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "WIFI", "network_type", 77868, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791750, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.802] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:51:16Z", "value" => "true"} [2026-08-21 11:51:51.846] [DEBUG] QUERY OK db=44.0ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "true", "kiosk_active", 77868, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791751, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.847] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:51:16Z", "value" => ""} [2026-08-21 11:51:51.912] [DEBUG] QUERY OK db=65.3ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:51:16Z", "sim_operator", 77868, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791752, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.913] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:51:16Z", "value" => "UNKNOWN"} [2026-08-21 11:51:51.969] [DEBUG] QUERY OK db=54.6ms idle=68.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "UNKNOWN", "sim_number", 77868, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:51.969] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791753, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:51.969] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:51:16Z", "value" => "UNKNOWN"} [2026-08-21 11:51:52.003] [DEBUG] QUERY OK db=32.8ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "UNKNOWN", "sim_iccid", 77868, ~N[2026-08-21 11:51:51], ~N[2026-08-21 11:51:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:52.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791754, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:51], updated_at: ~N[2026-08-21 11:51:51]}} [2026-08-21 11:51:52.003] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:51:16Z", "value" => "UNKNOWN"} [2026-08-21 11:51:52.081] [DEBUG] QUERY OK db=74.1ms idle=3.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "UNKNOWN", "sim_imsi", 77868, ~N[2026-08-21 11:51:52], ~N[2026-08-21 11:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:52.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791755, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:52], updated_at: ~N[2026-08-21 11:51:52]}} [2026-08-21 11:51:52.081] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:51:16Z", "value" => "UNKNOWN"} [2026-08-21 11:51:52.149] [DEBUG] QUERY OK db=67.3ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "UNKNOWN", "sim_iccid2", 77868, ~N[2026-08-21 11:51:52], ~N[2026-08-21 11:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:52.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791756, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:52], updated_at: ~N[2026-08-21 11:51:52]}} [2026-08-21 11:51:52.150] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:51:16Z", "value" => "UNKNOWN"} [2026-08-21 11:51:52.194] [DEBUG] QUERY OK db=43.6ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "UNKNOWN", "sim_imsi2", 77868, ~N[2026-08-21 11:51:52], ~N[2026-08-21 11:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:52.194] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791757, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:52], updated_at: ~N[2026-08-21 11:51:52]}} [2026-08-21 11:51:52.194] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:51:16Z", "value" => "1"} [2026-08-21 11:51:52.218] [DEBUG] QUERY OK db=23.0ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "1", "data_usage_mb", 77868, ~N[2026-08-21 11:51:52], ~N[2026-08-21 11:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:52.218] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791758, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:52], updated_at: ~N[2026-08-21 11:51:52]}} [2026-08-21 11:51:52.218] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:51:16Z", "value" => "0"} [2026-08-21 11:51:52.255] [DEBUG] QUERY OK db=36.0ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "0", "mobile_data_mb", 77868, ~N[2026-08-21 11:51:52], ~N[2026-08-21 11:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:52.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791759, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:52], updated_at: ~N[2026-08-21 11:51:52]}} [2026-08-21 11:51:52.257] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:51:16Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:51:52.314] [DEBUG] QUERY OK db=56.1ms queue=0.1ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:16Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77868, ~N[2026-08-21 11:51:52], ~N[2026-08-21 11:51:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:52.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791760, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:51:16Z", message: nil, status_log_id: 77868, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:52], updated_at: ~N[2026-08-21 11:51:52]}} [2026-08-21 11:51:58.237] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:51:58.237] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T11:51:58Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T11:51:58Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T11:51:58Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T11:51:58Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T11:51:58Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T11:51:58Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T11:51:58Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T11:51:58Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T11:51:58Z","vendor":"MoreFun"} [2026-08-21 11:51:58.238] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:51:58Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:51:58Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:51:58Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:51:58Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:51:58Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:51:58Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:51:58Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:51:58Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:51:58Z", "vendor" => "MoreFun"} [2026-08-21 11:51:58.238] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:51:58.238] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:51:58.238] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 11:51:58.242] [DEBUG] QUERY OK source="parameter_templates" db=3.3ms idle=549.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-08-21 11:51:58.243] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=146.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 11:51:58.245] [DEBUG] QUERY OK source="parameter_template_values" db=1.0ms idle=1.8ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:51:58.248] [DEBUG] QUERY OK source="parameter_definitions" db=2.3ms queue=0.4ms 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-08-21 11:51:58.252] [DEBUG] QUERY OK source="pos_terminal" db=3.8ms idle=3.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:51:58.290] [DEBUG] QUERY OK source="pos_merchant" db=37.0ms idle=4.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:51:58.300] [DEBUG] QUERY OK db=3.4ms queue=6.9ms idle=1196.9ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["626165170000000"] [2026-08-21 11:51:58.303] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:51:58.305] [DEBUG] QUERY OK source="pos_terminal_data" db=2.2ms queue=0.1ms idle=51.1ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:51:58.306] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 11:51:58.309] [DEBUG] QUERY OK source="address" db=1.5ms idle=17.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:51:58.309] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 11:51:58.313] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 11:51:58.359] [DEBUG] QUERY OK db=42.4ms idle=11.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e959b9e23fa2d0bc1304ffd53d664c1d2b034537508e52781054495afc564365", 2532, 936, ~U[2026-08-21 11:51:58Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:51:58], ~N[2026-08-21 11:51:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:51:58.360] [INFO ] AutoPushService: Created push log 49040 for MF919 params.zip [2026-08-21 11:51:58.360] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 2532, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:51:58.360] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 11:51:58.363] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 11:51:58.365] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.3ms idle=54.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-08-21 11:51:58.368] [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-08-21 11:51:58.467] [DEBUG] QUERY OK db=98.5ms idle=9.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "819c101c589cefadf8377ceb559c6eb3672877851e6bdba0c3e7c01ca477e0ed", 1605, 17947, ~U[2026-08-21 11:51:58Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:51:58], ~N[2026-08-21 11:51:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:51:58.469] [INFO ] AutoPushService: Created push log 49041 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:51:58.470] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 1605, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:51:58.470] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 11:51:58.472] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 11:51:58.473] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=108.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-08-21 11:51:58.474] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 11:51:58.476] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=6.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:51:58.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-08-21 11:51:58.480] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:51:58.480] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:51:58.480] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:51:58.481] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=6.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:51:58.482] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:51:58.482] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 11:51:58.483] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=6.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:51:58.581] [DEBUG] QUERY OK source="tms_terminals" db=54.6ms queue=43.3ms idle=1.6ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 11:51:58], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 11:51:58.581] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:51:58.582] [INFO ] Event published: terminal_updated [2026-08-21 11:51:58.583] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 11:51:58.583] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 11:51:58.583] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 11:51:58.588] [DEBUG] QUERY OK source="terminal_group_memberships" db=6.0ms idle=99.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-08-21 11:51:58], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 11:51:58.593] [DEBUG] QUERY OK source="tms_terminals" db=4.3ms queue=0.1ms idle=7.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 11:51:58.600] [DEBUG] QUERY OK source="terminal_group_rules" db=3.4ms idle=3.1ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 11:51:58.600] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 11:51:58.668] [DEBUG] QUERY OK source="tms_terminals" db=36.7ms queue=42.8ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 11:51:58], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:51:58.673] [DEBUG] QUERY OK source="parameter_templates" db=4.6ms idle=68.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`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-08-21 11:51:58.677] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms idle=5.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:51:58.680] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:51:58.680] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:51:58.758] [DEBUG] QUERY OK source="parameter_push_logs" db=77.1ms idle=3.8ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-08-21 11:21:58]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:51:58.758] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:51:58.758] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 11:51:58.760] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=65.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-08-21 11:51:58.761] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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-08-21 11:51:58.762] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:51:58.762] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:51:58.858] [DEBUG] QUERY OK source="tms_terminals" db=52.9ms queue=42.4ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:51:58], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:51:58.912] [DEBUG] QUERY OK db=53.4ms idle=96.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T11:51:58Z", ~N[2026-08-21 11:51:58], ~N[2026-08-21 11:51:58]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:51:58.912] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77869, oid: "organization_id", upload_time: "2026-08-21T11:51:58Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:58], updated_at: ~N[2026-08-21 11:51:58]} [2026-08-21 11:51:58.914] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:51:58Z", "value" => "online"} [2026-08-21 11:51:59.070] [DEBUG] QUERY OK db=155.5ms queue=0.2ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T11:51:58Z", "online", "status", 77869, ~N[2026-08-21 11:51:58], ~N[2026-08-21 11:51:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:59.070] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791761, itemkey: "status", value: "online", timestamp: "2026-08-21T11:51:58Z", message: "Terminal status update", status_log_id: 77869, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:58], updated_at: ~N[2026-08-21 11:51:58]}} [2026-08-21 11:51:59.070] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 11:51:59.070] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:51:58Z", "value" => "54"} [2026-08-21 11:51:59.121] [DEBUG] QUERY OK db=50.4ms idle=158.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T11:51:58Z", "54", "battery", 77869, ~N[2026-08-21 11:51:59], ~N[2026-08-21 11:51:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:59.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791762, itemkey: "battery", value: "54", timestamp: "2026-08-21T11:51:58Z", message: "Battery level", status_log_id: 77869, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:59], updated_at: ~N[2026-08-21 11:51:59]}} [2026-08-21 11:51:59.122] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:51:58Z", "value" => "online"} [2026-08-21 11:51:59.153] [DEBUG] QUERY OK db=30.7ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T11:51:58Z", "online", "network", 77869, ~N[2026-08-21 11:51:59], ~N[2026-08-21 11:51:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:59.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791763, itemkey: "network", value: "online", timestamp: "2026-08-21T11:51:58Z", message: "Network connectivity", status_log_id: 77869, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:59], updated_at: ~N[2026-08-21 11:51:59]}} [2026-08-21 11:51:59.155] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 11:51:59.156] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:51:58Z", "value" => "0"} [2026-08-21 11:51:59.215] [DEBUG] QUERY OK db=57.9ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T11:51:58Z", "0", "cpu", 77869, ~N[2026-08-21 11:51:59], ~N[2026-08-21 11:51:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:59.215] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791764, itemkey: "cpu", value: "0", timestamp: "2026-08-21T11:51:58Z", message: "CPU usage percentage", status_log_id: 77869, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:59], updated_at: ~N[2026-08-21 11:51:59]}} [2026-08-21 11:51:59.215] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:51:58Z", "value" => "1.0.0"} [2026-08-21 11:51:59.299] [DEBUG] QUERY OK db=83.3ms idle=62.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T11:51:58Z", "1.0.0", "parameter_config", 77869, ~N[2026-08-21 11:51:59], ~N[2026-08-21 11:51:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:59.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791765, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T11:51:58Z", message: "Current parameters version", status_log_id: 77869, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:59], updated_at: ~N[2026-08-21 11:51:59]}} [2026-08-21 11:51:59.299] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:51:58Z", "value" => "1.0.1"} [2026-08-21 11:51:59.343] [DEBUG] QUERY OK db=42.9ms idle=84.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T11:51:58Z", "1.0.1", "emv_config", 77869, ~N[2026-08-21 11:51:59], ~N[2026-08-21 11:51:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:59.343] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791766, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T11:51:58Z", message: "Current EMV config version", status_log_id: 77869, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:59], updated_at: ~N[2026-08-21 11:51:59]}} [2026-08-21 11:51:59.343] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:51:58Z", "value" => ""} [2026-08-21 11:51:59.410] [DEBUG] QUERY OK db=65.5ms queue=0.6ms 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-08-21T11:51:58Z", "keys_config", 77869, ~N[2026-08-21 11:51:59], ~N[2026-08-21 11:51:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:59.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791767, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T11:51:58Z", message: "Current keys config version", status_log_id: 77869, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:59], updated_at: ~N[2026-08-21 11:51:59]}} [2026-08-21 11:51:59.411] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:51:58Z", "value" => "3.8.7.3"} [2026-08-21 11:51:59.441] [DEBUG] QUERY OK db=29.1ms queue=0.3ms idle=69.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T11:51:58Z", "3.8.7.3", "application", 77869, ~N[2026-08-21 11:51:59], ~N[2026-08-21 11:51:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:51:59.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791768, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T11:51:58Z", message: "Current application version", status_log_id: 77869, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:51:59], updated_at: ~N[2026-08-21 11:51:59]}} [2026-08-21 11:51:59.442] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T11:51:58Z"} [2026-08-21 11:51:59.442] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T11:51:58Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 111, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 11:52:05.546] [INFO ] Running offline device check... [2026-08-21 11:52:05.546] [INFO ] Starting offline device check... [2026-08-21 11:52:05.548] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.1ms idle=816.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-08-21 11:52:05.584] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=34.9ms idle=449.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:52:05.602] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.9ms idle=36.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.606] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms queue=0.5ms idle=17.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:52:05.610] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.6ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.614] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.615] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.623] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms 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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.626] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=10.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.627] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.631] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.646] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.6ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.650] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=15.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.683] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=32.4ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.689] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=33.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:52:05.693] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.695] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.697] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.722] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.724] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=26.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:52:05.727] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.729] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.732] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.735] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.782] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=46.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.784] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=47.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.785] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.2ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.797] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.5ms 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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.802] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.804] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.1ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.805] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.810] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.812] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.2ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.813] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.814] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.815] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.818] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.819] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.820] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.821] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.822] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.823] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.824] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.825] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.827] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.828] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.829] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.830] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.831] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.832] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.832] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.833] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:52:05.834] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 11:52:05.834] [INFO ] Offline device check completed successfully [2026-08-21 11:52:18.713] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T11:51:58Z"} [2026-08-21 11:52:18.713] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T11:51:58Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 112, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 11:52:20.500] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:52:20.500] [INFO ] Incoming JSON payload: {"oid":"8554fa4d-2500-4a50-829e-490183da4269","sn":"98251226730001","uploadTime":"2026-08-21T11:52:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"ram_free_mb","value":"919","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:52:20Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:52:20.501] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8554fa4d-2500-4a50-829e-490183da4269", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:52:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:52:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:52:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:52:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:52:20Z", "value" => "919"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:52:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:52:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:52:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:52:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:52:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:52:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:52:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:52:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:52:20Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:52:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:52:20Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:52:20Z", "vendor" => "morefun"} [2026-08-21 11:52:20.502] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:52:20.502] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:52:20.502] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:52:20.503] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.1ms idle=674.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-08-21 11:52:20.504] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.3ms idle=403.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-08-21 11:52:20.504] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:52:20.505] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:52:20.599] [DEBUG] QUERY OK source="tms_terminals" db=53.0ms queue=41.2ms idle=1.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 11:52:20], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 11:52:20.600] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:52:20.600] [INFO ] Event published: terminal_updated [2026-08-21 11:52:20.600] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 11:52:20.600] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 11:52:20.600] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 11:52:20.602] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.4ms idle=95.3ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 11:52:20], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 11:52:20.603] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.2ms idle=0.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 11:52:20.605] [DEBUG] QUERY OK source="terminal_group_rules" db=1.4ms idle=0.8ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 11:52:20.605] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 11:52:20.656] [DEBUG] QUERY OK source="tms_terminals" db=52.2ms queue=1.2ms idle=2.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-08-21 11:52:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:52:20.656] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:52:20.657] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:52:20.693] [DEBUG] QUERY OK source="tms_terminals" db=35.8ms queue=0.5ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:52:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:52:20.733] [DEBUG] QUERY OK db=39.5ms idle=37.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "8554fa4d-2500-4a50-829e-490183da4269", "2026-08-21T11:52:20Z", ~N[2026-08-21 11:52:20], ~N[2026-08-21 11:52:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:52:20.733] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77870, oid: "8554fa4d-2500-4a50-829e-490183da4269", upload_time: "2026-08-21T11:52:20Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:20], updated_at: ~N[2026-08-21 11:52:20]} [2026-08-21 11:52:20.734] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:52:20Z", "value" => "morefun"} [2026-08-21 11:52:20.837] [DEBUG] QUERY OK db=62.7ms queue=40.5ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "morefun", "vendor", 77870, ~N[2026-08-21 11:52:20], ~N[2026-08-21 11:52:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:20.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791769, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:20], updated_at: ~N[2026-08-21 11:52:20]}} [2026-08-21 11:52:20.838] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:52:20Z", "value" => "kiosk_launcher"} [2026-08-21 11:52:20.886] [DEBUG] QUERY OK db=48.2ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "kiosk_launcher", "model", 77870, ~N[2026-08-21 11:52:20], ~N[2026-08-21 11:52:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:20.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791770, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:20], updated_at: ~N[2026-08-21 11:52:20]}} [2026-08-21 11:52:20.886] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:52:20Z", "value" => "1.0"} [2026-08-21 11:52:20.921] [DEBUG] QUERY OK db=34.0ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "1.0", "app_version", 77870, ~N[2026-08-21 11:52:20], ~N[2026-08-21 11:52:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:20.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791771, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:20], updated_at: ~N[2026-08-21 11:52:20]}} [2026-08-21 11:52:20.922] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:52:20Z", "value" => "13"} [2026-08-21 11:52:20.969] [DEBUG] QUERY OK db=45.9ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "13", "android_version", 77870, ~N[2026-08-21 11:52:20], ~N[2026-08-21 11:52:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:20.969] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791772, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:20], updated_at: ~N[2026-08-21 11:52:20]}} [2026-08-21 11:52:20.970] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:52:20Z", "value" => "919"} [2026-08-21 11:52:21.011] [DEBUG] QUERY OK db=39.1ms queue=1.1ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "919", "ram_free_mb", 77870, ~N[2026-08-21 11:52:20], ~N[2026-08-21 11:52:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.011] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791773, itemkey: "ram_free_mb", value: "919", timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:20], updated_at: ~N[2026-08-21 11:52:20]}} [2026-08-21 11:52:21.012] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:52:20Z", "value" => "WIFI"} [2026-08-21 11:52:21.048] [DEBUG] QUERY OK db=35.7ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "WIFI", "network_type", 77870, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791774, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.048] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:52:20Z", "value" => "true"} [2026-08-21 11:52:21.088] [DEBUG] QUERY OK db=33.7ms idle=43.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "true", "kiosk_active", 77870, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.089] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791775, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.089] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:52:20Z", "value" => ""} [2026-08-21 11:52:21.123] [DEBUG] QUERY OK db=33.5ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:52:20Z", "sim_operator", 77870, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791776, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.123] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:52:20Z", "value" => "UNKNOWN"} [2026-08-21 11:52:21.150] [DEBUG] QUERY OK db=26.4ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "UNKNOWN", "sim_number", 77870, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.150] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791777, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.150] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:52:20Z", "value" => "UNKNOWN"} [2026-08-21 11:52:21.185] [DEBUG] QUERY OK db=34.1ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "UNKNOWN", "sim_iccid", 77870, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791778, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.185] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:52:20Z", "value" => "UNKNOWN"} [2026-08-21 11:52:21.235] [DEBUG] QUERY OK db=48.7ms queue=0.2ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "UNKNOWN", "sim_imsi", 77870, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.235] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791779, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.235] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:52:20Z", "value" => "UNKNOWN"} [2026-08-21 11:52:21.293] [DEBUG] QUERY OK db=57.6ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "UNKNOWN", "sim_iccid2", 77870, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791780, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.294] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:52:20Z", "value" => "UNKNOWN"} [2026-08-21 11:52:21.320] [DEBUG] QUERY OK db=25.4ms idle=59.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "UNKNOWN", "sim_imsi2", 77870, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791781, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.321] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:52:20Z", "value" => "35"} [2026-08-21 11:52:21.377] [DEBUG] QUERY OK db=55.7ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "35", "data_usage_mb", 77870, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791782, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.377] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:52:20Z", "value" => "0"} [2026-08-21 11:52:21.406] [DEBUG] QUERY OK db=28.7ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "0", "mobile_data_mb", 77870, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791783, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.409] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:52:20Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:52:21.446] [DEBUG] QUERY OK db=35.8ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:20Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77870, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791784, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:52:20Z", message: nil, status_log_id: 77870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.448] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:52:21.448] [INFO ] Incoming JSON payload: {"oid":"b96f4a2f-4178-4d96-9a95-4a2d178630f4","sn":"98251226730002","uploadTime":"2026-08-21T11:51:46Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"ram_free_mb","value":"998","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:51:46Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:52:21.450] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b96f4a2f-4178-4d96-9a95-4a2d178630f4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:51:46Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:51:46Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:51:46Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:51:46Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:51:46Z", "value" => "998"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:51:46Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:51:46Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:51:46Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:51:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:51:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:51:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:51:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:51:46Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:51:46Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:51:46Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:51:46Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:51:46Z", "vendor" => "morefun"} [2026-08-21 11:52:21.450] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:52:21.451] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:52:21.451] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:52:21.455] [DEBUG] QUERY OK source="parameter_templates" db=3.0ms idle=45.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 11:52:21.455] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=9.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:52:21.456] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:52:21.459] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:52:21.463] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:52:21.489] [DEBUG] QUERY OK source="tms_terminals" db=26.3ms queue=0.1ms idle=7.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:52:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:52:21.489] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:52:21.490] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=0.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:52:21.548] [DEBUG] QUERY OK source="tms_terminals" db=55.9ms idle=0.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:52:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:52:21.582] [DEBUG] QUERY OK db=33.1ms queue=0.9ms idle=22.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "b96f4a2f-4178-4d96-9a95-4a2d178630f4", "2026-08-21T11:51:46Z", ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:52:21.582] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77871, oid: "b96f4a2f-4178-4d96-9a95-4a2d178630f4", upload_time: "2026-08-21T11:51:46Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]} [2026-08-21 11:52:21.582] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:51:46Z", "value" => "morefun"} [2026-08-21 11:52:21.621] [DEBUG] QUERY OK db=37.8ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "morefun", "vendor", 77871, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791785, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.621] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:51:46Z", "value" => "kiosk_launcher"} [2026-08-21 11:52:21.660] [DEBUG] QUERY OK db=37.4ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "kiosk_launcher", "model", 77871, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791786, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.660] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:51:46Z", "value" => "1.0"} [2026-08-21 11:52:21.707] [DEBUG] QUERY OK db=46.2ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "1.0", "app_version", 77871, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791787, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.707] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:51:46Z", "value" => "13"} [2026-08-21 11:52:21.747] [DEBUG] QUERY OK db=39.7ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "13", "android_version", 77871, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.748] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791788, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.748] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:51:46Z", "value" => "998"} [2026-08-21 11:52:21.818] [DEBUG] QUERY OK db=70.0ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "998", "ram_free_mb", 77871, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.818] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791789, itemkey: "ram_free_mb", value: "998", timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.819] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:51:46Z", "value" => "WIFI"} [2026-08-21 11:52:21.867] [DEBUG] QUERY OK db=47.7ms idle=71.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "WIFI", "network_type", 77871, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791790, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.867] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:51:46Z", "value" => "true"} [2026-08-21 11:52:21.907] [DEBUG] QUERY OK db=39.4ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "true", "kiosk_active", 77871, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791791, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.907] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:51:46Z", "value" => ""} [2026-08-21 11:52:21.930] [DEBUG] QUERY OK db=22.7ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:51:46Z", "sim_operator", 77871, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:21.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791792, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:21.931] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:51:46Z", "value" => "UNKNOWN"} [2026-08-21 11:52:22.000] [DEBUG] QUERY OK db=68.3ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "UNKNOWN", "sim_number", 77871, ~N[2026-08-21 11:52:21], ~N[2026-08-21 11:52:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:22.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791793, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:21], updated_at: ~N[2026-08-21 11:52:21]}} [2026-08-21 11:52:22.000] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:51:46Z", "value" => "UNKNOWN"} [2026-08-21 11:52:22.045] [DEBUG] QUERY OK db=43.7ms idle=69.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "UNKNOWN", "sim_iccid", 77871, ~N[2026-08-21 11:52:22], ~N[2026-08-21 11:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:22.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791794, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:22], updated_at: ~N[2026-08-21 11:52:22]}} [2026-08-21 11:52:22.048] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:51:46Z", "value" => "UNKNOWN"} [2026-08-21 11:52:22.077] [DEBUG] QUERY OK db=29.3ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "UNKNOWN", "sim_imsi", 77871, ~N[2026-08-21 11:52:22], ~N[2026-08-21 11:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:22.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791795, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:22], updated_at: ~N[2026-08-21 11:52:22]}} [2026-08-21 11:52:22.078] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:51:46Z", "value" => "UNKNOWN"} [2026-08-21 11:52:22.125] [DEBUG] QUERY OK db=46.5ms queue=0.2ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "UNKNOWN", "sim_iccid2", 77871, ~N[2026-08-21 11:52:22], ~N[2026-08-21 11:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:22.125] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791796, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:22], updated_at: ~N[2026-08-21 11:52:22]}} [2026-08-21 11:52:22.125] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:51:46Z", "value" => "UNKNOWN"} [2026-08-21 11:52:22.161] [DEBUG] QUERY OK db=33.2ms queue=2.7ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "UNKNOWN", "sim_imsi2", 77871, ~N[2026-08-21 11:52:22], ~N[2026-08-21 11:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:22.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791797, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:22], updated_at: ~N[2026-08-21 11:52:22]}} [2026-08-21 11:52:22.162] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:51:46Z", "value" => "1"} [2026-08-21 11:52:22.215] [DEBUG] QUERY OK db=52.9ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "1", "data_usage_mb", 77871, ~N[2026-08-21 11:52:22], ~N[2026-08-21 11:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:22.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791798, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:22], updated_at: ~N[2026-08-21 11:52:22]}} [2026-08-21 11:52:22.216] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:51:46Z", "value" => "0"} [2026-08-21 11:52:22.238] [DEBUG] QUERY OK db=21.4ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "0", "mobile_data_mb", 77871, ~N[2026-08-21 11:52:22], ~N[2026-08-21 11:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:22.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791799, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:22], updated_at: ~N[2026-08-21 11:52:22]}} [2026-08-21 11:52:22.239] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:51:46Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:52:22.312] [DEBUG] QUERY OK db=62.6ms queue=3.5ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:51:46Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77871, ~N[2026-08-21 11:52:22], ~N[2026-08-21 11:52:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:22.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791800, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:51:46Z", message: nil, status_log_id: 77871, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:22], updated_at: ~N[2026-08-21 11:52:22]}} [2026-08-21 11:52:50.600] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:52:50.600] [INFO ] Incoming JSON payload: {"oid":"0261b96f-eff6-48fe-a0b5-52b198c9338f","sn":"98251226730002","uploadTime":"2026-08-21T11:52:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"ram_free_mb","value":"994","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:52:17Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:52:50.602] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0261b96f-eff6-48fe-a0b5-52b198c9338f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:52:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:52:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:52:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:52:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:52:17Z", "value" => "994"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:52:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:52:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:52:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:52:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:52:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:52:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:52:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:52:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:52:17Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:52:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:52:17Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:52:17Z", "vendor" => "morefun"} [2026-08-21 11:52:50.602] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:52:50.602] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:52:50.602] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:52:50.605] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms queue=0.1ms idle=494.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-08-21 11:52:50.608] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=336.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-08-21 11:52:50.608] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:52:50.609] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=3.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:52:50.609] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:52:50.698] [DEBUG] QUERY OK source="tms_terminals" db=47.0ms queue=41.8ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:52:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:52:50.700] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:52:50.700] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=91.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:52:50.751] [DEBUG] QUERY OK source="tms_terminals" db=50.4ms queue=0.1ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:52:50], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:52:50.830] [DEBUG] QUERY OK db=78.3ms idle=51.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "0261b96f-eff6-48fe-a0b5-52b198c9338f", "2026-08-21T11:52:17Z", ~N[2026-08-21 11:52:50], ~N[2026-08-21 11:52:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:52:50.830] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77872, oid: "0261b96f-eff6-48fe-a0b5-52b198c9338f", upload_time: "2026-08-21T11:52:17Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:50], updated_at: ~N[2026-08-21 11:52:50]} [2026-08-21 11:52:50.831] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:52:17Z", "value" => "morefun"} [2026-08-21 11:52:50.871] [DEBUG] QUERY OK db=40.2ms idle=79.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:17Z", "morefun", "vendor", 77872, ~N[2026-08-21 11:52:50], ~N[2026-08-21 11:52:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:50.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791801, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:50], updated_at: ~N[2026-08-21 11:52:50]}} [2026-08-21 11:52:50.872] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:52:17Z", "value" => "kiosk_launcher"} [2026-08-21 11:52:50.896] [DEBUG] QUERY OK db=24.3ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:17Z", "kiosk_launcher", "model", 77872, ~N[2026-08-21 11:52:50], ~N[2026-08-21 11:52:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:50.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791802, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:50], updated_at: ~N[2026-08-21 11:52:50]}} [2026-08-21 11:52:50.897] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:52:17Z", "value" => "1.0"} [2026-08-21 11:52:50.926] [DEBUG] QUERY OK db=28.9ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:17Z", "1.0", "app_version", 77872, ~N[2026-08-21 11:52:50], ~N[2026-08-21 11:52:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:50.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791803, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:50], updated_at: ~N[2026-08-21 11:52:50]}} [2026-08-21 11:52:50.927] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:52:17Z", "value" => "13"} [2026-08-21 11:52:50.987] [DEBUG] QUERY OK db=58.2ms queue=0.3ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:17Z", "13", "android_version", 77872, ~N[2026-08-21 11:52:50], ~N[2026-08-21 11:52:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:50.987] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791804, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:50], updated_at: ~N[2026-08-21 11:52:50]}} [2026-08-21 11:52:50.987] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:52:17Z", "value" => "994"} [2026-08-21 11:52:51.011] [DEBUG] QUERY OK db=23.5ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:17Z", "994", "ram_free_mb", 77872, ~N[2026-08-21 11:52:50], ~N[2026-08-21 11:52:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791805, itemkey: "ram_free_mb", value: "994", timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:50], updated_at: ~N[2026-08-21 11:52:50]}} [2026-08-21 11:52:51.012] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:52:17Z", "value" => "WIFI"} [2026-08-21 11:52:51.068] [DEBUG] QUERY OK db=55.7ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:17Z", "WIFI", "network_type", 77872, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791806, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.069] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:52:17Z", "value" => "true"} [2026-08-21 11:52:51.094] [DEBUG] QUERY OK db=24.5ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:17Z", "true", "kiosk_active", 77872, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791807, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.094] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:52:17Z", "value" => ""} [2026-08-21 11:52:51.157] [DEBUG] QUERY OK db=63.0ms queue=0.1ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:52:17Z", "sim_operator", 77872, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.158] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791808, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.159] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:52:17Z", "value" => "UNKNOWN"} [2026-08-21 11:52:51.181] [DEBUG] QUERY OK db=22.2ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:17Z", "UNKNOWN", "sim_number", 77872, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791809, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.182] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:52:17Z", "value" => "UNKNOWN"} [2026-08-21 11:52:51.228] [DEBUG] QUERY OK db=46.1ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:17Z", "UNKNOWN", "sim_iccid", 77872, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.229] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791810, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.229] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:52:17Z", "value" => "UNKNOWN"} [2026-08-21 11:52:51.272] [DEBUG] QUERY OK db=42.6ms queue=0.1ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:17Z", "UNKNOWN", "sim_imsi", 77872, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791811, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.274] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:52:17Z", "value" => "UNKNOWN"} [2026-08-21 11:52:51.313] [DEBUG] QUERY OK db=38.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-08-21T11:52:17Z", "UNKNOWN", "sim_iccid2", 77872, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791812, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.314] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:52:17Z", "value" => "UNKNOWN"} [2026-08-21 11:52:51.356] [DEBUG] QUERY OK db=40.9ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:17Z", "UNKNOWN", "sim_imsi2", 77872, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791813, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.356] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:52:17Z", "value" => "1"} [2026-08-21 11:52:51.380] [DEBUG] QUERY OK db=23.3ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:17Z", "1", "data_usage_mb", 77872, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791814, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.380] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:52:17Z", "value" => "0"} [2026-08-21 11:52:51.411] [DEBUG] QUERY OK db=30.3ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:17Z", "0", "mobile_data_mb", 77872, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791815, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.412] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:52:17Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:52:51.482] [DEBUG] QUERY OK db=69.0ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:17Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77872, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791816, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:52:17Z", message: nil, status_log_id: 77872, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.483] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:52:51.483] [INFO ] Incoming JSON payload: {"oid":"3aff704f-79e9-41f8-a648-02ef001ec822","sn":"98251226730001","uploadTime":"2026-08-21T11:52:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"ram_free_mb","value":"920","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:52:50Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:52:51.484] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3aff704f-79e9-41f8-a648-02ef001ec822", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:52:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:52:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:52:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:52:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:52:50Z", "value" => "920"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:52:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:52:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:52:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:52:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:52:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:52:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:52:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:52:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:52:50Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:52:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:52:50Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:52:50Z", "vendor" => "morefun"} [2026-08-21 11:52:51.484] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:52:51.484] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:52:51.484] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:52:51.485] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=73.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-08-21 11:52:51.486] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=4.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:52:51.486] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:52:51.487] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:52:51.488] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:52:51.524] [DEBUG] QUERY OK source="tms_terminals" db=36.0ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:52:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:52:51.525] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:52:51.526] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.4ms idle=37.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:52:51.564] [DEBUG] QUERY OK source="tms_terminals" db=37.7ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:52:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:52:51.600] [DEBUG] QUERY OK db=35.0ms idle=38.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "3aff704f-79e9-41f8-a648-02ef001ec822", "2026-08-21T11:52:50Z", ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:52:51.600] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77873, oid: "3aff704f-79e9-41f8-a648-02ef001ec822", upload_time: "2026-08-21T11:52:50Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]} [2026-08-21 11:52:51.600] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:52:50Z", "value" => "morefun"} [2026-08-21 11:52:51.664] [DEBUG] QUERY OK db=62.9ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "morefun", "vendor", 77873, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791817, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.665] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:52:50Z", "value" => "kiosk_launcher"} [2026-08-21 11:52:51.699] [DEBUG] QUERY OK db=31.6ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "kiosk_launcher", "model", 77873, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791818, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.699] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:52:50Z", "value" => "1.0"} [2026-08-21 11:52:51.741] [DEBUG] QUERY OK db=38.9ms queue=0.9ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "1.0", "app_version", 77873, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791819, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.742] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:52:50Z", "value" => "13"} [2026-08-21 11:52:51.811] [DEBUG] QUERY OK db=68.7ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "13", "android_version", 77873, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791820, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.811] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:52:50Z", "value" => "920"} [2026-08-21 11:52:51.862] [DEBUG] QUERY OK db=50.5ms idle=70.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "920", "ram_free_mb", 77873, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.863] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791821, itemkey: "ram_free_mb", value: "920", timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.863] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:52:50Z", "value" => "WIFI"} [2026-08-21 11:52:51.898] [DEBUG] QUERY OK db=34.2ms idle=52.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "WIFI", "network_type", 77873, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.898] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791822, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.898] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:52:50Z", "value" => "true"} [2026-08-21 11:52:51.924] [DEBUG] QUERY OK db=24.4ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "true", "kiosk_active", 77873, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791823, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.924] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:52:50Z", "value" => ""} [2026-08-21 11:52:51.969] [DEBUG] QUERY OK db=42.1ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:52:50Z", "sim_operator", 77873, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:51.969] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791824, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:51.969] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:52:50Z", "value" => "UNKNOWN"} [2026-08-21 11:52:52.018] [DEBUG] QUERY OK db=47.7ms idle=13.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "UNKNOWN", "sim_number", 77873, ~N[2026-08-21 11:52:51], ~N[2026-08-21 11:52:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:52.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791825, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:51], updated_at: ~N[2026-08-21 11:52:51]}} [2026-08-21 11:52:52.018] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:52:50Z", "value" => "UNKNOWN"} [2026-08-21 11:52:52.074] [DEBUG] QUERY OK db=55.6ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "UNKNOWN", "sim_iccid", 77873, ~N[2026-08-21 11:52:52], ~N[2026-08-21 11:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:52.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791826, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:52], updated_at: ~N[2026-08-21 11:52:52]}} [2026-08-21 11:52:52.074] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:52:50Z", "value" => "UNKNOWN"} [2026-08-21 11:52:52.107] [DEBUG] QUERY OK db=32.1ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "UNKNOWN", "sim_imsi", 77873, ~N[2026-08-21 11:52:52], ~N[2026-08-21 11:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:52.107] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791827, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:52], updated_at: ~N[2026-08-21 11:52:52]}} [2026-08-21 11:52:52.107] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:52:50Z", "value" => "UNKNOWN"} [2026-08-21 11:52:52.147] [DEBUG] QUERY OK db=39.4ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "UNKNOWN", "sim_iccid2", 77873, ~N[2026-08-21 11:52:52], ~N[2026-08-21 11:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:52.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791828, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:52], updated_at: ~N[2026-08-21 11:52:52]}} [2026-08-21 11:52:52.148] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:52:50Z", "value" => "UNKNOWN"} [2026-08-21 11:52:52.183] [DEBUG] QUERY OK db=34.0ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "UNKNOWN", "sim_imsi2", 77873, ~N[2026-08-21 11:52:52], ~N[2026-08-21 11:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:52.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791829, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:52], updated_at: ~N[2026-08-21 11:52:52]}} [2026-08-21 11:52:52.183] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:52:50Z", "value" => "35"} [2026-08-21 11:52:52.224] [DEBUG] QUERY OK db=40.3ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "35", "data_usage_mb", 77873, ~N[2026-08-21 11:52:52], ~N[2026-08-21 11:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:52.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791830, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:52], updated_at: ~N[2026-08-21 11:52:52]}} [2026-08-21 11:52:52.224] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:52:50Z", "value" => "0"} [2026-08-21 11:52:52.281] [DEBUG] QUERY OK db=56.1ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "0", "mobile_data_mb", 77873, ~N[2026-08-21 11:52:52], ~N[2026-08-21 11:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:52.281] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791831, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:52], updated_at: ~N[2026-08-21 11:52:52]}} [2026-08-21 11:52:52.281] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:52:50Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:52:52.333] [DEBUG] QUERY OK db=49.7ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:50Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77873, ~N[2026-08-21 11:52:52], ~N[2026-08-21 11:52:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:52:52.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791832, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:52:50Z", message: nil, status_log_id: 77873, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:52:52], updated_at: ~N[2026-08-21 11:52:52]}} [2026-08-21 11:53:20.683] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:53:20.683] [INFO ] Incoming JSON payload: {"oid":"482c437b-bdc2-435a-ada4-68dee2dfc9a1","sn":"98251226730002","uploadTime":"2026-08-21T11:52:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"ram_free_mb","value":"996","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:52:47Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:53:20.685] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "482c437b-bdc2-435a-ada4-68dee2dfc9a1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:52:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:52:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:52:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:52:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:52:47Z", "value" => "996"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:52:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:52:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:52:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:52:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:52:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:52:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:52:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:52:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:52:47Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:52:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:52:47Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:52:47Z", "vendor" => "morefun"} [2026-08-21 11:53:20.685] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:53:20.685] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:53:20.685] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:53:20.686] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.1ms idle=812.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-08-21 11:53:20.687] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=592.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-08-21 11:53:20.687] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:53:20.691] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:53:20.691] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:53:20.727] [DEBUG] QUERY OK source="tms_terminals" db=35.3ms idle=4.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:53:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:53:20.727] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:53:20.729] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=36.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:53:20.777] [DEBUG] QUERY OK source="tms_terminals" db=47.5ms queue=0.1ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:53:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:53:20.820] [DEBUG] QUERY OK db=43.0ms idle=48.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "482c437b-bdc2-435a-ada4-68dee2dfc9a1", "2026-08-21T11:52:47Z", ~N[2026-08-21 11:53:20], ~N[2026-08-21 11:53:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:53:20.822] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77874, oid: "482c437b-bdc2-435a-ada4-68dee2dfc9a1", upload_time: "2026-08-21T11:52:47Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:20], updated_at: ~N[2026-08-21 11:53:20]} [2026-08-21 11:53:20.822] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:52:47Z", "value" => "morefun"} [2026-08-21 11:53:20.878] [DEBUG] QUERY OK db=55.8ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "morefun", "vendor", 77874, ~N[2026-08-21 11:53:20], ~N[2026-08-21 11:53:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:20.879] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791833, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:20], updated_at: ~N[2026-08-21 11:53:20]}} [2026-08-21 11:53:20.879] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:52:47Z", "value" => "kiosk_launcher"} [2026-08-21 11:53:20.907] [DEBUG] QUERY OK db=27.5ms idle=59.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "kiosk_launcher", "model", 77874, ~N[2026-08-21 11:53:20], ~N[2026-08-21 11:53:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:20.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791834, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:20], updated_at: ~N[2026-08-21 11:53:20]}} [2026-08-21 11:53:20.907] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:52:47Z", "value" => "1.0"} [2026-08-21 11:53:20.953] [DEBUG] QUERY OK db=44.6ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "1.0", "app_version", 77874, ~N[2026-08-21 11:53:20], ~N[2026-08-21 11:53:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:20.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791835, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:20], updated_at: ~N[2026-08-21 11:53:20]}} [2026-08-21 11:53:20.954] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:52:47Z", "value" => "13"} [2026-08-21 11:53:20.998] [DEBUG] QUERY OK db=41.9ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "13", "android_version", 77874, ~N[2026-08-21 11:53:20], ~N[2026-08-21 11:53:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:20.999] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791836, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:20], updated_at: ~N[2026-08-21 11:53:20]}} [2026-08-21 11:53:20.999] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:52:47Z", "value" => "996"} [2026-08-21 11:53:21.039] [DEBUG] QUERY OK db=39.7ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "996", "ram_free_mb", 77874, ~N[2026-08-21 11:53:20], ~N[2026-08-21 11:53:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791837, itemkey: "ram_free_mb", value: "996", timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:20], updated_at: ~N[2026-08-21 11:53:20]}} [2026-08-21 11:53:21.039] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:52:47Z", "value" => "WIFI"} [2026-08-21 11:53:21.082] [DEBUG] QUERY OK db=41.9ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "WIFI", "network_type", 77874, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791838, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.084] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:52:47Z", "value" => "true"} [2026-08-21 11:53:21.126] [DEBUG] QUERY OK db=41.8ms queue=0.1ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "true", "kiosk_active", 77874, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.126] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791839, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.126] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:52:47Z", "value" => ""} [2026-08-21 11:53:21.168] [DEBUG] QUERY OK db=37.3ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:52:47Z", "sim_operator", 77874, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.168] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791840, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.168] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:52:47Z", "value" => "UNKNOWN"} [2026-08-21 11:53:21.235] [DEBUG] QUERY OK db=66.9ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "UNKNOWN", "sim_number", 77874, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791841, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.236] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:52:47Z", "value" => "UNKNOWN"} [2026-08-21 11:53:21.270] [DEBUG] QUERY OK db=33.7ms idle=69.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "UNKNOWN", "sim_iccid", 77874, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791842, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.271] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:52:47Z", "value" => "UNKNOWN"} [2026-08-21 11:53:21.295] [DEBUG] QUERY OK db=23.9ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "UNKNOWN", "sim_imsi", 77874, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.295] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791843, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.295] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:52:47Z", "value" => "UNKNOWN"} [2026-08-21 11:53:21.357] [DEBUG] QUERY OK db=61.2ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "UNKNOWN", "sim_iccid2", 77874, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791844, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.358] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:52:47Z", "value" => "UNKNOWN"} [2026-08-21 11:53:21.415] [DEBUG] QUERY OK db=51.6ms idle=68.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "UNKNOWN", "sim_imsi2", 77874, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791845, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.416] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:52:47Z", "value" => "1"} [2026-08-21 11:53:21.470] [DEBUG] QUERY OK db=44.2ms idle=68.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "1", "data_usage_mb", 77874, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791846, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.471] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:52:47Z", "value" => "0"} [2026-08-21 11:53:21.496] [DEBUG] QUERY OK db=24.8ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "0", "mobile_data_mb", 77874, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791847, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.499] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:52:47Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:53:21.561] [DEBUG] QUERY OK db=60.5ms queue=0.2ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:52:47Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77874, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791848, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:52:47Z", message: nil, status_log_id: 77874, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.564] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:53:21.564] [INFO ] Incoming JSON payload: {"oid":"2a6599fb-0e28-4c5b-bb64-75161fa55068","sn":"98251226730001","uploadTime":"2026-08-21T11:53:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:53:20Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:53:21.567] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2a6599fb-0e28-4c5b-bb64-75161fa55068", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:53:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:53:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:53:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:53:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:53:20Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:53:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:53:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:53:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:53:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:53:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:53:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:53:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:53:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:53:20Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:53:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:53:20Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:53:20Z", "vendor" => "morefun"} [2026-08-21 11:53:21.567] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:53:21.567] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:53:21.567] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:53:21.568] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=71.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-08-21 11:53:21.569] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=8.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-08-21 11:53:21.569] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:53:21.573] [DEBUG] QUERY OK source="tms_terminals" db=4.2ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:53:21.574] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:53:21.617] [DEBUG] QUERY OK source="tms_terminals" db=42.0ms idle=5.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:53:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:53:21.617] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:53:21.618] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:53:21.683] [DEBUG] QUERY OK source="tms_terminals" db=64.6ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:53:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:53:21.753] [DEBUG] QUERY OK db=69.7ms idle=65.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2a6599fb-0e28-4c5b-bb64-75161fa55068", "2026-08-21T11:53:20Z", ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:53:21.757] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77875, oid: "2a6599fb-0e28-4c5b-bb64-75161fa55068", upload_time: "2026-08-21T11:53:20Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]} [2026-08-21 11:53:21.758] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:53:20Z", "value" => "morefun"} [2026-08-21 11:53:21.807] [DEBUG] QUERY OK db=47.5ms queue=1.3ms idle=75.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "morefun", "vendor", 77875, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.810] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791849, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.810] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:53:20Z", "value" => "kiosk_launcher"} [2026-08-21 11:53:21.858] [DEBUG] QUERY OK db=46.1ms queue=0.1ms idle=57.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "kiosk_launcher", "model", 77875, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791850, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.858] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:53:20Z", "value" => "1.0"} [2026-08-21 11:53:21.900] [DEBUG] QUERY OK db=41.6ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "1.0", "app_version", 77875, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791851, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.900] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:53:20Z", "value" => "13"} [2026-08-21 11:53:21.933] [DEBUG] QUERY OK db=31.7ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "13", "android_version", 77875, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.933] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791852, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.933] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:53:20Z", "value" => "917"} [2026-08-21 11:53:21.981] [DEBUG] QUERY OK db=47.4ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "917", "ram_free_mb", 77875, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:21.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791853, itemkey: "ram_free_mb", value: "917", timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:21.981] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:53:20Z", "value" => "WIFI"} [2026-08-21 11:53:22.005] [DEBUG] QUERY OK db=23.6ms queue=0.1ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "WIFI", "network_type", 77875, ~N[2026-08-21 11:53:21], ~N[2026-08-21 11:53:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:22.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791854, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:21], updated_at: ~N[2026-08-21 11:53:21]}} [2026-08-21 11:53:22.009] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:53:20Z", "value" => "true"} [2026-08-21 11:53:22.065] [DEBUG] QUERY OK db=55.2ms queue=1.2ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "true", "kiosk_active", 77875, ~N[2026-08-21 11:53:22], ~N[2026-08-21 11:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:22.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791855, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:22], updated_at: ~N[2026-08-21 11:53:22]}} [2026-08-21 11:53:22.068] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:53:20Z", "value" => ""} [2026-08-21 11:53:22.133] [DEBUG] QUERY OK db=65.0ms idle=62.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:53:20Z", "sim_operator", 77875, ~N[2026-08-21 11:53:22], ~N[2026-08-21 11:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:22.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791856, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:22], updated_at: ~N[2026-08-21 11:53:22]}} [2026-08-21 11:53:22.134] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:53:20Z", "value" => "UNKNOWN"} [2026-08-21 11:53:22.325] [DEBUG] QUERY OK db=190.7ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "UNKNOWN", "sim_number", 77875, ~N[2026-08-21 11:53:22], ~N[2026-08-21 11:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:22.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791857, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:22], updated_at: ~N[2026-08-21 11:53:22]}} [2026-08-21 11:53:22.326] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:53:20Z", "value" => "UNKNOWN"} [2026-08-21 11:53:22.363] [DEBUG] QUERY OK db=37.1ms idle=192.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "UNKNOWN", "sim_iccid", 77875, ~N[2026-08-21 11:53:22], ~N[2026-08-21 11:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:22.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791858, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:22], updated_at: ~N[2026-08-21 11:53:22]}} [2026-08-21 11:53:22.366] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:53:20Z", "value" => "UNKNOWN"} [2026-08-21 11:53:22.398] [DEBUG] QUERY OK db=31.2ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "UNKNOWN", "sim_imsi", 77875, ~N[2026-08-21 11:53:22], ~N[2026-08-21 11:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:22.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791859, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:22], updated_at: ~N[2026-08-21 11:53:22]}} [2026-08-21 11:53:22.398] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:53:20Z", "value" => "UNKNOWN"} [2026-08-21 11:53:22.434] [DEBUG] QUERY OK db=35.1ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "UNKNOWN", "sim_iccid2", 77875, ~N[2026-08-21 11:53:22], ~N[2026-08-21 11:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:22.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791860, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:22], updated_at: ~N[2026-08-21 11:53:22]}} [2026-08-21 11:53:22.434] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:53:20Z", "value" => "UNKNOWN"} [2026-08-21 11:53:22.471] [DEBUG] QUERY OK db=36.5ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "UNKNOWN", "sim_imsi2", 77875, ~N[2026-08-21 11:53:22], ~N[2026-08-21 11:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:22.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791861, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:22], updated_at: ~N[2026-08-21 11:53:22]}} [2026-08-21 11:53:22.472] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:53:20Z", "value" => "35"} [2026-08-21 11:53:22.519] [DEBUG] QUERY OK db=43.0ms queue=3.5ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "35", "data_usage_mb", 77875, ~N[2026-08-21 11:53:22], ~N[2026-08-21 11:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:22.519] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791862, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:22], updated_at: ~N[2026-08-21 11:53:22]}} [2026-08-21 11:53:22.519] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:53:20Z", "value" => "0"} [2026-08-21 11:53:22.562] [DEBUG] QUERY OK db=42.2ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "0", "mobile_data_mb", 77875, ~N[2026-08-21 11:53:22], ~N[2026-08-21 11:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:22.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791863, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:22], updated_at: ~N[2026-08-21 11:53:22]}} [2026-08-21 11:53:22.563] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:53:20Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:53:22.600] [DEBUG] QUERY OK db=34.7ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:20Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77875, ~N[2026-08-21 11:53:22], ~N[2026-08-21 11:53:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:22.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791864, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:53:20Z", message: nil, status_log_id: 77875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:22], updated_at: ~N[2026-08-21 11:53:22]}} [2026-08-21 11:53:51.073] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:53:51.074] [INFO ] Incoming JSON payload: {"oid":"beafaf69-2cbf-4742-a757-5ade08df4581","sn":"98251226730001","uploadTime":"2026-08-21T11:53:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"ram_free_mb","value":"914","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:53:50Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:53:51.075] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "beafaf69-2cbf-4742-a757-5ade08df4581", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:53:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:53:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:53:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:53:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:53:50Z", "value" => "914"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:53:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:53:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:53:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:53:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:53:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:53:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:53:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:53:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:53:50Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:53:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:53:50Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:53:50Z", "vendor" => "morefun"} [2026-08-21 11:53:51.075] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:53:51.075] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:53:51.076] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:53:51.080] [DEBUG] QUERY OK source="parameter_templates" db=4.2ms idle=945.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-08-21 11:53:51.081] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.5ms idle=826.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:53:51.082] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:53:51.082] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:53:51.083] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:53:51.108] [DEBUG] QUERY OK source="tms_terminals" db=24.2ms queue=0.4ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:53:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:53:51.108] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:53:51.110] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:53:51.175] [DEBUG] QUERY OK source="tms_terminals" db=65.3ms queue=0.1ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:53:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:53:51.210] [DEBUG] QUERY OK db=33.7ms idle=66.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "beafaf69-2cbf-4742-a757-5ade08df4581", "2026-08-21T11:53:50Z", ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:53:51.210] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77876, oid: "beafaf69-2cbf-4742-a757-5ade08df4581", upload_time: "2026-08-21T11:53:50Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]} [2026-08-21 11:53:51.210] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:53:50Z", "value" => "morefun"} [2026-08-21 11:53:51.248] [DEBUG] QUERY OK db=37.2ms queue=0.1ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "morefun", "vendor", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791865, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.248] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:53:50Z", "value" => "kiosk_launcher"} [2026-08-21 11:53:51.290] [DEBUG] QUERY OK db=41.4ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "kiosk_launcher", "model", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791866, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.290] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:53:50Z", "value" => "1.0"} [2026-08-21 11:53:51.325] [DEBUG] QUERY OK db=34.1ms queue=0.5ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "1.0", "app_version", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791867, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.326] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:53:50Z", "value" => "13"} [2026-08-21 11:53:51.355] [DEBUG] QUERY OK db=28.9ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "13", "android_version", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791868, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.355] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:53:50Z", "value" => "914"} [2026-08-21 11:53:51.394] [DEBUG] QUERY OK db=37.1ms queue=0.1ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "914", "ram_free_mb", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791869, itemkey: "ram_free_mb", value: "914", timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.396] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:53:50Z", "value" => "WIFI"} [2026-08-21 11:53:51.438] [DEBUG] QUERY OK db=41.9ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "WIFI", "network_type", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791870, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.439] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:53:50Z", "value" => "true"} [2026-08-21 11:53:51.483] [DEBUG] QUERY OK db=43.4ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "true", "kiosk_active", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791871, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.483] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:53:50Z", "value" => ""} [2026-08-21 11:53:51.530] [DEBUG] QUERY OK db=34.6ms queue=0.1ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:53:50Z", "sim_operator", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791872, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.530] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:53:50Z", "value" => "UNKNOWN"} [2026-08-21 11:53:51.565] [DEBUG] QUERY OK db=34.1ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "UNKNOWN", "sim_number", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791873, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.565] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:53:50Z", "value" => "UNKNOWN"} [2026-08-21 11:53:51.601] [DEBUG] QUERY OK db=35.5ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "UNKNOWN", "sim_iccid", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791874, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.601] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:53:50Z", "value" => "UNKNOWN"} [2026-08-21 11:53:51.639] [DEBUG] QUERY OK db=37.5ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "UNKNOWN", "sim_imsi", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791875, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.640] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:53:50Z", "value" => "UNKNOWN"} [2026-08-21 11:53:51.682] [DEBUG] QUERY OK db=41.3ms queue=0.1ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "UNKNOWN", "sim_iccid2", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.683] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791876, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.683] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:53:50Z", "value" => "UNKNOWN"} [2026-08-21 11:53:51.729] [DEBUG] QUERY OK db=43.9ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "UNKNOWN", "sim_imsi2", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791877, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.733] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:53:50Z", "value" => "35"} [2026-08-21 11:53:51.774] [DEBUG] QUERY OK db=40.1ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "35", "data_usage_mb", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791878, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.774] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:53:50Z", "value" => "0"} [2026-08-21 11:53:51.821] [DEBUG] QUERY OK db=45.4ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "0", "mobile_data_mb", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791879, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.822] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:53:50Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:53:51.889] [DEBUG] QUERY OK db=65.7ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:50Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77876, ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:51.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791880, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:53:50Z", message: nil, status_log_id: 77876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]}} [2026-08-21 11:53:51.890] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:53:51.890] [INFO ] Incoming JSON payload: {"oid":"4e683e9c-9063-4696-9a61-16ded7cc9b64","sn":"98251226730002","uploadTime":"2026-08-21T11:53:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"ram_free_mb","value":"1004","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:53:17Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.re (truncated) [2026-08-21 11:53:51.892] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4e683e9c-9063-4696-9a61-16ded7cc9b64", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:53:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:53:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:53:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:53:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:53:17Z", "value" => "1004"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:53:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:53:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:53:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:53:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:53:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:53:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:53:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:53:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:53:17Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:53:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:53:17Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:53:17Z", "vendor" => "morefun"} [2026-08-21 11:53:51.893] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:53:51.893] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:53:51.893] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:53:51.894] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=72.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-08-21 11:53:51.894] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.2ms idle=5.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:53:51.895] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:53:51.895] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:53:51.896] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:53:51.938] [DEBUG] QUERY OK source="tms_terminals" db=41.8ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:53:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:53:51.938] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:53:51.939] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=42.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:53:51.989] [DEBUG] QUERY OK source="tms_terminals" db=48.4ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:53:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:53:52.031] [DEBUG] QUERY OK db=41.7ms idle=50.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "4e683e9c-9063-4696-9a61-16ded7cc9b64", "2026-08-21T11:53:17Z", ~N[2026-08-21 11:53:51], ~N[2026-08-21 11:53:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:53:52.031] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77877, oid: "4e683e9c-9063-4696-9a61-16ded7cc9b64", upload_time: "2026-08-21T11:53:17Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:51], updated_at: ~N[2026-08-21 11:53:51]} [2026-08-21 11:53:52.031] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:53:17Z", "value" => "morefun"} [2026-08-21 11:53:52.073] [DEBUG] QUERY OK db=41.0ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "morefun", "vendor", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791881, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.073] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:53:17Z", "value" => "kiosk_launcher"} [2026-08-21 11:53:52.114] [DEBUG] QUERY OK db=40.1ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "kiosk_launcher", "model", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791882, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.114] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:53:17Z", "value" => "1.0"} [2026-08-21 11:53:52.144] [DEBUG] QUERY OK db=29.7ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "1.0", "app_version", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791883, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.145] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:53:17Z", "value" => "13"} [2026-08-21 11:53:52.209] [DEBUG] QUERY OK db=64.3ms idle=31.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "13", "android_version", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791884, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.210] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:53:17Z", "value" => "1004"} [2026-08-21 11:53:52.233] [DEBUG] QUERY OK db=22.2ms queue=0.1ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "1004", "ram_free_mb", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.234] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791885, itemkey: "ram_free_mb", value: "1004", timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.234] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:53:17Z", "value" => "WIFI"} [2026-08-21 11:53:52.278] [DEBUG] QUERY OK db=43.9ms queue=0.1ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "WIFI", "network_type", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791886, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.279] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:53:17Z", "value" => "true"} [2026-08-21 11:53:52.319] [DEBUG] QUERY OK db=39.6ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "true", "kiosk_active", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791887, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.319] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:53:17Z", "value" => ""} [2026-08-21 11:53:52.353] [DEBUG] QUERY OK db=33.6ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:53:17Z", "sim_operator", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791888, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.354] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:53:17Z", "value" => "UNKNOWN"} [2026-08-21 11:53:52.399] [DEBUG] QUERY OK db=44.8ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "UNKNOWN", "sim_number", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.399] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791889, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.400] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:53:17Z", "value" => "UNKNOWN"} [2026-08-21 11:53:52.433] [DEBUG] QUERY OK db=33.3ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "UNKNOWN", "sim_iccid", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.434] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791890, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.434] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:53:17Z", "value" => "UNKNOWN"} [2026-08-21 11:53:52.483] [DEBUG] QUERY OK db=47.7ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "UNKNOWN", "sim_imsi", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791891, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.483] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:53:17Z", "value" => "UNKNOWN"} [2026-08-21 11:53:52.510] [DEBUG] QUERY OK db=26.6ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "UNKNOWN", "sim_iccid2", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791892, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.511] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:53:17Z", "value" => "UNKNOWN"} [2026-08-21 11:53:52.531] [DEBUG] QUERY OK db=19.5ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "UNKNOWN", "sim_imsi2", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791893, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.531] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:53:17Z", "value" => "1"} [2026-08-21 11:53:52.581] [DEBUG] QUERY OK db=49.9ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "1", "data_usage_mb", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.582] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791894, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.582] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:53:17Z", "value" => "0"} [2026-08-21 11:53:52.612] [DEBUG] QUERY OK db=29.5ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "0", "mobile_data_mb", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.612] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791895, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:52.613] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:53:17Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:53:52.656] [DEBUG] QUERY OK db=41.4ms queue=0.2ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:17Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77877, ~N[2026-08-21 11:53:52], ~N[2026-08-21 11:53:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:52.656] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791896, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:53:17Z", message: nil, status_log_id: 77877, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:52], updated_at: ~N[2026-08-21 11:53:52]}} [2026-08-21 11:53:53.389] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 11:53:53.389] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T03:03:18Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T03:03:18Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T03:03:18Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T03:03:18Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T03:03:18Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T03:03:18Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T03:03:18Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T03:03:18Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T03:03:18Z","vendor":"MoreFun"} [2026-08-21 11:53:53.390] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:03:18Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:03:18Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:03:18Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:03:18Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:03:18Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:03:18Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:03:18Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:03:18Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T03:03:18Z", "vendor" => "MoreFun"} [2026-08-21 11:53:53.390] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:53:53.390] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 11:53:53.390] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 11:53:53.391] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=735.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-08-21 11:53:53.392] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=121.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 11:53:53.393] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms 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-08-21 11:53:53.396] [DEBUG] QUERY OK source="parameter_definitions" db=1.6ms queue=1.0ms 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-08-21 11:53:53.398] [DEBUG] QUERY OK source="pos_terminal" db=1.3ms idle=3.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:53:53.439] [DEBUG] QUERY OK source="pos_merchant" db=40.1ms queue=0.1ms idle=2.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:53:53.441] [DEBUG] QUERY OK db=0.7ms queue=1.3ms idle=1308.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 ["123451234512345"] [2026-08-21 11:53:53.441] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:53:53.442] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms idle=43.1ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:53:53.442] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 11:53:53.446] [DEBUG] QUERY OK source="address" db=3.7ms idle=3.8ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:53:53.446] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 11:53:53.455] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 11:53:53.502] [DEBUG] QUERY OK db=45.4ms idle=13.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "fed47c2ce12c9be541dd703ca22d889c81b55eb316c74179e41290bf719dccb2", 6722, 932, ~U[2026-08-21 11:53:53Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:53:53], ~N[2026-08-21 11:53:53]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:53:53.502] [INFO ] AutoPushService: Created push log 49042 for MF919 params.zip [2026-08-21 11:53:53.503] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 6722, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:53:53.503] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:53:53.504] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 11:53:53.506] [DEBUG] QUERY OK source="config_file_versions" db=2.0ms idle=57.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-08-21 11:53:53.510] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 11:53:53.540] [DEBUG] QUERY OK db=29.6ms idle=8.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c26585bb9da336ab56f70c2f59656525867c4f24a3492de1bfcde2d857767a99", 1893, 17947, ~U[2026-08-21 11:53:53Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:53:53], ~N[2026-08-21 11:53:53]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:53:53.541] [INFO ] AutoPushService: Created push log 49043 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:53:53.541] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 1893, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:53:53.541] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:53:53.541] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 11:53:53.542] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=34.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 11:53:53.542] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 11:53:53.545] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=2.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:53:53.545] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 11:53:53.547] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:53:53.547] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:53:53.547] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:53:53.550] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=6.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:53:53.550] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:53:53.550] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 11:53:53.552] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=6.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:53:53.552] [INFO ] Terminal updated: 98250623730001 [2026-08-21 11:53:53.603] [DEBUG] QUERY OK source="tms_terminals" db=49.5ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:53:53], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:53:53.605] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=52.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 11:53:53.606] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=2.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:53:53.607] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=1.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:53:53.607] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:53:53.654] [DEBUG] QUERY OK source="parameter_push_logs" db=47.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 [19, "application", ~N[2026-08-21 11:23:53]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:53:53.655] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:53:53.655] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 11:53:53.658] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms 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 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:53:53.659] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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-08-21 11:53:53.660] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:53:53.661] [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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:53:53.707] [DEBUG] QUERY OK source="tms_terminals" db=45.7ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:53:53], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:53:53.731] [DEBUG] QUERY OK db=23.4ms queue=0.3ms idle=46.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T03:03:18Z", ~N[2026-08-21 11:53:53], ~N[2026-08-21 11:53:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:53:53.732] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77878, oid: "organization_id", upload_time: "2026-08-21T03:03:18Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:53], updated_at: ~N[2026-08-21 11:53:53]} [2026-08-21 11:53:53.732] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:03:18Z", "value" => "online"} [2026-08-21 11:53:53.778] [DEBUG] QUERY OK db=45.7ms queue=0.1ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T03:03:18Z", "online", "status", 77878, ~N[2026-08-21 11:53:53], ~N[2026-08-21 11:53:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:53.778] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791897, itemkey: "status", value: "online", timestamp: "2026-08-21T03:03:18Z", message: "Terminal status update", status_log_id: 77878, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:53], updated_at: ~N[2026-08-21 11:53:53]}} [2026-08-21 11:53:53.778] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 11:53:53.779] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:03:18Z", "value" => "51"} [2026-08-21 11:53:53.858] [DEBUG] QUERY OK db=78.7ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T03:03:18Z", "51", "battery", 77878, ~N[2026-08-21 11:53:53], ~N[2026-08-21 11:53:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:53.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791898, itemkey: "battery", value: "51", timestamp: "2026-08-21T03:03:18Z", message: "Battery level", status_log_id: 77878, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:53], updated_at: ~N[2026-08-21 11:53:53]}} [2026-08-21 11:53:53.858] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:03:18Z", "value" => "online"} [2026-08-21 11:53:53.891] [DEBUG] QUERY OK db=32.4ms idle=80.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T03:03:18Z", "online", "network", 77878, ~N[2026-08-21 11:53:53], ~N[2026-08-21 11:53:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:53.891] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791899, itemkey: "network", value: "online", timestamp: "2026-08-21T03:03:18Z", message: "Network connectivity", status_log_id: 77878, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:53], updated_at: ~N[2026-08-21 11:53:53]}} [2026-08-21 11:53:53.892] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 11:53:53.892] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:03:18Z", "value" => "0"} [2026-08-21 11:53:53.953] [DEBUG] QUERY OK db=60.1ms 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-08-21T03:03:18Z", "0", "cpu", 77878, ~N[2026-08-21 11:53:53], ~N[2026-08-21 11:53:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:53.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791900, itemkey: "cpu", value: "0", timestamp: "2026-08-21T03:03:18Z", message: "CPU usage percentage", status_log_id: 77878, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:53], updated_at: ~N[2026-08-21 11:53:53]}} [2026-08-21 11:53:53.953] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:03:18Z", "value" => "1.0.0"} [2026-08-21 11:53:54.007] [DEBUG] QUERY OK db=53.2ms idle=62.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T03:03:18Z", "1.0.0", "parameter_config", 77878, ~N[2026-08-21 11:53:53], ~N[2026-08-21 11:53:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:54.007] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791901, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T03:03:18Z", message: "Current parameters version", status_log_id: 77878, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:53], updated_at: ~N[2026-08-21 11:53:53]}} [2026-08-21 11:53:54.007] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:03:18Z", "value" => "1.0.1"} [2026-08-21 11:53:54.056] [DEBUG] QUERY OK db=48.4ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T03:03:18Z", "1.0.1", "emv_config", 77878, ~N[2026-08-21 11:53:54], ~N[2026-08-21 11:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:54.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791902, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T03:03:18Z", message: "Current EMV config version", status_log_id: 77878, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:54], updated_at: ~N[2026-08-21 11:53:54]}} [2026-08-21 11:53:54.057] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:03:18Z", "value" => ""} [2026-08-21 11:53:54.089] [DEBUG] QUERY OK db=30.8ms queue=0.8ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T03:03:18Z", "keys_config", 77878, ~N[2026-08-21 11:53:54], ~N[2026-08-21 11:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:54.089] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791903, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T03:03:18Z", message: "Current keys config version", status_log_id: 77878, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:54], updated_at: ~N[2026-08-21 11:53:54]}} [2026-08-21 11:53:54.089] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:03:18Z", "value" => "3.8.7.3"} [2026-08-21 11:53:54.132] [DEBUG] QUERY OK db=41.8ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T03:03:18Z", "3.8.7.3", "application", 77878, ~N[2026-08-21 11:53:54], ~N[2026-08-21 11:53:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:53:54.132] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791904, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T03:03:18Z", message: "Current application version", status_log_id: 77878, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:53:54], updated_at: ~N[2026-08-21 11:53:54]}} [2026-08-21 11:53:54.132] [WARN ] Unexpected async result [2026-08-21 11:53:54.132] [WARN ] Unexpected async result [2026-08-21 11:54:20.992] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:54:20.992] [INFO ] Incoming JSON payload: {"oid":"6d2dac60-0772-439f-b023-187804036f54","sn":"98251226730002","uploadTime":"2026-08-21T11:53:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"ram_free_mb","value":"1002","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:53:47Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.re (truncated) [2026-08-21 11:54:20.993] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6d2dac60-0772-439f-b023-187804036f54", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:53:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:53:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:53:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:53:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:53:47Z", "value" => "1002"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:53:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:53:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:53:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:53:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:53:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:53:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:53:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:53:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:53:47Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:53:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:53:47Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:53:47Z", "vendor" => "morefun"} [2026-08-21 11:54:20.994] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:54:20.994] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:54:20.994] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:54:20.995] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=860.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-08-21 11:54:20.997] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=626.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-08-21 11:54:20.997] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:54:20.997] [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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:54:20.998] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:54:21.060] [DEBUG] QUERY OK source="tms_terminals" db=61.9ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:54:20], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:54:21.060] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:54:21.062] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.2ms idle=62.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:54:21.135] [DEBUG] QUERY OK source="tms_terminals" db=73.0ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:54:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:54:21.159] [DEBUG] QUERY OK db=23.1ms idle=73.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "6d2dac60-0772-439f-b023-187804036f54", "2026-08-21T11:53:47Z", ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:54:21.159] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77879, oid: "6d2dac60-0772-439f-b023-187804036f54", upload_time: "2026-08-21T11:53:47Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]} [2026-08-21 11:54:21.159] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:53:47Z", "value" => "morefun"} [2026-08-21 11:54:21.198] [DEBUG] QUERY OK db=37.2ms queue=1.1ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "morefun", "vendor", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:21.199] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791905, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:21.199] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:53:47Z", "value" => "kiosk_launcher"} [2026-08-21 11:54:21.262] [DEBUG] QUERY OK db=63.3ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "kiosk_launcher", "model", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:21.263] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791906, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:21.263] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:53:47Z", "value" => "1.0"} [2026-08-21 11:54:21.292] [DEBUG] QUERY OK db=29.2ms queue=0.1ms idle=65.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "1.0", "app_version", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:21.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791907, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:21.293] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:53:47Z", "value" => "13"} [2026-08-21 11:54:21.357] [DEBUG] QUERY OK db=63.5ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "13", "android_version", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:21.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791908, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:21.358] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:53:47Z", "value" => "1002"} [2026-08-21 11:54:21.392] [DEBUG] QUERY OK db=34.3ms queue=0.1ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "1002", "ram_free_mb", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:21.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791909, itemkey: "ram_free_mb", value: "1002", timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:21.393] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:53:47Z", "value" => "WIFI"} [2026-08-21 11:54:21.451] [DEBUG] QUERY OK db=56.9ms idle=21.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "WIFI", "network_type", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:21.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791910, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:21.451] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:53:47Z", "value" => "true"} [2026-08-21 11:54:21.506] [DEBUG] QUERY OK db=54.3ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "true", "kiosk_active", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:21.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791911, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:21.506] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:53:47Z", "value" => ""} [2026-08-21 11:54:21.560] [DEBUG] QUERY OK db=53.5ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:53:47Z", "sim_operator", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:21.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791912, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:21.561] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:53:47Z", "value" => "UNKNOWN"} [2026-08-21 11:54:21.609] [DEBUG] QUERY OK db=45.4ms queue=0.1ms idle=57.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "UNKNOWN", "sim_number", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:21.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791913, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:21.609] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:53:47Z", "value" => "UNKNOWN"} [2026-08-21 11:54:21.662] [DEBUG] QUERY OK db=52.3ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "UNKNOWN", "sim_iccid", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:21.663] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791914, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:21.663] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:53:47Z", "value" => "UNKNOWN"} [2026-08-21 11:54:21.699] [DEBUG] QUERY OK db=35.1ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "UNKNOWN", "sim_imsi", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:21.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791915, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:21.700] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:53:47Z", "value" => "UNKNOWN"} [2026-08-21 11:54:21.799] [DEBUG] QUERY OK db=99.2ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "UNKNOWN", "sim_iccid2", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:21.800] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791916, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:21.800] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:53:47Z", "value" => "UNKNOWN"} [2026-08-21 11:54:21.869] [DEBUG] QUERY OK db=69.2ms idle=100.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "UNKNOWN", "sim_imsi2", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:21.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791917, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:21.870] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:53:47Z", "value" => "1"} [2026-08-21 11:54:21.974] [DEBUG] QUERY OK db=103.2ms idle=70.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "1", "data_usage_mb", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:21.975] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791918, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:21.975] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:53:47Z", "value" => "0"} [2026-08-21 11:54:22.023] [DEBUG] QUERY OK db=47.6ms idle=105.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "0", "mobile_data_mb", 77879, ~N[2026-08-21 11:54:21], ~N[2026-08-21 11:54:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:22.023] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791919, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:21], updated_at: ~N[2026-08-21 11:54:21]}} [2026-08-21 11:54:22.023] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:53:47Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:54:22.311] [DEBUG] QUERY OK db=286.4ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:53:47Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77879, ~N[2026-08-21 11:54:22], ~N[2026-08-21 11:54:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:22.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791920, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:53:47Z", message: nil, status_log_id: 77879, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:22], updated_at: ~N[2026-08-21 11:54:22]}} [2026-08-21 11:54:22.313] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:54:22.313] [INFO ] Incoming JSON payload: {"oid":"c250d7eb-d4b1-401d-91b7-27cf38b443e2","sn":"98251226730001","uploadTime":"2026-08-21T11:54:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:54:20Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:54:22.316] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c250d7eb-d4b1-401d-91b7-27cf38b443e2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:54:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:54:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:54:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:54:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:54:20Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:54:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:54:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:54:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:54:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:54:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:54:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:54:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:54:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:54:20Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:54:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:54:20Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:54:20Z", "vendor" => "morefun"} [2026-08-21 11:54:22.317] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:54:22.317] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:54:22.317] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:54:22.319] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=294.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-08-21 11:54:22.321] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=8.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-08-21 11:54:22.321] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:54:22.323] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:54:22.323] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:54:22.369] [DEBUG] QUERY OK source="tms_terminals" db=45.3ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:54:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:54:22.369] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:54:22.374] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=47.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-08-21 11:54:22.430] [DEBUG] QUERY OK source="tms_terminals" db=55.4ms queue=0.2ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:54:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:54:22.487] [DEBUG] QUERY OK db=56.4ms queue=0.1ms idle=53.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c250d7eb-d4b1-401d-91b7-27cf38b443e2", "2026-08-21T11:54:20Z", ~N[2026-08-21 11:54:22], ~N[2026-08-21 11:54:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:54:22.488] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77880, oid: "c250d7eb-d4b1-401d-91b7-27cf38b443e2", upload_time: "2026-08-21T11:54:20Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:22], updated_at: ~N[2026-08-21 11:54:22]} [2026-08-21 11:54:22.488] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:54:20Z", "value" => "morefun"} [2026-08-21 11:54:22.546] [DEBUG] QUERY OK db=57.6ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "morefun", "vendor", 77880, ~N[2026-08-21 11:54:22], ~N[2026-08-21 11:54:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:22.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791921, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:22], updated_at: ~N[2026-08-21 11:54:22]}} [2026-08-21 11:54:22.546] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:54:20Z", "value" => "kiosk_launcher"} [2026-08-21 11:54:22.570] [DEBUG] QUERY OK db=23.0ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "kiosk_launcher", "model", 77880, ~N[2026-08-21 11:54:22], ~N[2026-08-21 11:54:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:22.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791922, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:22], updated_at: ~N[2026-08-21 11:54:22]}} [2026-08-21 11:54:22.570] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:54:20Z", "value" => "1.0"} [2026-08-21 11:54:22.641] [DEBUG] QUERY OK db=70.8ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "1.0", "app_version", 77880, ~N[2026-08-21 11:54:22], ~N[2026-08-21 11:54:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:22.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791923, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:22], updated_at: ~N[2026-08-21 11:54:22]}} [2026-08-21 11:54:22.642] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:54:20Z", "value" => "13"} [2026-08-21 11:54:22.705] [DEBUG] QUERY OK db=63.5ms idle=72.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "13", "android_version", 77880, ~N[2026-08-21 11:54:22], ~N[2026-08-21 11:54:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:22.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791924, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:22], updated_at: ~N[2026-08-21 11:54:22]}} [2026-08-21 11:54:22.706] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:54:20Z", "value" => "921"} [2026-08-21 11:54:22.730] [DEBUG] QUERY OK db=23.3ms idle=65.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "921", "ram_free_mb", 77880, ~N[2026-08-21 11:54:22], ~N[2026-08-21 11:54:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:22.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791925, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:22], updated_at: ~N[2026-08-21 11:54:22]}} [2026-08-21 11:54:22.730] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:54:20Z", "value" => "WIFI"} [2026-08-21 11:54:22.766] [DEBUG] QUERY OK db=33.3ms queue=2.0ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "WIFI", "network_type", 77880, ~N[2026-08-21 11:54:22], ~N[2026-08-21 11:54:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:22.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791926, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:22], updated_at: ~N[2026-08-21 11:54:22]}} [2026-08-21 11:54:22.766] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:54:20Z", "value" => "true"} [2026-08-21 11:54:22.827] [DEBUG] QUERY OK db=60.4ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "true", "kiosk_active", 77880, ~N[2026-08-21 11:54:22], ~N[2026-08-21 11:54:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:22.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791927, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:22], updated_at: ~N[2026-08-21 11:54:22]}} [2026-08-21 11:54:22.828] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:54:20Z", "value" => ""} [2026-08-21 11:54:22.863] [DEBUG] QUERY OK db=34.6ms idle=62.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:54:20Z", "sim_operator", 77880, ~N[2026-08-21 11:54:22], ~N[2026-08-21 11:54:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:22.864] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791928, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:22], updated_at: ~N[2026-08-21 11:54:22]}} [2026-08-21 11:54:22.864] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:54:20Z", "value" => "UNKNOWN"} [2026-08-21 11:54:22.892] [DEBUG] QUERY OK db=28.4ms queue=0.1ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "UNKNOWN", "sim_number", 77880, ~N[2026-08-21 11:54:22], ~N[2026-08-21 11:54:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:22.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791929, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:22], updated_at: ~N[2026-08-21 11:54:22]}} [2026-08-21 11:54:22.893] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:54:20Z", "value" => "UNKNOWN"} [2026-08-21 11:54:22.940] [DEBUG] QUERY OK db=47.1ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "UNKNOWN", "sim_iccid", 77880, ~N[2026-08-21 11:54:22], ~N[2026-08-21 11:54:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:22.941] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791930, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:22], updated_at: ~N[2026-08-21 11:54:22]}} [2026-08-21 11:54:22.941] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:54:20Z", "value" => "UNKNOWN"} [2026-08-21 11:54:22.976] [DEBUG] QUERY OK db=35.0ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "UNKNOWN", "sim_imsi", 77880, ~N[2026-08-21 11:54:22], ~N[2026-08-21 11:54:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:22.976] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791931, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:22], updated_at: ~N[2026-08-21 11:54:22]}} [2026-08-21 11:54:22.977] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:54:20Z", "value" => "UNKNOWN"} [2026-08-21 11:54:23.026] [DEBUG] QUERY OK db=49.0ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "UNKNOWN", "sim_iccid2", 77880, ~N[2026-08-21 11:54:22], ~N[2026-08-21 11:54:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:23.027] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791932, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:22], updated_at: ~N[2026-08-21 11:54:22]}} [2026-08-21 11:54:23.027] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:54:20Z", "value" => "UNKNOWN"} [2026-08-21 11:54:23.063] [DEBUG] QUERY OK db=35.5ms queue=0.3ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "UNKNOWN", "sim_imsi2", 77880, ~N[2026-08-21 11:54:23], ~N[2026-08-21 11:54:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:23.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791933, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:23], updated_at: ~N[2026-08-21 11:54:23]}} [2026-08-21 11:54:23.063] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:54:20Z", "value" => "35"} [2026-08-21 11:54:23.093] [DEBUG] QUERY OK db=29.2ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "35", "data_usage_mb", 77880, ~N[2026-08-21 11:54:23], ~N[2026-08-21 11:54:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:23.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791934, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:23], updated_at: ~N[2026-08-21 11:54:23]}} [2026-08-21 11:54:23.093] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:54:20Z", "value" => "0"} [2026-08-21 11:54:23.127] [DEBUG] QUERY OK db=33.0ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "0", "mobile_data_mb", 77880, ~N[2026-08-21 11:54:23], ~N[2026-08-21 11:54:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:23.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791935, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:23], updated_at: ~N[2026-08-21 11:54:23]}} [2026-08-21 11:54:23.128] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:54:20Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:54:23.165] [DEBUG] QUERY OK db=35.5ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:20Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77880, ~N[2026-08-21 11:54:23], ~N[2026-08-21 11:54:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:23.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791936, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:54:20Z", message: nil, status_log_id: 77880, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:23], updated_at: ~N[2026-08-21 11:54:23]}} [2026-08-21 11:54:27.874] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 11:54:27.874] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T15:54:25Z","org.device":[{"itemkey":"battery","value":50,"timestamp":"2026-08-21T15:54:25Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T15:54:25Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T15:54:25Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T15:54:25Z","message":""}]} [2026-08-21 11:54:27.874] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T15:54:25Z", "value" => 50}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T15:54:25Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T15:54:25Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T15:54:25Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T15:54:25Z"} [2026-08-21 11:54:27.874] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:54:27.876] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=739.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:54:27.876] [INFO ] Terminal updated: 61250415798001 [2026-08-21 11:54:27.903] [DEBUG] QUERY OK source="tms_terminals" db=26.0ms queue=0.2ms idle=482.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:54:27], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:54:27.906] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=27.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:54:28.197] [DEBUG] QUERY OK source="tms_terminals" db=289.2ms queue=0.6ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:54:27], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:54:28.261] [DEBUG] QUERY OK db=64.2ms queue=0.1ms idle=290.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T15:54:25Z", ~N[2026-08-21 11:54:28], ~N[2026-08-21 11:54:28]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:54:28.262] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77881, oid: "org-id-placeholder", upload_time: "2026-08-21T15:54:25Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:28], updated_at: ~N[2026-08-21 11:54:28]} [2026-08-21 11:54:28.262] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T15:54:25Z", "value" => 50} [2026-08-21 11:54:28.286] [DEBUG] QUERY OK db=23.2ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:54:25Z", "50", "battery", 77881, ~N[2026-08-21 11:54:28], ~N[2026-08-21 11:54:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:28.286] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791937, itemkey: "battery", value: "50", timestamp: "2026-08-21T15:54:25Z", message: nil, status_log_id: 77881, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:28], updated_at: ~N[2026-08-21 11:54:28]}} [2026-08-21 11:54:28.286] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T15:54:25Z", "value" => 50} [2026-08-21 11:54:28.318] [DEBUG] QUERY OK db=31.6ms queue=0.1ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T15:54:25Z", "50", "memory", 77881, ~N[2026-08-21 11:54:28], ~N[2026-08-21 11:54:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:28.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791938, itemkey: "memory", value: "50", timestamp: "2026-08-21T15:54:25Z", message: "Normal", status_log_id: 77881, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:28], updated_at: ~N[2026-08-21 11:54:28]}} [2026-08-21 11:54:28.319] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T15:54:25Z", "value" => 50} [2026-08-21 11:54:28.354] [DEBUG] QUERY OK db=34.0ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:54:25Z", "50", "cpu", 77881, ~N[2026-08-21 11:54:28], ~N[2026-08-21 11:54:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:28.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791939, itemkey: "cpu", value: "50", timestamp: "2026-08-21T15:54:25Z", message: nil, status_log_id: 77881, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:28], updated_at: ~N[2026-08-21 11:54:28]}} [2026-08-21 11:54:28.354] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T15:54:25Z", "value" => "online"} [2026-08-21 11:54:28.378] [DEBUG] QUERY OK db=23.4ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:54:25Z", "online", "network", 77881, ~N[2026-08-21 11:54:28], ~N[2026-08-21 11:54:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:28.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791940, itemkey: "network", value: "online", timestamp: "2026-08-21T15:54:25Z", message: nil, status_log_id: 77881, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:28], updated_at: ~N[2026-08-21 11:54:28]}} [2026-08-21 11:54:28.379] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 11:54:51.324] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:54:51.324] [INFO ] Incoming JSON payload: {"oid":"2b57492a-f112-40f7-ad38-13b891947ab8","sn":"98251226730002","uploadTime":"2026-08-21T11:54:17Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"ram_free_mb","value":"1004","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:54:17Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.re (truncated) [2026-08-21 11:54:51.326] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2b57492a-f112-40f7-ad38-13b891947ab8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:54:17Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:54:17Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:54:17Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:54:17Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:54:17Z", "value" => "1004"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:54:17Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:54:17Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:54:17Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:54:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:54:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:54:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:54:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:54:17Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:54:17Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:54:17Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:54:17Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:54:17Z", "vendor" => "morefun"} [2026-08-21 11:54:51.326] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:54:51.326] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:54:51.326] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:54:51.328] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=858.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-08-21 11:54:51.329] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=190.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-08-21 11:54:51.329] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:54:51.334] [DEBUG] QUERY OK source="tms_terminals" db=4.8ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:54:51.335] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:54:51.405] [DEBUG] QUERY OK source="tms_terminals" db=68.8ms idle=6.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:54:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:54:51.406] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:54:51.407] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=72.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:54:51.431] [DEBUG] QUERY OK source="tms_terminals" db=23.7ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:54:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:54:51.489] [DEBUG] QUERY OK db=57.2ms idle=24.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "2b57492a-f112-40f7-ad38-13b891947ab8", "2026-08-21T11:54:17Z", ~N[2026-08-21 11:54:51], ~N[2026-08-21 11:54:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:54:51.490] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77882, oid: "2b57492a-f112-40f7-ad38-13b891947ab8", upload_time: "2026-08-21T11:54:17Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:51], updated_at: ~N[2026-08-21 11:54:51]} [2026-08-21 11:54:51.490] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:54:17Z", "value" => "morefun"} [2026-08-21 11:54:51.511] [DEBUG] QUERY OK db=21.0ms idle=18.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "morefun", "vendor", 77882, ~N[2026-08-21 11:54:51], ~N[2026-08-21 11:54:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:51.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791941, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:51], updated_at: ~N[2026-08-21 11:54:51]}} [2026-08-21 11:54:51.512] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:54:17Z", "value" => "kiosk_launcher"} [2026-08-21 11:54:51.568] [DEBUG] QUERY OK db=56.3ms idle=22.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "kiosk_launcher", "model", 77882, ~N[2026-08-21 11:54:51], ~N[2026-08-21 11:54:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:51.569] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791942, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:51], updated_at: ~N[2026-08-21 11:54:51]}} [2026-08-21 11:54:51.569] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:54:17Z", "value" => "1.0"} [2026-08-21 11:54:51.611] [DEBUG] QUERY OK db=41.5ms idle=57.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "1.0", "app_version", 77882, ~N[2026-08-21 11:54:51], ~N[2026-08-21 11:54:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:51.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791943, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:51], updated_at: ~N[2026-08-21 11:54:51]}} [2026-08-21 11:54:51.611] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:54:17Z", "value" => "13"} [2026-08-21 11:54:51.662] [DEBUG] QUERY OK db=50.5ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "13", "android_version", 77882, ~N[2026-08-21 11:54:51], ~N[2026-08-21 11:54:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:51.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791944, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:51], updated_at: ~N[2026-08-21 11:54:51]}} [2026-08-21 11:54:51.662] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:54:17Z", "value" => "1004"} [2026-08-21 11:54:51.694] [DEBUG] QUERY OK db=31.6ms idle=51.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "1004", "ram_free_mb", 77882, ~N[2026-08-21 11:54:51], ~N[2026-08-21 11:54:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:51.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791945, itemkey: "ram_free_mb", value: "1004", timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:51], updated_at: ~N[2026-08-21 11:54:51]}} [2026-08-21 11:54:51.694] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:54:17Z", "value" => "WIFI"} [2026-08-21 11:54:51.730] [DEBUG] QUERY OK db=35.0ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "WIFI", "network_type", 77882, ~N[2026-08-21 11:54:51], ~N[2026-08-21 11:54:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:51.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791946, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:51], updated_at: ~N[2026-08-21 11:54:51]}} [2026-08-21 11:54:51.731] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:54:17Z", "value" => "true"} [2026-08-21 11:54:51.800] [DEBUG] QUERY OK db=68.3ms queue=0.1ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "true", "kiosk_active", 77882, ~N[2026-08-21 11:54:51], ~N[2026-08-21 11:54:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:51.800] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791947, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:51], updated_at: ~N[2026-08-21 11:54:51]}} [2026-08-21 11:54:51.802] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:54:17Z", "value" => ""} [2026-08-21 11:54:51.875] [DEBUG] QUERY OK db=72.8ms queue=0.1ms idle=71.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:54:17Z", "sim_operator", 77882, ~N[2026-08-21 11:54:51], ~N[2026-08-21 11:54:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:51.876] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791948, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:51], updated_at: ~N[2026-08-21 11:54:51]}} [2026-08-21 11:54:51.876] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:54:17Z", "value" => "UNKNOWN"} [2026-08-21 11:54:52.051] [DEBUG] QUERY OK db=175.1ms idle=76.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "UNKNOWN", "sim_number", 77882, ~N[2026-08-21 11:54:51], ~N[2026-08-21 11:54:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791949, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:51], updated_at: ~N[2026-08-21 11:54:51]}} [2026-08-21 11:54:52.052] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:54:17Z", "value" => "UNKNOWN"} [2026-08-21 11:54:52.114] [DEBUG] QUERY OK db=61.0ms queue=0.4ms idle=177.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "UNKNOWN", "sim_iccid", 77882, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791950, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.115] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:54:17Z", "value" => "UNKNOWN"} [2026-08-21 11:54:52.151] [DEBUG] QUERY OK db=35.7ms queue=0.1ms idle=64.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "UNKNOWN", "sim_imsi", 77882, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791951, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.152] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:54:17Z", "value" => "UNKNOWN"} [2026-08-21 11:54:52.203] [DEBUG] QUERY OK db=50.4ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "UNKNOWN", "sim_iccid2", 77882, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791952, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.203] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:54:17Z", "value" => "UNKNOWN"} [2026-08-21 11:54:52.270] [DEBUG] QUERY OK db=66.7ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "UNKNOWN", "sim_imsi2", 77882, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791953, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.271] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:54:17Z", "value" => "1"} [2026-08-21 11:54:52.295] [DEBUG] QUERY OK db=23.4ms idle=68.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "1", "data_usage_mb", 77882, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.295] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791954, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.295] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:54:17Z", "value" => "0"} [2026-08-21 11:54:52.352] [DEBUG] QUERY OK db=55.6ms queue=0.1ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "0", "mobile_data_mb", 77882, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791955, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.352] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:54:17Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:54:52.387] [DEBUG] QUERY OK db=33.8ms idle=58.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:17Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77882, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791956, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:54:17Z", message: nil, status_log_id: 77882, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.388] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:54:52.388] [INFO ] Incoming JSON payload: {"oid":"f1db1202-1cbb-4470-8539-b963548781ca","sn":"98251226730001","uploadTime":"2026-08-21T11:54:50Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:54:50Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:54:52.389] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f1db1202-1cbb-4470-8539-b963548781ca", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:54:50Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:54:50Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:54:50Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:54:50Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:54:50Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:54:50Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:54:50Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:54:50Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:54:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:54:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:54:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:54:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:54:50Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:54:50Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:54:50Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:54:50Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:54:50Z", "vendor" => "morefun"} [2026-08-21 11:54:52.391] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:54:52.391] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:54:52.393] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:54:52.395] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms 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.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 11:54:52.397] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.9ms idle=9.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:54:52.397] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:54:52.399] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:54:52.399] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:54:52.454] [DEBUG] QUERY OK source="tms_terminals" db=54.6ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:54:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:54:52.454] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:54:52.456] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=55.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:54:52.493] [DEBUG] QUERY OK source="tms_terminals" db=37.3ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:54:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:54:52.546] [DEBUG] QUERY OK db=51.3ms idle=17.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "f1db1202-1cbb-4470-8539-b963548781ca", "2026-08-21T11:54:50Z", ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:54:52.546] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77883, oid: "f1db1202-1cbb-4470-8539-b963548781ca", upload_time: "2026-08-21T11:54:50Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]} [2026-08-21 11:54:52.546] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:54:50Z", "value" => "morefun"} [2026-08-21 11:54:52.583] [DEBUG] QUERY OK db=35.8ms queue=0.1ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:50Z", "morefun", "vendor", 77883, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791957, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.584] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:54:50Z", "value" => "kiosk_launcher"} [2026-08-21 11:54:52.641] [DEBUG] QUERY OK db=56.2ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:50Z", "kiosk_launcher", "model", 77883, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791958, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.641] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:54:50Z", "value" => "1.0"} [2026-08-21 11:54:52.701] [DEBUG] QUERY OK db=59.6ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:50Z", "1.0", "app_version", 77883, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791959, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.702] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:54:50Z", "value" => "13"} [2026-08-21 11:54:52.737] [DEBUG] QUERY OK db=35.0ms queue=0.2ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:50Z", "13", "android_version", 77883, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.738] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791960, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.738] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:54:50Z", "value" => "921"} [2026-08-21 11:54:52.775] [DEBUG] QUERY OK db=36.2ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:50Z", "921", "ram_free_mb", 77883, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791961, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.776] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:54:50Z", "value" => "WIFI"} [2026-08-21 11:54:52.832] [DEBUG] QUERY OK db=55.5ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:50Z", "WIFI", "network_type", 77883, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791962, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.833] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:54:50Z", "value" => "true"} [2026-08-21 11:54:52.870] [DEBUG] QUERY OK db=36.8ms queue=0.1ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:50Z", "true", "kiosk_active", 77883, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791963, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.871] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:54:50Z", "value" => ""} [2026-08-21 11:54:52.911] [DEBUG] QUERY OK db=37.6ms queue=0.2ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:54:50Z", "sim_operator", 77883, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.911] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791964, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.911] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:54:50Z", "value" => "UNKNOWN"} [2026-08-21 11:54:52.971] [DEBUG] QUERY OK db=59.5ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:50Z", "UNKNOWN", "sim_number", 77883, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:52.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791965, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:52.972] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:54:50Z", "value" => "UNKNOWN"} [2026-08-21 11:54:53.013] [DEBUG] QUERY OK db=40.2ms idle=61.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:50Z", "UNKNOWN", "sim_iccid", 77883, ~N[2026-08-21 11:54:52], ~N[2026-08-21 11:54:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:53.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791966, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:52], updated_at: ~N[2026-08-21 11:54:52]}} [2026-08-21 11:54:53.013] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:54:50Z", "value" => "UNKNOWN"} [2026-08-21 11:54:53.071] [DEBUG] QUERY OK db=57.5ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:50Z", "UNKNOWN", "sim_imsi", 77883, ~N[2026-08-21 11:54:53], ~N[2026-08-21 11:54:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:53.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791967, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:53], updated_at: ~N[2026-08-21 11:54:53]}} [2026-08-21 11:54:53.072] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:54:50Z", "value" => "UNKNOWN"} [2026-08-21 11:54:53.107] [DEBUG] QUERY OK db=34.9ms idle=59.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:50Z", "UNKNOWN", "sim_iccid2", 77883, ~N[2026-08-21 11:54:53], ~N[2026-08-21 11:54:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:53.107] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791968, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:53], updated_at: ~N[2026-08-21 11:54:53]}} [2026-08-21 11:54:53.107] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:54:50Z", "value" => "UNKNOWN"} [2026-08-21 11:54:53.165] [DEBUG] QUERY OK db=56.9ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:50Z", "UNKNOWN", "sim_imsi2", 77883, ~N[2026-08-21 11:54:53], ~N[2026-08-21 11:54:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:53.165] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791969, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:53], updated_at: ~N[2026-08-21 11:54:53]}} [2026-08-21 11:54:53.165] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:54:50Z", "value" => "35"} [2026-08-21 11:54:53.198] [DEBUG] QUERY OK db=32.8ms idle=58.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:50Z", "35", "data_usage_mb", 77883, ~N[2026-08-21 11:54:53], ~N[2026-08-21 11:54:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:53.199] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791970, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:53], updated_at: ~N[2026-08-21 11:54:53]}} [2026-08-21 11:54:53.199] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:54:50Z", "value" => "0"} [2026-08-21 11:54:53.236] [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-08-21T11:54:50Z", "0", "mobile_data_mb", 77883, ~N[2026-08-21 11:54:53], ~N[2026-08-21 11:54:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:53.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791971, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:53], updated_at: ~N[2026-08-21 11:54:53]}} [2026-08-21 11:54:53.237] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:54:50Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:54:53.279] [DEBUG] QUERY OK db=41.6ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:50Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77883, ~N[2026-08-21 11:54:53], ~N[2026-08-21 11:54:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:54:53.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791972, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:54:50Z", message: nil, status_log_id: 77883, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:54:53], updated_at: ~N[2026-08-21 11:54:53]}} [2026-08-21 11:55:21.572] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:55:21.572] [INFO ] Incoming JSON payload: {"oid":"0cdd23cd-1cf3-4f85-9869-c50777e6f671","sn":"98251226730001","uploadTime":"2026-08-21T11:55:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:55:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:55:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:55:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:55:21Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T11:55:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:55:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:55:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:55:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:55:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:55:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:55:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:55:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:55:21Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:55:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:55: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:55:21.573] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0cdd23cd-1cf3-4f85-9869-c50777e6f671", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:55:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:55:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:55:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:55:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:55:21Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:55:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:55:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:55:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:55:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:55:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:55:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:55:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:55:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:55:21Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:55:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:55: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:55:21Z", "vendor" => "morefun"} [2026-08-21 11:55:21.573] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:55:21.573] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:55:21.573] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:55:21.574] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1431.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-08-21 11:55:21.574] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=983.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:55:21.575] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:55:21.576] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:55:21.576] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:55:21.609] [DEBUG] QUERY OK source="tms_terminals" db=32.2ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:55:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:55:21.609] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:55:21.610] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=15.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:55:21.649] [DEBUG] QUERY OK source="tms_terminals" db=38.6ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:55:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:55:21.673] [DEBUG] QUERY OK db=23.5ms idle=39.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0cdd23cd-1cf3-4f85-9869-c50777e6f671", "2026-08-21T11:55:21Z", ~N[2026-08-21 11:55:21], ~N[2026-08-21 11:55:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:55:21.673] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77884, oid: "0cdd23cd-1cf3-4f85-9869-c50777e6f671", upload_time: "2026-08-21T11:55:21Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:21], updated_at: ~N[2026-08-21 11:55:21]} [2026-08-21 11:55:21.673] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:55:21Z", "value" => "morefun"} [2026-08-21 11:55:21.758] [DEBUG] QUERY OK db=84.4ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:21Z", "morefun", "vendor", 77884, ~N[2026-08-21 11:55:21], ~N[2026-08-21 11:55:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:21.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791973, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:21], updated_at: ~N[2026-08-21 11:55:21]}} [2026-08-21 11:55:21.759] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:55:21Z", "value" => "kiosk_launcher"} [2026-08-21 11:55:21.783] [DEBUG] QUERY OK db=23.8ms idle=86.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:21Z", "kiosk_launcher", "model", 77884, ~N[2026-08-21 11:55:21], ~N[2026-08-21 11:55:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:21.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791974, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:21], updated_at: ~N[2026-08-21 11:55:21]}} [2026-08-21 11:55:21.783] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:55:21Z", "value" => "1.0"} [2026-08-21 11:55:21.808] [DEBUG] QUERY OK db=23.4ms queue=0.4ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:21Z", "1.0", "app_version", 77884, ~N[2026-08-21 11:55:21], ~N[2026-08-21 11:55:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:21.808] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791975, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:21], updated_at: ~N[2026-08-21 11:55:21]}} [2026-08-21 11:55:21.808] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:55:21Z", "value" => "13"} [2026-08-21 11:55:21.838] [DEBUG] QUERY OK db=30.0ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:21Z", "13", "android_version", 77884, ~N[2026-08-21 11:55:21], ~N[2026-08-21 11:55:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:21.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791976, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:21], updated_at: ~N[2026-08-21 11:55:21]}} [2026-08-21 11:55:21.839] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:55:21Z", "value" => "921"} [2026-08-21 11:55:21.876] [DEBUG] QUERY OK db=37.2ms idle=31.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:21Z", "921", "ram_free_mb", 77884, ~N[2026-08-21 11:55:21], ~N[2026-08-21 11:55:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:21.878] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791977, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:21], updated_at: ~N[2026-08-21 11:55:21]}} [2026-08-21 11:55:21.878] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:55:21Z", "value" => "WIFI"} [2026-08-21 11:55:21.903] [DEBUG] QUERY OK db=24.0ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:21Z", "WIFI", "network_type", 77884, ~N[2026-08-21 11:55:21], ~N[2026-08-21 11:55:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:21.905] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791978, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:21], updated_at: ~N[2026-08-21 11:55:21]}} [2026-08-21 11:55:21.905] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:55:21Z", "value" => "true"} [2026-08-21 11:55:21.948] [DEBUG] QUERY OK db=42.0ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:21Z", "true", "kiosk_active", 77884, ~N[2026-08-21 11:55:21], ~N[2026-08-21 11:55:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:21.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791979, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:21], updated_at: ~N[2026-08-21 11:55:21]}} [2026-08-21 11:55:21.949] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:55:21Z", "value" => ""} [2026-08-21 11:55:21.993] [DEBUG] QUERY OK db=42.9ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:55:21Z", "sim_operator", 77884, ~N[2026-08-21 11:55:21], ~N[2026-08-21 11:55:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:21.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791980, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:21], updated_at: ~N[2026-08-21 11:55:21]}} [2026-08-21 11:55:21.993] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:55:21Z", "value" => "UNKNOWN"} [2026-08-21 11:55:22.032] [DEBUG] QUERY OK db=38.3ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:21Z", "UNKNOWN", "sim_number", 77884, ~N[2026-08-21 11:55:21], ~N[2026-08-21 11:55:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:22.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791981, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:21], updated_at: ~N[2026-08-21 11:55:21]}} [2026-08-21 11:55:22.032] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:55:21Z", "value" => "UNKNOWN"} [2026-08-21 11:55:22.063] [DEBUG] QUERY OK db=30.3ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:21Z", "UNKNOWN", "sim_iccid", 77884, ~N[2026-08-21 11:55:22], ~N[2026-08-21 11:55:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:22.064] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791982, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:22], updated_at: ~N[2026-08-21 11:55:22]}} [2026-08-21 11:55:22.064] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:55:21Z", "value" => "UNKNOWN"} [2026-08-21 11:55:22.114] [DEBUG] QUERY OK db=48.4ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:21Z", "UNKNOWN", "sim_imsi", 77884, ~N[2026-08-21 11:55:22], ~N[2026-08-21 11:55:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:22.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791983, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:22], updated_at: ~N[2026-08-21 11:55:22]}} [2026-08-21 11:55:22.114] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:55:21Z", "value" => "UNKNOWN"} [2026-08-21 11:55:22.296] [DEBUG] QUERY OK db=181.2ms idle=52.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:21Z", "UNKNOWN", "sim_iccid2", 77884, ~N[2026-08-21 11:55:22], ~N[2026-08-21 11:55:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:22.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791984, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:22], updated_at: ~N[2026-08-21 11:55:22]}} [2026-08-21 11:55:22.297] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:55:21Z", "value" => "UNKNOWN"} [2026-08-21 11:55:22.368] [DEBUG] QUERY OK db=70.7ms idle=183.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:21Z", "UNKNOWN", "sim_imsi2", 77884, ~N[2026-08-21 11:55:22], ~N[2026-08-21 11:55:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:22.368] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791985, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:22], updated_at: ~N[2026-08-21 11:55:22]}} [2026-08-21 11:55:22.369] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:55:21Z", "value" => "35"} [2026-08-21 11:55:22.456] [DEBUG] QUERY OK db=87.0ms idle=72.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:21Z", "35", "data_usage_mb", 77884, ~N[2026-08-21 11:55:22], ~N[2026-08-21 11:55:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:22.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791986, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:22], updated_at: ~N[2026-08-21 11:55:22]}} [2026-08-21 11:55:22.456] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:55:21Z", "value" => "0"} [2026-08-21 11:55:22.509] [DEBUG] QUERY OK db=52.0ms queue=0.1ms idle=88.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:21Z", "0", "mobile_data_mb", 77884, ~N[2026-08-21 11:55:22], ~N[2026-08-21 11:55:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:22.509] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791987, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:22], updated_at: ~N[2026-08-21 11:55:22]}} [2026-08-21 11:55:22.510] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:55: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:55:22.588] [DEBUG] QUERY OK db=72.2ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77884, ~N[2026-08-21 11:55:22], ~N[2026-08-21 11:55:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:22.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791988, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:55:21Z", message: nil, status_log_id: 77884, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:22], updated_at: ~N[2026-08-21 11:55:22]}} [2026-08-21 11:55:22.595] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:55:22.596] [INFO ] Incoming JSON payload: {"oid":"22be00dd-0e52-4e18-a6bf-b34d6af8eb49","sn":"98251226730002","uploadTime":"2026-08-21T11:54:47Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"ram_free_mb","value":"999","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:54:47Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:55:22.609] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "22be00dd-0e52-4e18-a6bf-b34d6af8eb49", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:54:47Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:54:47Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:54:47Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:54:47Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:54:47Z", "value" => "999"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:54:47Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:54:47Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:54:47Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:54:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:54:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:54:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:54:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:54:47Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:54:47Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:54:47Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:54:47Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:54:47Z", "vendor" => "morefun"} [2026-08-21 11:55:22.609] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:55:22.609] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:55:22.609] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:55:22.611] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=26.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-08-21 11:55:22.612] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=0.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:55:22.612] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:55:22.614] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=0.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:55:22.615] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:55:22.676] [DEBUG] QUERY OK source="tms_terminals" db=60.6ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:55:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:55:22.676] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:55:22.679] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=14.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:55:22.729] [DEBUG] QUERY OK source="tms_terminals" db=50.0ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:55:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:55:22.786] [DEBUG] QUERY OK db=55.0ms queue=1.0ms idle=50.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "22be00dd-0e52-4e18-a6bf-b34d6af8eb49", "2026-08-21T11:54:47Z", ~N[2026-08-21 11:55:22], ~N[2026-08-21 11:55:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:55:22.786] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77885, oid: "22be00dd-0e52-4e18-a6bf-b34d6af8eb49", upload_time: "2026-08-21T11:54:47Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:22], updated_at: ~N[2026-08-21 11:55:22]} [2026-08-21 11:55:22.786] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:54:47Z", "value" => "morefun"} [2026-08-21 11:55:22.828] [DEBUG] QUERY OK db=41.7ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "morefun", "vendor", 77885, ~N[2026-08-21 11:55:22], ~N[2026-08-21 11:55:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:22.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791989, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:22], updated_at: ~N[2026-08-21 11:55:22]}} [2026-08-21 11:55:22.829] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:54:47Z", "value" => "kiosk_launcher"} [2026-08-21 11:55:22.869] [DEBUG] QUERY OK db=39.9ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "kiosk_launcher", "model", 77885, ~N[2026-08-21 11:55:22], ~N[2026-08-21 11:55:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:22.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791990, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:22], updated_at: ~N[2026-08-21 11:55:22]}} [2026-08-21 11:55:22.869] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:54:47Z", "value" => "1.0"} [2026-08-21 11:55:22.902] [DEBUG] QUERY OK db=31.9ms queue=0.3ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "1.0", "app_version", 77885, ~N[2026-08-21 11:55:22], ~N[2026-08-21 11:55:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:22.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791991, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:22], updated_at: ~N[2026-08-21 11:55:22]}} [2026-08-21 11:55:22.902] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:54:47Z", "value" => "13"} [2026-08-21 11:55:22.947] [DEBUG] QUERY OK db=43.5ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "13", "android_version", 77885, ~N[2026-08-21 11:55:22], ~N[2026-08-21 11:55:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:22.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791992, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:22], updated_at: ~N[2026-08-21 11:55:22]}} [2026-08-21 11:55:22.947] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:54:47Z", "value" => "999"} [2026-08-21 11:55:22.985] [DEBUG] QUERY OK db=37.3ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "999", "ram_free_mb", 77885, ~N[2026-08-21 11:55:22], ~N[2026-08-21 11:55:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:22.985] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791993, itemkey: "ram_free_mb", value: "999", timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:22], updated_at: ~N[2026-08-21 11:55:22]}} [2026-08-21 11:55:22.985] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:54:47Z", "value" => "WIFI"} [2026-08-21 11:55:23.009] [DEBUG] QUERY OK db=23.7ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "WIFI", "network_type", 77885, ~N[2026-08-21 11:55:22], ~N[2026-08-21 11:55:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:23.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791994, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:22], updated_at: ~N[2026-08-21 11:55:22]}} [2026-08-21 11:55:23.010] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:54:47Z", "value" => "true"} [2026-08-21 11:55:23.034] [DEBUG] QUERY OK db=23.6ms queue=0.1ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "true", "kiosk_active", 77885, ~N[2026-08-21 11:55:23], ~N[2026-08-21 11:55:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:23.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791995, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:23], updated_at: ~N[2026-08-21 11:55:23]}} [2026-08-21 11:55:23.034] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:54:47Z", "value" => ""} [2026-08-21 11:55:23.092] [DEBUG] QUERY OK db=57.6ms queue=0.1ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:54:47Z", "sim_operator", 77885, ~N[2026-08-21 11:55:23], ~N[2026-08-21 11:55:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:23.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791996, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:23], updated_at: ~N[2026-08-21 11:55:23]}} [2026-08-21 11:55:23.093] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:54:47Z", "value" => "UNKNOWN"} [2026-08-21 11:55:23.127] [DEBUG] QUERY OK db=33.1ms queue=0.2ms idle=59.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "UNKNOWN", "sim_number", 77885, ~N[2026-08-21 11:55:23], ~N[2026-08-21 11:55:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:23.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791997, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:23], updated_at: ~N[2026-08-21 11:55:23]}} [2026-08-21 11:55:23.127] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:54:47Z", "value" => "UNKNOWN"} [2026-08-21 11:55:23.147] [DEBUG] QUERY OK db=19.5ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "UNKNOWN", "sim_iccid", 77885, ~N[2026-08-21 11:55:23], ~N[2026-08-21 11:55:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:23.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791998, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:23], updated_at: ~N[2026-08-21 11:55:23]}} [2026-08-21 11:55:23.147] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:54:47Z", "value" => "UNKNOWN"} [2026-08-21 11:55:23.197] [DEBUG] QUERY OK db=49.6ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "UNKNOWN", "sim_imsi", 77885, ~N[2026-08-21 11:55:23], ~N[2026-08-21 11:55:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:23.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 791999, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:23], updated_at: ~N[2026-08-21 11:55:23]}} [2026-08-21 11:55:23.198] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:54:47Z", "value" => "UNKNOWN"} [2026-08-21 11:55:23.241] [DEBUG] QUERY OK db=41.9ms idle=51.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "UNKNOWN", "sim_iccid2", 77885, ~N[2026-08-21 11:55:23], ~N[2026-08-21 11:55:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:23.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792000, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:23], updated_at: ~N[2026-08-21 11:55:23]}} [2026-08-21 11:55:23.242] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:54:47Z", "value" => "UNKNOWN"} [2026-08-21 11:55:23.269] [DEBUG] QUERY OK db=27.1ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "UNKNOWN", "sim_imsi2", 77885, ~N[2026-08-21 11:55:23], ~N[2026-08-21 11:55:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:23.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792001, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:23], updated_at: ~N[2026-08-21 11:55:23]}} [2026-08-21 11:55:23.270] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:54:47Z", "value" => "1"} [2026-08-21 11:55:23.329] [DEBUG] QUERY OK db=57.8ms queue=0.3ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "1", "data_usage_mb", 77885, ~N[2026-08-21 11:55:23], ~N[2026-08-21 11:55:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:23.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792002, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:23], updated_at: ~N[2026-08-21 11:55:23]}} [2026-08-21 11:55:23.330] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:54:47Z", "value" => "0"} [2026-08-21 11:55:23.371] [DEBUG] QUERY OK db=39.6ms queue=0.1ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "0", "mobile_data_mb", 77885, ~N[2026-08-21 11:55:23], ~N[2026-08-21 11:55:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:23.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792003, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:23], updated_at: ~N[2026-08-21 11:55:23]}} [2026-08-21 11:55:23.372] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:54:47Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:55:23.406] [DEBUG] QUERY OK db=32.4ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:54:47Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77885, ~N[2026-08-21 11:55:23], ~N[2026-08-21 11:55:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:23.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792004, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:54:47Z", message: nil, status_log_id: 77885, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:23], updated_at: ~N[2026-08-21 11:55:23]}} [2026-08-21 11:55:51.387] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:55:51.387] [INFO ] Incoming JSON payload: {"oid":"b7a75914-ffe1-4d06-8a9a-262778333aa9","sn":"98251226730002","uploadTime":"2026-08-21T11:55:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"ram_free_mb","value":"996","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:55:18Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:55:51.388] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b7a75914-ffe1-4d06-8a9a-262778333aa9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:55:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:55:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:55:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:55:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:55:18Z", "value" => "996"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:55:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:55:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:55:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:55:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:55:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:55:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:55:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:55:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:55:18Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:55:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:55:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:55:18Z", "vendor" => "morefun"} [2026-08-21 11:55:51.388] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:55:51.389] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:55:51.389] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:55:51.389] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1243.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-08-21 11:55:51.391] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=554.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-08-21 11:55:51.391] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:55:51.393] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:55:51.393] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:55:51.431] [DEBUG] QUERY OK source="tms_terminals" db=37.7ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:55:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:55:51.431] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:55:51.432] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=38.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:55:51.484] [DEBUG] QUERY OK source="tms_terminals" db=51.5ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:55:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:55:51.521] [DEBUG] QUERY OK db=35.3ms queue=1.3ms idle=52.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "b7a75914-ffe1-4d06-8a9a-262778333aa9", "2026-08-21T11:55:18Z", ~N[2026-08-21 11:55:51], ~N[2026-08-21 11:55:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:55:51.522] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77886, oid: "b7a75914-ffe1-4d06-8a9a-262778333aa9", upload_time: "2026-08-21T11:55:18Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:51], updated_at: ~N[2026-08-21 11:55:51]} [2026-08-21 11:55:51.522] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:55:18Z", "value" => "morefun"} [2026-08-21 11:55:51.564] [DEBUG] QUERY OK db=39.7ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "morefun", "vendor", 77886, ~N[2026-08-21 11:55:51], ~N[2026-08-21 11:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:51.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792005, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:51], updated_at: ~N[2026-08-21 11:55:51]}} [2026-08-21 11:55:51.565] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:55:18Z", "value" => "kiosk_launcher"} [2026-08-21 11:55:51.608] [DEBUG] QUERY OK db=42.6ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "kiosk_launcher", "model", 77886, ~N[2026-08-21 11:55:51], ~N[2026-08-21 11:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:51.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792006, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:51], updated_at: ~N[2026-08-21 11:55:51]}} [2026-08-21 11:55:51.609] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:55:18Z", "value" => "1.0"} [2026-08-21 11:55:51.658] [DEBUG] QUERY OK db=48.9ms queue=0.1ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "1.0", "app_version", 77886, ~N[2026-08-21 11:55:51], ~N[2026-08-21 11:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:51.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792007, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:51], updated_at: ~N[2026-08-21 11:55:51]}} [2026-08-21 11:55:51.659] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:55:18Z", "value" => "13"} [2026-08-21 11:55:51.757] [DEBUG] QUERY OK db=97.8ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "13", "android_version", 77886, ~N[2026-08-21 11:55:51], ~N[2026-08-21 11:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:51.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792008, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:51], updated_at: ~N[2026-08-21 11:55:51]}} [2026-08-21 11:55:51.757] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:55:18Z", "value" => "996"} [2026-08-21 11:55:51.815] [DEBUG] QUERY OK db=57.7ms idle=99.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "996", "ram_free_mb", 77886, ~N[2026-08-21 11:55:51], ~N[2026-08-21 11:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:51.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792009, itemkey: "ram_free_mb", value: "996", timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:51], updated_at: ~N[2026-08-21 11:55:51]}} [2026-08-21 11:55:51.816] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:55:18Z", "value" => "WIFI"} [2026-08-21 11:55:51.854] [DEBUG] QUERY OK db=37.6ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "WIFI", "network_type", 77886, ~N[2026-08-21 11:55:51], ~N[2026-08-21 11:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:51.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792010, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:51], updated_at: ~N[2026-08-21 11:55:51]}} [2026-08-21 11:55:51.857] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:55:18Z", "value" => "true"} [2026-08-21 11:55:51.878] [DEBUG] QUERY OK db=20.5ms idle=16.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "true", "kiosk_active", 77886, ~N[2026-08-21 11:55:51], ~N[2026-08-21 11:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:51.880] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792011, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:51], updated_at: ~N[2026-08-21 11:55:51]}} [2026-08-21 11:55:51.881] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:55:18Z", "value" => ""} [2026-08-21 11:55:52.085] [DEBUG] QUERY OK db=202.3ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:55:18Z", "sim_operator", 77886, ~N[2026-08-21 11:55:51], ~N[2026-08-21 11:55:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.085] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792012, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:51], updated_at: ~N[2026-08-21 11:55:51]}} [2026-08-21 11:55:52.085] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:55:18Z", "value" => "UNKNOWN"} [2026-08-21 11:55:52.186] [DEBUG] QUERY OK db=100.1ms queue=0.5ms idle=207.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "UNKNOWN", "sim_number", 77886, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792013, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.187] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:55:18Z", "value" => "UNKNOWN"} [2026-08-21 11:55:52.224] [DEBUG] QUERY OK db=37.1ms idle=102.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "UNKNOWN", "sim_iccid", 77886, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792014, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.225] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:55:18Z", "value" => "UNKNOWN"} [2026-08-21 11:55:52.266] [DEBUG] QUERY OK db=41.3ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "UNKNOWN", "sim_imsi", 77886, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792015, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.267] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:55:18Z", "value" => "UNKNOWN"} [2026-08-21 11:55:52.293] [DEBUG] QUERY OK db=25.0ms queue=0.1ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "UNKNOWN", "sim_iccid2", 77886, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792016, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.293] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:55:18Z", "value" => "UNKNOWN"} [2026-08-21 11:55:52.342] [DEBUG] QUERY OK db=48.3ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "UNKNOWN", "sim_imsi2", 77886, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792017, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.342] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:55:18Z", "value" => "1"} [2026-08-21 11:55:52.369] [DEBUG] QUERY OK db=25.7ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "1", "data_usage_mb", 77886, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.369] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792018, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.369] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:55:18Z", "value" => "0"} [2026-08-21 11:55:52.417] [DEBUG] QUERY OK db=47.3ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "0", "mobile_data_mb", 77886, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792019, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.419] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:55:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:55:52.470] [DEBUG] QUERY OK db=48.9ms queue=0.8ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:18Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77886, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792020, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:55:18Z", message: nil, status_log_id: 77886, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.471] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:55:52.471] [INFO ] Incoming JSON payload: {"oid":"6febaee3-be87-4cfc-b870-3c8038582cca","sn":"98251226730001","uploadTime":"2026-08-21T11:55:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"ram_free_mb","value":"919","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:55:51Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:55:52.473] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6febaee3-be87-4cfc-b870-3c8038582cca", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:55:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:55:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:55:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:55:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:55:51Z", "value" => "919"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:55:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:55:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:55:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:55:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:55:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:55:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:55:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:55:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:55:51Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:55:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:55:51Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:55:51Z", "vendor" => "morefun"} [2026-08-21 11:55:52.473] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:55:52.473] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:55:52.473] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:55:52.474] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=57.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-08-21 11:55:52.475] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.5ms idle=5.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:55:52.475] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:55:52.477] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:55:52.477] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:55:52.546] [DEBUG] QUERY OK source="tms_terminals" db=67.1ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:55:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:55:52.546] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:55:52.547] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=69.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:55:52.584] [DEBUG] QUERY OK source="tms_terminals" db=36.5ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:55:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:55:52.626] [DEBUG] QUERY OK db=40.1ms idle=37.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6febaee3-be87-4cfc-b870-3c8038582cca", "2026-08-21T11:55:51Z", ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:55:52.626] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77887, oid: "6febaee3-be87-4cfc-b870-3c8038582cca", upload_time: "2026-08-21T11:55:51Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]} [2026-08-21 11:55:52.628] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:55:51Z", "value" => "morefun"} [2026-08-21 11:55:52.684] [DEBUG] QUERY OK db=55.9ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "morefun", "vendor", 77887, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792021, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.684] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:55:51Z", "value" => "kiosk_launcher"} [2026-08-21 11:55:52.744] [DEBUG] QUERY OK db=59.3ms idle=59.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "kiosk_launcher", "model", 77887, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792022, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.744] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:55:51Z", "value" => "1.0"} [2026-08-21 11:55:52.784] [DEBUG] QUERY OK db=38.9ms idle=60.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "1.0", "app_version", 77887, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792023, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.784] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:55:51Z", "value" => "13"} [2026-08-21 11:55:52.804] [DEBUG] QUERY OK db=19.8ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "13", "android_version", 77887, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792024, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.805] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:55:51Z", "value" => "919"} [2026-08-21 11:55:52.862] [DEBUG] QUERY OK db=56.2ms idle=21.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "919", "ram_free_mb", 77887, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.862] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792025, itemkey: "ram_free_mb", value: "919", timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.862] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:55:51Z", "value" => "WIFI"} [2026-08-21 11:55:52.896] [DEBUG] QUERY OK db=33.3ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "WIFI", "network_type", 77887, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792026, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.897] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:55:51Z", "value" => "true"} [2026-08-21 11:55:52.924] [DEBUG] QUERY OK db=26.6ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "true", "kiosk_active", 77887, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792027, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.924] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:55:51Z", "value" => ""} [2026-08-21 11:55:52.961] [DEBUG] QUERY OK db=36.7ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:55:51Z", "sim_operator", 77887, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:52.962] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792028, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:52.962] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:55:51Z", "value" => "UNKNOWN"} [2026-08-21 11:55:53.005] [DEBUG] QUERY OK db=43.2ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "UNKNOWN", "sim_number", 77887, ~N[2026-08-21 11:55:52], ~N[2026-08-21 11:55:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:53.006] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792029, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:52], updated_at: ~N[2026-08-21 11:55:52]}} [2026-08-21 11:55:53.006] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:55:51Z", "value" => "UNKNOWN"} [2026-08-21 11:55:53.053] [DEBUG] QUERY OK db=46.5ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "UNKNOWN", "sim_iccid", 77887, ~N[2026-08-21 11:55:53], ~N[2026-08-21 11:55:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:53.053] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792030, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:53], updated_at: ~N[2026-08-21 11:55:53]}} [2026-08-21 11:55:53.053] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:55:51Z", "value" => "UNKNOWN"} [2026-08-21 11:55:53.091] [DEBUG] QUERY OK db=37.7ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "UNKNOWN", "sim_imsi", 77887, ~N[2026-08-21 11:55:53], ~N[2026-08-21 11:55:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:53.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792031, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:53], updated_at: ~N[2026-08-21 11:55:53]}} [2026-08-21 11:55:53.092] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:55:51Z", "value" => "UNKNOWN"} [2026-08-21 11:55:53.128] [DEBUG] QUERY OK db=36.2ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "UNKNOWN", "sim_iccid2", 77887, ~N[2026-08-21 11:55:53], ~N[2026-08-21 11:55:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:53.129] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792032, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:53], updated_at: ~N[2026-08-21 11:55:53]}} [2026-08-21 11:55:53.129] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:55:51Z", "value" => "UNKNOWN"} [2026-08-21 11:55:53.176] [DEBUG] QUERY OK db=46.6ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "UNKNOWN", "sim_imsi2", 77887, ~N[2026-08-21 11:55:53], ~N[2026-08-21 11:55:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:53.177] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792033, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:53], updated_at: ~N[2026-08-21 11:55:53]}} [2026-08-21 11:55:53.177] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:55:51Z", "value" => "35"} [2026-08-21 11:55:53.228] [DEBUG] QUERY OK db=50.9ms idle=48.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "35", "data_usage_mb", 77887, ~N[2026-08-21 11:55:53], ~N[2026-08-21 11:55:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:53.228] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792034, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:53], updated_at: ~N[2026-08-21 11:55:53]}} [2026-08-21 11:55:53.228] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:55:51Z", "value" => "0"} [2026-08-21 11:55:53.274] [DEBUG] QUERY OK db=45.6ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "0", "mobile_data_mb", 77887, ~N[2026-08-21 11:55:53], ~N[2026-08-21 11:55:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:53.275] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792035, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:53], updated_at: ~N[2026-08-21 11:55:53]}} [2026-08-21 11:55:53.278] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:55:51Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:55:53.310] [DEBUG] QUERY OK db=30.6ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:51Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77887, ~N[2026-08-21 11:55:53], ~N[2026-08-21 11:55:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:55:53.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792036, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:55:51Z", message: nil, status_log_id: 77887, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:55:53], updated_at: ~N[2026-08-21 11:55:53]}} [2026-08-21 11:56:21.373] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:56:21.373] [INFO ] Incoming JSON payload: {"oid":"f1dcefe2-7331-4d4c-bcff-831d63888b42","sn":"98251226730002","uploadTime":"2026-08-21T11:55:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"ram_free_mb","value":"997","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:55:48Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:56:21.378] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f1dcefe2-7331-4d4c-bcff-831d63888b42", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:55:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:55:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:55:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:55:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:55:48Z", "value" => "997"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:55:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:55:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:55:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:55:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:55:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:55:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:55:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:55:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:55:48Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:55:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:55:48Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:55:48Z", "vendor" => "morefun"} [2026-08-21 11:56:21.379] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:56:21.379] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:56:21.380] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:56:21.381] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=439.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-08-21 11:56:21.382] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=234.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-08-21 11:56:21.382] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:56:21.385] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:56:21.386] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:56:21.509] [DEBUG] QUERY OK source="tms_terminals" db=120.4ms idle=6.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:56:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:56:21.509] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:56:21.512] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=123.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:56:21.542] [DEBUG] QUERY OK source="tms_terminals" db=26.6ms queue=1.0ms idle=5.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:56:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:56:21.576] [DEBUG] QUERY OK db=33.6ms queue=0.1ms idle=30.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "f1dcefe2-7331-4d4c-bcff-831d63888b42", "2026-08-21T11:55:48Z", ~N[2026-08-21 11:56:21], ~N[2026-08-21 11:56:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:56:21.579] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77888, oid: "f1dcefe2-7331-4d4c-bcff-831d63888b42", upload_time: "2026-08-21T11:55:48Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:21], updated_at: ~N[2026-08-21 11:56:21]} [2026-08-21 11:56:21.579] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:55:48Z", "value" => "morefun"} [2026-08-21 11:56:21.612] [DEBUG] QUERY OK db=32.7ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "morefun", "vendor", 77888, ~N[2026-08-21 11:56:21], ~N[2026-08-21 11:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:21.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792037, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:21], updated_at: ~N[2026-08-21 11:56:21]}} [2026-08-21 11:56:21.616] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:55:48Z", "value" => "kiosk_launcher"} [2026-08-21 11:56:21.695] [DEBUG] QUERY OK db=76.5ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "kiosk_launcher", "model", 77888, ~N[2026-08-21 11:56:21], ~N[2026-08-21 11:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:21.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792038, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:21], updated_at: ~N[2026-08-21 11:56:21]}} [2026-08-21 11:56:21.695] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:55:48Z", "value" => "1.0"} [2026-08-21 11:56:21.743] [DEBUG] QUERY OK db=48.0ms idle=82.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "1.0", "app_version", 77888, ~N[2026-08-21 11:56:21], ~N[2026-08-21 11:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:21.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792039, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:21], updated_at: ~N[2026-08-21 11:56:21]}} [2026-08-21 11:56:21.744] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:55:48Z", "value" => "13"} [2026-08-21 11:56:21.790] [DEBUG] QUERY OK db=46.2ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "13", "android_version", 77888, ~N[2026-08-21 11:56:21], ~N[2026-08-21 11:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:21.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792040, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:21], updated_at: ~N[2026-08-21 11:56:21]}} [2026-08-21 11:56:21.794] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:55:48Z", "value" => "997"} [2026-08-21 11:56:21.858] [DEBUG] QUERY OK db=63.4ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "997", "ram_free_mb", 77888, ~N[2026-08-21 11:56:21], ~N[2026-08-21 11:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:21.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792041, itemkey: "ram_free_mb", value: "997", timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:21], updated_at: ~N[2026-08-21 11:56:21]}} [2026-08-21 11:56:21.859] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:55:48Z", "value" => "WIFI"} [2026-08-21 11:56:21.931] [DEBUG] QUERY OK db=64.5ms queue=0.1ms idle=76.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "WIFI", "network_type", 77888, ~N[2026-08-21 11:56:21], ~N[2026-08-21 11:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:21.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792042, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:21], updated_at: ~N[2026-08-21 11:56:21]}} [2026-08-21 11:56:21.932] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:55:48Z", "value" => "true"} [2026-08-21 11:56:21.978] [DEBUG] QUERY OK db=46.1ms idle=73.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "true", "kiosk_active", 77888, ~N[2026-08-21 11:56:21], ~N[2026-08-21 11:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:21.978] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792043, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:21], updated_at: ~N[2026-08-21 11:56:21]}} [2026-08-21 11:56:21.980] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:55:48Z", "value" => ""} [2026-08-21 11:56:22.010] [DEBUG] QUERY OK db=29.3ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:55:48Z", "sim_operator", 77888, ~N[2026-08-21 11:56:21], ~N[2026-08-21 11:56:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792044, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:21], updated_at: ~N[2026-08-21 11:56:21]}} [2026-08-21 11:56:22.010] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:55:48Z", "value" => "UNKNOWN"} [2026-08-21 11:56:22.052] [DEBUG] QUERY OK db=40.1ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "UNKNOWN", "sim_number", 77888, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792045, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:22.052] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:55:48Z", "value" => "UNKNOWN"} [2026-08-21 11:56:22.088] [DEBUG] QUERY OK db=32.8ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "UNKNOWN", "sim_iccid", 77888, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792046, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:22.089] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:55:48Z", "value" => "UNKNOWN"} [2026-08-21 11:56:22.132] [DEBUG] QUERY OK db=41.6ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "UNKNOWN", "sim_imsi", 77888, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.132] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792047, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:22.132] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:55:48Z", "value" => "UNKNOWN"} [2026-08-21 11:56:22.174] [DEBUG] QUERY OK db=41.9ms queue=0.1ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "UNKNOWN", "sim_iccid2", 77888, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792048, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:22.175] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:55:48Z", "value" => "UNKNOWN"} [2026-08-21 11:56:22.199] [DEBUG] QUERY OK db=23.4ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "UNKNOWN", "sim_imsi2", 77888, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.201] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792049, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:22.201] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:55:48Z", "value" => "1"} [2026-08-21 11:56:22.296] [DEBUG] QUERY OK db=94.8ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "1", "data_usage_mb", 77888, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792050, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:22.297] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:55:48Z", "value" => "0"} [2026-08-21 11:56:22.372] [DEBUG] QUERY OK db=74.4ms idle=98.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "0", "mobile_data_mb", 77888, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792051, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:22.373] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:55:48Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:56:22.563] [DEBUG] QUERY OK db=189.1ms idle=77.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:55:48Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77888, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792052, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:55:48Z", message: nil, status_log_id: 77888, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:22.570] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:56:22.577] [INFO ] Incoming JSON payload: {"oid":"1cc31b05-d49a-46bd-8b21-ef316c6b9d57","sn":"98251226730001","uploadTime":"2026-08-21T11:56:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:56:21Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:56:22.578] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1cc31b05-d49a-46bd-8b21-ef316c6b9d57", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:56:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:56:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:56:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:56:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:56:21Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:56:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:56:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:56:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:56:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:56:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:56:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:56:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:56:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:56:21Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:56:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:56:21Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:56:21Z", "vendor" => "morefun"} [2026-08-21 11:56:22.578] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:56:22.578] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:56:22.578] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:56:22.583] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms idle=206.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-08-21 11:56:22.584] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=20.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:56:22.584] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:56:22.585] [DEBUG] QUERY OK source="tms_terminals" db=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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:56:22.588] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:56:22.644] [DEBUG] QUERY OK source="tms_terminals" db=55.2ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:56:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:56:22.644] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:56:22.645] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=59.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:56:22.669] [DEBUG] QUERY OK source="tms_terminals" db=23.4ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:56:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:56:22.731] [DEBUG] QUERY OK db=59.3ms queue=0.1ms idle=26.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "1cc31b05-d49a-46bd-8b21-ef316c6b9d57", "2026-08-21T11:56:21Z", ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:56:22.731] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77889, oid: "1cc31b05-d49a-46bd-8b21-ef316c6b9d57", upload_time: "2026-08-21T11:56:21Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]} [2026-08-21 11:56:22.731] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:56:21Z", "value" => "morefun"} [2026-08-21 11:56:22.776] [DEBUG] QUERY OK db=43.8ms idle=63.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "morefun", "vendor", 77889, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792053, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:22.778] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:56:21Z", "value" => "kiosk_launcher"} [2026-08-21 11:56:22.810] [DEBUG] QUERY OK db=32.4ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "kiosk_launcher", "model", 77889, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792054, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:22.811] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:56:21Z", "value" => "1.0"} [2026-08-21 11:56:22.843] [DEBUG] QUERY OK db=32.3ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "1.0", "app_version", 77889, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792055, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:22.847] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:56:21Z", "value" => "13"} [2026-08-21 11:56:22.891] [DEBUG] QUERY OK db=43.5ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "13", "android_version", 77889, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792056, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:22.892] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:56:21Z", "value" => "917"} [2026-08-21 11:56:22.963] [DEBUG] QUERY OK db=70.9ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "917", "ram_free_mb", 77889, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.964] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792057, itemkey: "ram_free_mb", value: "917", timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:22.964] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:56:21Z", "value" => "WIFI"} [2026-08-21 11:56:22.994] [DEBUG] QUERY OK db=29.7ms idle=12.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "WIFI", "network_type", 77889, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:22.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792058, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:22.998] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:56:21Z", "value" => "true"} [2026-08-21 11:56:23.040] [DEBUG] QUERY OK db=41.5ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "true", "kiosk_active", 77889, ~N[2026-08-21 11:56:22], ~N[2026-08-21 11:56:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:23.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792059, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:22], updated_at: ~N[2026-08-21 11:56:22]}} [2026-08-21 11:56:23.041] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:56:21Z", "value" => ""} [2026-08-21 11:56:23.074] [DEBUG] QUERY OK db=32.8ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:56:21Z", "sim_operator", 77889, ~N[2026-08-21 11:56:23], ~N[2026-08-21 11:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:23.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792060, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:23], updated_at: ~N[2026-08-21 11:56:23]}} [2026-08-21 11:56:23.074] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:56:21Z", "value" => "UNKNOWN"} [2026-08-21 11:56:23.117] [DEBUG] QUERY OK db=40.4ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "UNKNOWN", "sim_number", 77889, ~N[2026-08-21 11:56:23], ~N[2026-08-21 11:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:23.117] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792061, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:23], updated_at: ~N[2026-08-21 11:56:23]}} [2026-08-21 11:56:23.117] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:56:21Z", "value" => "UNKNOWN"} [2026-08-21 11:56:23.171] [DEBUG] QUERY OK db=52.5ms queue=0.1ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "UNKNOWN", "sim_iccid", 77889, ~N[2026-08-21 11:56:23], ~N[2026-08-21 11:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:23.171] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792062, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:23], updated_at: ~N[2026-08-21 11:56:23]}} [2026-08-21 11:56:23.171] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:56:21Z", "value" => "UNKNOWN"} [2026-08-21 11:56:23.225] [DEBUG] QUERY OK db=52.5ms queue=1.2ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "UNKNOWN", "sim_imsi", 77889, ~N[2026-08-21 11:56:23], ~N[2026-08-21 11:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:23.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792063, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:23], updated_at: ~N[2026-08-21 11:56:23]}} [2026-08-21 11:56:23.226] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:56:21Z", "value" => "UNKNOWN"} [2026-08-21 11:56:23.289] [DEBUG] QUERY OK db=57.9ms idle=60.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "UNKNOWN", "sim_iccid2", 77889, ~N[2026-08-21 11:56:23], ~N[2026-08-21 11:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:23.289] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792064, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:23], updated_at: ~N[2026-08-21 11:56:23]}} [2026-08-21 11:56:23.289] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:56:21Z", "value" => "UNKNOWN"} [2026-08-21 11:56:23.337] [DEBUG] QUERY OK db=47.0ms idle=65.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "UNKNOWN", "sim_imsi2", 77889, ~N[2026-08-21 11:56:23], ~N[2026-08-21 11:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:23.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792065, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:23], updated_at: ~N[2026-08-21 11:56:23]}} [2026-08-21 11:56:23.338] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:56:21Z", "value" => "35"} [2026-08-21 11:56:23.368] [DEBUG] QUERY OK db=28.8ms queue=0.6ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "35", "data_usage_mb", 77889, ~N[2026-08-21 11:56:23], ~N[2026-08-21 11:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:23.368] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792066, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:23], updated_at: ~N[2026-08-21 11:56:23]}} [2026-08-21 11:56:23.368] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:56:21Z", "value" => "0"} [2026-08-21 11:56:23.438] [DEBUG] QUERY OK db=67.8ms queue=2.0ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "0", "mobile_data_mb", 77889, ~N[2026-08-21 11:56:23], ~N[2026-08-21 11:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:23.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792067, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:23], updated_at: ~N[2026-08-21 11:56:23]}} [2026-08-21 11:56:23.439] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:56:21Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:56:23.497] [DEBUG] QUERY OK db=56.9ms idle=72.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:21Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77889, ~N[2026-08-21 11:56:23], ~N[2026-08-21 11:56:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:23.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792068, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:56:21Z", message: nil, status_log_id: 77889, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:23], updated_at: ~N[2026-08-21 11:56:23]}} [2026-08-21 11:56:51.872] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:56:51.872] [INFO ] Incoming JSON payload: {"oid":"ee4c2b93-978e-4bf9-bd34-c81b832df21e","sn":"98251226730002","uploadTime":"2026-08-21T11:56:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"ram_free_mb","value":"1002","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:56:18Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.re (truncated) [2026-08-21 11:56:51.879] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ee4c2b93-978e-4bf9-bd34-c81b832df21e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:56:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:56:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:56:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:56:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:56:18Z", "value" => "1002"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:56:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:56:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:56:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:56:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:56:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:56:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:56:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:56:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:56:18Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:56:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:56:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:56:18Z", "vendor" => "morefun"} [2026-08-21 11:56:51.880] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:56:51.880] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:56:51.880] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:56:51.883] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms queue=0.6ms idle=1732.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-08-21 11:56:51.885] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=812.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-08-21 11:56:51.885] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:56:51.900] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms 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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:56:51.900] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:56:51.937] [DEBUG] QUERY OK source="tms_terminals" db=36.0ms idle=16.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:56:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:56:51.937] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:56:51.940] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.6ms idle=37.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:56:51.988] [DEBUG] QUERY OK source="tms_terminals" db=46.9ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:56:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:56:52.029] [DEBUG] QUERY OK db=38.7ms queue=1.4ms idle=49.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "ee4c2b93-978e-4bf9-bd34-c81b832df21e", "2026-08-21T11:56:18Z", ~N[2026-08-21 11:56:51], ~N[2026-08-21 11:56:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:56:52.029] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77890, oid: "ee4c2b93-978e-4bf9-bd34-c81b832df21e", upload_time: "2026-08-21T11:56:18Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:51], updated_at: ~N[2026-08-21 11:56:51]} [2026-08-21 11:56:52.030] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:56:18Z", "value" => "morefun"} [2026-08-21 11:56:52.067] [DEBUG] QUERY OK db=36.7ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "morefun", "vendor", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792069, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.068] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:56:18Z", "value" => "kiosk_launcher"} [2026-08-21 11:56:52.120] [DEBUG] QUERY OK db=46.6ms queue=4.8ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "kiosk_launcher", "model", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792070, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.121] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:56:18Z", "value" => "1.0"} [2026-08-21 11:56:52.188] [DEBUG] QUERY OK db=65.5ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "1.0", "app_version", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.190] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792071, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.191] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:56:18Z", "value" => "13"} [2026-08-21 11:56:52.246] [DEBUG] QUERY OK db=54.5ms idle=71.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "13", "android_version", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.246] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792072, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.246] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:56:18Z", "value" => "1002"} [2026-08-21 11:56:52.284] [DEBUG] QUERY OK db=37.8ms idle=58.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "1002", "ram_free_mb", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792073, itemkey: "ram_free_mb", value: "1002", timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.285] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:56:18Z", "value" => "WIFI"} [2026-08-21 11:56:52.326] [DEBUG] QUERY OK db=40.4ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "WIFI", "network_type", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792074, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.326] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:56:18Z", "value" => "true"} [2026-08-21 11:56:52.341] [DEBUG] QUERY OK db=14.7ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "true", "kiosk_active", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792075, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.342] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:56:18Z", "value" => ""} [2026-08-21 11:56:52.380] [DEBUG] QUERY OK db=38.5ms idle=16.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:56:18Z", "sim_operator", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792076, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.381] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:56:18Z", "value" => "UNKNOWN"} [2026-08-21 11:56:52.431] [DEBUG] QUERY OK db=49.4ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "UNKNOWN", "sim_number", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.431] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792077, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.431] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:56:18Z", "value" => "UNKNOWN"} [2026-08-21 11:56:52.490] [DEBUG] QUERY OK db=58.5ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "UNKNOWN", "sim_iccid", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792078, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.490] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:56:18Z", "value" => "UNKNOWN"} [2026-08-21 11:56:52.524] [DEBUG] QUERY OK db=33.1ms idle=60.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "UNKNOWN", "sim_imsi", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792079, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.524] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:56:18Z", "value" => "UNKNOWN"} [2026-08-21 11:56:52.551] [DEBUG] QUERY OK db=26.1ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "UNKNOWN", "sim_iccid2", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792080, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.552] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:56:18Z", "value" => "UNKNOWN"} [2026-08-21 11:56:52.590] [DEBUG] QUERY OK db=37.5ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "UNKNOWN", "sim_imsi2", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792081, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.590] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:56:18Z", "value" => "1"} [2026-08-21 11:56:52.662] [DEBUG] QUERY OK db=70.7ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "1", "data_usage_mb", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792082, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.662] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:56:18Z", "value" => "0"} [2026-08-21 11:56:52.686] [DEBUG] QUERY OK db=23.6ms idle=72.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "0", "mobile_data_mb", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.686] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792083, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.687] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:56:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:56:52.745] [DEBUG] QUERY OK db=56.1ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:18Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77890, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792084, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:56:18Z", message: nil, status_log_id: 77890, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.745] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:56:52.746] [INFO ] Incoming JSON payload: {"oid":"fdd2cf3f-63a2-4697-9d86-c0f19c0afaff","sn":"98251226730001","uploadTime":"2026-08-21T11:56:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"ram_free_mb","value":"913","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:56:51Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:56:52.747] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "fdd2cf3f-63a2-4697-9d86-c0f19c0afaff", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:56:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:56:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:56:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:56:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:56:51Z", "value" => "913"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:56:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:56:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:56:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:56:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:56:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:56:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:56:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:56:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:56:51Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:56:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:56:51Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:56:51Z", "vendor" => "morefun"} [2026-08-21 11:56:52.747] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:56:52.747] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:56:52.747] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:56:52.749] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.4ms idle=62.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-08-21 11:56:52.750] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=5.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:56:52.750] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:56:52.751] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:56:52.752] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:56:52.813] [DEBUG] QUERY OK source="tms_terminals" db=60.5ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:56:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:56:52.813] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:56:52.817] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.8ms idle=63.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:56:52.866] [DEBUG] QUERY OK source="tms_terminals" db=48.4ms idle=5.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:56:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:56:52.922] [DEBUG] QUERY OK db=55.8ms idle=49.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "fdd2cf3f-63a2-4697-9d86-c0f19c0afaff", "2026-08-21T11:56:51Z", ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:56:52.923] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77891, oid: "fdd2cf3f-63a2-4697-9d86-c0f19c0afaff", upload_time: "2026-08-21T11:56:51Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]} [2026-08-21 11:56:52.923] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:56:51Z", "value" => "morefun"} [2026-08-21 11:56:52.947] [DEBUG] QUERY OK db=23.9ms idle=57.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "morefun", "vendor", 77891, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:52.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792085, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:52.948] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:56:51Z", "value" => "kiosk_launcher"} [2026-08-21 11:56:53.018] [DEBUG] QUERY OK db=69.6ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "kiosk_launcher", "model", 77891, ~N[2026-08-21 11:56:52], ~N[2026-08-21 11:56:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792086, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:52], updated_at: ~N[2026-08-21 11:56:52]}} [2026-08-21 11:56:53.018] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:56:51Z", "value" => "1.0"} [2026-08-21 11:56:53.062] [DEBUG] QUERY OK db=42.6ms queue=0.5ms idle=71.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "1.0", "app_version", 77891, ~N[2026-08-21 11:56:53], ~N[2026-08-21 11:56:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.062] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792087, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:53], updated_at: ~N[2026-08-21 11:56:53]}} [2026-08-21 11:56:53.062] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:56:51Z", "value" => "13"} [2026-08-21 11:56:53.103] [DEBUG] QUERY OK db=40.3ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "13", "android_version", 77891, ~N[2026-08-21 11:56:53], ~N[2026-08-21 11:56:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.104] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792088, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:53], updated_at: ~N[2026-08-21 11:56:53]}} [2026-08-21 11:56:53.104] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:56:51Z", "value" => "913"} [2026-08-21 11:56:53.142] [DEBUG] QUERY OK db=37.2ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "913", "ram_free_mb", 77891, ~N[2026-08-21 11:56:53], ~N[2026-08-21 11:56:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.142] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792089, itemkey: "ram_free_mb", value: "913", timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:53], updated_at: ~N[2026-08-21 11:56:53]}} [2026-08-21 11:56:53.142] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:56:51Z", "value" => "WIFI"} [2026-08-21 11:56:53.206] [DEBUG] QUERY OK db=63.1ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "WIFI", "network_type", 77891, ~N[2026-08-21 11:56:53], ~N[2026-08-21 11:56:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792090, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:53], updated_at: ~N[2026-08-21 11:56:53]}} [2026-08-21 11:56:53.206] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:56:51Z", "value" => "true"} [2026-08-21 11:56:53.288] [DEBUG] QUERY OK db=81.7ms idle=65.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "true", "kiosk_active", 77891, ~N[2026-08-21 11:56:53], ~N[2026-08-21 11:56:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.289] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792091, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:53], updated_at: ~N[2026-08-21 11:56:53]}} [2026-08-21 11:56:53.289] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:56:51Z", "value" => ""} [2026-08-21 11:56:53.385] [DEBUG] QUERY OK db=96.1ms idle=83.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:56:51Z", "sim_operator", 77891, ~N[2026-08-21 11:56:53], ~N[2026-08-21 11:56:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792092, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:53], updated_at: ~N[2026-08-21 11:56:53]}} [2026-08-21 11:56:53.386] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:56:51Z", "value" => "UNKNOWN"} [2026-08-21 11:56:53.430] [DEBUG] QUERY OK db=42.6ms idle=98.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "UNKNOWN", "sim_number", 77891, ~N[2026-08-21 11:56:53], ~N[2026-08-21 11:56:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792093, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:53], updated_at: ~N[2026-08-21 11:56:53]}} [2026-08-21 11:56:53.431] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:56:51Z", "value" => "UNKNOWN"} [2026-08-21 11:56:53.486] [DEBUG] QUERY OK db=54.1ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "UNKNOWN", "sim_iccid", 77891, ~N[2026-08-21 11:56:53], ~N[2026-08-21 11:56:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.487] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792094, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:53], updated_at: ~N[2026-08-21 11:56:53]}} [2026-08-21 11:56:53.487] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:56:51Z", "value" => "UNKNOWN"} [2026-08-21 11:56:53.529] [DEBUG] QUERY OK db=42.4ms idle=57.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "UNKNOWN", "sim_imsi", 77891, ~N[2026-08-21 11:56:53], ~N[2026-08-21 11:56:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792095, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:53], updated_at: ~N[2026-08-21 11:56:53]}} [2026-08-21 11:56:53.530] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:56:51Z", "value" => "UNKNOWN"} [2026-08-21 11:56:53.561] [DEBUG] QUERY OK db=30.6ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "UNKNOWN", "sim_iccid2", 77891, ~N[2026-08-21 11:56:53], ~N[2026-08-21 11:56:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792096, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:53], updated_at: ~N[2026-08-21 11:56:53]}} [2026-08-21 11:56:53.561] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:56:51Z", "value" => "UNKNOWN"} [2026-08-21 11:56:53.712] [DEBUG] QUERY OK db=150.2ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "UNKNOWN", "sim_imsi2", 77891, ~N[2026-08-21 11:56:53], ~N[2026-08-21 11:56:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792097, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:53], updated_at: ~N[2026-08-21 11:56:53]}} [2026-08-21 11:56:53.712] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:56:51Z", "value" => "35"} [2026-08-21 11:56:53.752] [DEBUG] QUERY OK db=39.4ms idle=151.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "35", "data_usage_mb", 77891, ~N[2026-08-21 11:56:53], ~N[2026-08-21 11:56:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792098, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:53], updated_at: ~N[2026-08-21 11:56:53]}} [2026-08-21 11:56:53.752] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:56:51Z", "value" => "0"} [2026-08-21 11:56:53.838] [DEBUG] QUERY OK db=84.7ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "0", "mobile_data_mb", 77891, ~N[2026-08-21 11:56:53], ~N[2026-08-21 11:56:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792099, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:53], updated_at: ~N[2026-08-21 11:56:53]}} [2026-08-21 11:56:53.843] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:56:51Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:56:53.889] [DEBUG] QUERY OK db=43.1ms queue=0.2ms idle=92.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:51Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77891, ~N[2026-08-21 11:56:53], ~N[2026-08-21 11:56:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:56:53.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792100, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:56:51Z", message: nil, status_log_id: 77891, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:56:53], updated_at: ~N[2026-08-21 11:56:53]}} [2026-08-21 11:57:04.311] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 11:57:04.315] [DEBUG] QUERY OK source="tms_terminals" db=4.2ms idle=152.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-08-21 11:57:04.318] [DEBUG] QUERY OK source="filter_usage" db=2.1ms idle=134.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-08-21 11:57:04.318] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 11:57:05.836] [INFO ] Running offline device check... [2026-08-21 11:57:05.837] [INFO ] Starting offline device check... [2026-08-21 11:57:05.840] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms queue=0.1ms idle=1518.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 11:57:05.946] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=103.0ms idle=652.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:57:06.021] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=74.4ms idle=106.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:57:06.032] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.4ms idle=75.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:57:06.034] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=11.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.038] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.047] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.5ms idle=5.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.052] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=9.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.056] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=6.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.063] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms queue=0.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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.088] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.7ms idle=11.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.174] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=85.3ms idle=25.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.191] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.3ms idle=86.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:57:06.312] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=121.1ms idle=17.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:57:06.346] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=32.9ms idle=103.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:57:06.358] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.6ms idle=33.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:57:06.363] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms 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 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.374] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms queue=6.8ms idle=5.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.474] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=100.4ms queue=0.1ms 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 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.478] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=101.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:57:06.485] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms queue=0.7ms idle=7.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.498] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.3ms idle=7.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.509] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.6ms idle=13.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.520] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.3ms idle=11.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.671] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=140.8ms idle=21.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.675] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms queue=1.7ms idle=151.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 11:57:06.676] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.687] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.688] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=10.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.692] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.697] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.701] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms 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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.715] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.4ms queue=3.5ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.716] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.722] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms queue=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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.723] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.730] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.743] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.7ms queue=0.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.746] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms 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 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.751] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=2.7ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.755] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.758] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.764] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms queue=1.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.770] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.773] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=5.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.779] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.8ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.785] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms 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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.793] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.796] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms 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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.809] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.7ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.813] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=2.6ms 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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.823] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.7ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 11:57:06.823] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 11:57:06.824] [INFO ] Offline device check completed successfully [2026-08-21 11:57:15.018] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:57:15.018] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T11:57:14Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T11:57:14Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T11:57:14Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T11:57:14Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T11:57:14Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T11:57:14Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T11:57:14Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T11:57:14Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T11:57:14Z","vendor":"MoreFun"} [2026-08-21 11:57:15.019] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:57:14Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:57:14Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:57:14Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:57:14Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:57:14Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:57:14Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:57:14Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:57:14Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:57:14Z", "vendor" => "MoreFun"} [2026-08-21 11:57:15.019] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:57:15.019] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:57:15.019] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 11:57:15.021] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms idle=853.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-08-21 11:57:15.023] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=694.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 11:57:15.026] [DEBUG] QUERY OK source="parameter_template_values" db=1.5ms queue=0.1ms 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-08-21 11:57:15.029] [DEBUG] QUERY OK source="parameter_definitions" db=2.0ms queue=0.5ms idle=3.2ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:57:15.031] [DEBUG] QUERY OK source="pos_terminal" db=1.4ms idle=4.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-08-21 11:57:15.071] [DEBUG] QUERY OK source="pos_merchant" db=39.7ms idle=2.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:57:15.076] [DEBUG] QUERY OK db=4.1ms queue=0.6ms idle=1909.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 ["626165170000000"] [2026-08-21 11:57:15.077] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:57:15.079] [DEBUG] QUERY OK source="pos_terminal_data" db=1.9ms idle=45.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 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:57:15.079] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 11:57:15.081] [DEBUG] QUERY OK source="address" db=1.1ms idle=8.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:57:15.081] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 11:57:15.088] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 11:57:15.128] [DEBUG] QUERY OK db=37.5ms idle=11.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "86050dccc7834e23aeca90dad3c22379eea3fc2ab46044e1ccea0b70d9d4ba94", 2756, 936, ~U[2026-08-21 11:57:15Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:57:15], ~N[2026-08-21 11:57:15]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:57:15.128] [INFO ] AutoPushService: Created push log 49044 for MF919 params.zip [2026-08-21 11:57:15.129] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 2756, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:57:15.129] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 11:57:15.129] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 11:57:15.132] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms idle=50.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 11:57:15.140] [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-08-21 11:57:15.305] [DEBUG] QUERY OK db=162.0ms idle=15.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8054182f64a79a48caff6055f3cb5543aa5de9d9833cdc7cfd7ca7478ac6031e", 2245, 17947, ~U[2026-08-21 11:57:15Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:57:15], ~N[2026-08-21 11:57:15]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:57:15.305] [INFO ] AutoPushService: Created push log 49045 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:57:15.306] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2245, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:57:15.306] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 11:57:15.306] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 11:57:15.307] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms queue=0.1ms idle=173.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-08-21 11:57:15.308] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 11:57:15.309] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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-08-21 11:57:15.311] [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-08-21 11:57:15.318] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:57:15.318] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:57:15.319] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:57:15.319] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=11.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:57:15.321] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:57:15.321] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 11:57:15.322] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=12.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:57:15.400] [DEBUG] QUERY OK source="tms_terminals" db=36.2ms queue=41.2ms idle=2.7ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 11:57:15], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 11:57:15.400] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:57:15.400] [INFO ] Event published: terminal_updated [2026-08-21 11:57:15.400] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 11:57:15.401] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 11:57:15.401] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 11:57:15.404] [DEBUG] QUERY OK source="terminal_group_memberships" db=3.4ms idle=68.2ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 11:57:15], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 11:57:15.414] [DEBUG] QUERY OK source="tms_terminals" db=3.9ms queue=6.2ms 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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 11:57:15.416] [DEBUG] QUERY OK source="terminal_group_rules" db=1.5ms idle=0.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 11:57:15.418] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 11:57:15.484] [DEBUG] QUERY OK source="tms_terminals" db=37.9ms queue=41.9ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 11:57:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:57:15.493] [DEBUG] QUERY OK source="parameter_templates" db=6.4ms queue=0.1ms idle=70.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 11:57:15.497] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=9.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-08-21 11:57:15.503] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=2.7ms idle=6.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:57:15.504] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:57:15.696] [DEBUG] QUERY OK source="parameter_push_logs" db=185.6ms queue=1.3ms idle=14.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-08-21 11:27:15]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:57:15.699] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:57:15.703] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 11:57:15.711] [DEBUG] QUERY OK source="tms_terminals" db=4.3ms queue=1.3ms idle=202.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 11:57:15.715] [DEBUG] QUERY OK source="config_file_versions" db=3.5ms idle=15.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-08-21 11:57:15.716] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:57:15.719] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms 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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:57:15.808] [DEBUG] QUERY OK source="tms_terminals" db=46.2ms queue=41.7ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:57:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:57:15.845] [DEBUG] QUERY OK db=37.1ms idle=88.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T11:57:14Z", ~N[2026-08-21 11:57:15], ~N[2026-08-21 11:57:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:57:15.849] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77892, oid: "organization_id", upload_time: "2026-08-21T11:57:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:15], updated_at: ~N[2026-08-21 11:57:15]} [2026-08-21 11:57:15.849] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T11:57:14Z", "value" => "online"} [2026-08-21 11:57:15.876] [DEBUG] QUERY OK db=26.5ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T11:57:14Z", "online", "status", 77892, ~N[2026-08-21 11:57:15], ~N[2026-08-21 11:57:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:15.876] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792101, itemkey: "status", value: "online", timestamp: "2026-08-21T11:57:14Z", message: "Terminal status update", status_log_id: 77892, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:15], updated_at: ~N[2026-08-21 11:57:15]}} [2026-08-21 11:57:15.876] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 11:57:15.876] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T11:57:14Z", "value" => "54"} [2026-08-21 11:57:15.935] [DEBUG] QUERY OK db=58.5ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T11:57:14Z", "54", "battery", 77892, ~N[2026-08-21 11:57:15], ~N[2026-08-21 11:57:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:15.936] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792102, itemkey: "battery", value: "54", timestamp: "2026-08-21T11:57:14Z", message: "Battery level", status_log_id: 77892, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:15], updated_at: ~N[2026-08-21 11:57:15]}} [2026-08-21 11:57:15.936] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T11:57:14Z", "value" => "online"} [2026-08-21 11:57:15.975] [DEBUG] QUERY OK db=39.2ms idle=60.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T11:57:14Z", "online", "network", 77892, ~N[2026-08-21 11:57:15], ~N[2026-08-21 11:57:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:15.976] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792103, itemkey: "network", value: "online", timestamp: "2026-08-21T11:57:14Z", message: "Network connectivity", status_log_id: 77892, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:15], updated_at: ~N[2026-08-21 11:57:15]}} [2026-08-21 11:57:15.976] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 11:57:15.976] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T11:57:14Z", "value" => "0"} [2026-08-21 11:57:16.028] [DEBUG] QUERY OK db=50.5ms queue=0.3ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T11:57:14Z", "0", "cpu", 77892, ~N[2026-08-21 11:57:15], ~N[2026-08-21 11:57:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:16.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792104, itemkey: "cpu", value: "0", timestamp: "2026-08-21T11:57:14Z", message: "CPU usage percentage", status_log_id: 77892, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:15], updated_at: ~N[2026-08-21 11:57:15]}} [2026-08-21 11:57:16.029] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T11:57:14Z", "value" => "1.0.0"} [2026-08-21 11:57:16.064] [DEBUG] QUERY OK db=35.0ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T11:57:14Z", "1.0.0", "parameter_config", 77892, ~N[2026-08-21 11:57:16], ~N[2026-08-21 11:57:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:16.064] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792105, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T11:57:14Z", message: "Current parameters version", status_log_id: 77892, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:16], updated_at: ~N[2026-08-21 11:57:16]}} [2026-08-21 11:57:16.064] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T11:57:14Z", "value" => "1.0.1"} [2026-08-21 11:57:16.131] [DEBUG] QUERY OK db=66.0ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T11:57:14Z", "1.0.1", "emv_config", 77892, ~N[2026-08-21 11:57:16], ~N[2026-08-21 11:57:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:16.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792106, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T11:57:14Z", message: "Current EMV config version", status_log_id: 77892, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:16], updated_at: ~N[2026-08-21 11:57:16]}} [2026-08-21 11:57:16.134] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T11:57:14Z", "value" => ""} [2026-08-21 11:57:16.222] [DEBUG] QUERY OK db=39.5ms queue=47.8ms idle=70.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T11:57:14Z", "keys_config", 77892, ~N[2026-08-21 11:57:16], ~N[2026-08-21 11:57:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:16.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792107, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T11:57:14Z", message: "Current keys config version", status_log_id: 77892, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:16], updated_at: ~N[2026-08-21 11:57:16]}} [2026-08-21 11:57:16.223] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T11:57:14Z", "value" => "3.8.7.3"} [2026-08-21 11:57:16.283] [DEBUG] QUERY OK db=59.4ms idle=92.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T11:57:14Z", "3.8.7.3", "application", 77892, ~N[2026-08-21 11:57:16], ~N[2026-08-21 11:57:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:16.283] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792108, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T11:57:14Z", message: "Current application version", status_log_id: 77892, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:16], updated_at: ~N[2026-08-21 11:57:16]}} [2026-08-21 11:57:16.283] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T11:57:15Z"} [2026-08-21 11:57:16.284] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T11:57:15Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 135, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 11:57:21.953] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:57:21.954] [INFO ] Incoming JSON payload: {"oid":"f6fa018e-5f5a-4a0c-b484-a90153c8ef49","sn":"98251226730002","uploadTime":"2026-08-21T11:56:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"ram_free_mb","value":"1003","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:56:48Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.re (truncated) [2026-08-21 11:57:21.955] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f6fa018e-5f5a-4a0c-b484-a90153c8ef49", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:56:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:56:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:56:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:56:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:56:48Z", "value" => "1003"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:56:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:56:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:56:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:56:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:56:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:56:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:56:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:56:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:56:48Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:56:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:56:48Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:56:48Z", "vendor" => "morefun"} [2026-08-21 11:57:21.955] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:57:21.955] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:57:21.955] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:57:21.957] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=1566.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-08-21 11:57:21.959] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.3ms idle=559.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-08-21 11:57:21.959] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:57:21.960] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:57:21.961] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:57:22.049] [DEBUG] QUERY OK source="tms_terminals" db=45.7ms queue=42.4ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:57:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:57:22.049] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:57:22.062] [DEBUG] QUERY OK source="tms_terminals" db=12.7ms idle=89.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:57:22.107] [DEBUG] QUERY OK source="tms_terminals" db=44.6ms idle=13.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:57:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:57:22.170] [DEBUG] QUERY OK db=62.2ms idle=45.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "f6fa018e-5f5a-4a0c-b484-a90153c8ef49", "2026-08-21T11:56:48Z", ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:57:22.170] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77893, oid: "f6fa018e-5f5a-4a0c-b484-a90153c8ef49", upload_time: "2026-08-21T11:56:48Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]} [2026-08-21 11:57:22.171] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:56:48Z", "value" => "morefun"} [2026-08-21 11:57:22.221] [DEBUG] QUERY OK db=49.7ms idle=63.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:48Z", "morefun", "vendor", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792109, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.221] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:56:48Z", "value" => "kiosk_launcher"} [2026-08-21 11:57:22.295] [DEBUG] QUERY OK db=57.2ms queue=16.6ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:48Z", "kiosk_launcher", "model", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.296] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792110, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.296] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:56:48Z", "value" => "1.0"} [2026-08-21 11:57:22.341] [DEBUG] QUERY OK db=45.1ms idle=75.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:48Z", "1.0", "app_version", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792111, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.346] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:56:48Z", "value" => "13"} [2026-08-21 11:57:22.393] [DEBUG] QUERY OK db=47.0ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:48Z", "13", "android_version", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.394] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792112, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.394] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:56:48Z", "value" => "1003"} [2026-08-21 11:57:22.433] [DEBUG] QUERY OK db=35.8ms queue=3.0ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:48Z", "1003", "ram_free_mb", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.445] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792113, itemkey: "ram_free_mb", value: "1003", timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.446] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:56:48Z", "value" => "WIFI"} [2026-08-21 11:57:22.473] [DEBUG] QUERY OK db=20.4ms queue=6.3ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:48Z", "WIFI", "network_type", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792114, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.473] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:56:48Z", "value" => "true"} [2026-08-21 11:57:22.541] [DEBUG] QUERY OK db=59.3ms queue=1.6ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:48Z", "true", "kiosk_active", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792115, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.541] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:56:48Z", "value" => ""} [2026-08-21 11:57:22.596] [DEBUG] QUERY OK db=54.2ms queue=0.1ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:56:48Z", "sim_operator", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792116, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.598] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:56:48Z", "value" => "UNKNOWN"} [2026-08-21 11:57:22.625] [DEBUG] QUERY OK db=27.1ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:48Z", "UNKNOWN", "sim_number", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792117, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.626] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:56:48Z", "value" => "UNKNOWN"} [2026-08-21 11:57:22.665] [DEBUG] QUERY OK db=39.0ms idle=31.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:48Z", "UNKNOWN", "sim_iccid", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792118, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.665] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:56:48Z", "value" => "UNKNOWN"} [2026-08-21 11:57:22.706] [DEBUG] QUERY OK db=40.1ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:48Z", "UNKNOWN", "sim_imsi", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792119, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.707] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:56:48Z", "value" => "UNKNOWN"} [2026-08-21 11:57:22.734] [DEBUG] QUERY OK db=26.7ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:48Z", "UNKNOWN", "sim_iccid2", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.735] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792120, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.735] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:56:48Z", "value" => "UNKNOWN"} [2026-08-21 11:57:22.787] [DEBUG] QUERY OK db=50.4ms queue=0.6ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:48Z", "UNKNOWN", "sim_imsi2", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792121, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.787] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:56:48Z", "value" => "1"} [2026-08-21 11:57:22.831] [DEBUG] QUERY OK db=43.0ms idle=53.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:48Z", "1", "data_usage_mb", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.831] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792122, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.831] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:56:48Z", "value" => "0"} [2026-08-21 11:57:22.854] [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-08-21T11:56:48Z", "0", "mobile_data_mb", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792123, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.856] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:56:48Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:57:22.894] [DEBUG] QUERY OK db=37.1ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:56:48Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77893, ~N[2026-08-21 11:57:22], ~N[2026-08-21 11:57:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:22.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792124, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:56:48Z", message: nil, status_log_id: 77893, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:22], updated_at: ~N[2026-08-21 11:57:22]}} [2026-08-21 11:57:22.897] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:57:22.897] [INFO ] Incoming JSON payload: {"oid":"7bd9f528-31cb-4304-b854-ab53ae55212b","sn":"98251226730001","uploadTime":"2026-08-21T11:57:21Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"ram_free_mb","value":"919","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:57:21Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:57:22.902] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7bd9f528-31cb-4304-b854-ab53ae55212b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:57:21Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:57:21Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:57:21Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:57:21Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:57:21Z", "value" => "919"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:57:21Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:57:21Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:57:21Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:57:21Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:57:21Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:57:21Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:57:21Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:57:21Z", "vendor" => "morefun"} [2026-08-21 11:57:22.903] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:57:22.903] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:57:22.903] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:57:22.905] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=49.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-08-21 11:57:22.910] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms queue=3.5ms idle=11.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-08-21 11:57:22.910] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:57:22.913] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms idle=5.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:57:22.999] [DEBUG] QUERY OK source="tms_terminals" db=32.9ms queue=43.6ms idle=12.6ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 11:57:22], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 11:57:22.999] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:57:22.999] [INFO ] Event published: terminal_updated [2026-08-21 11:57:23.000] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 11:57:23.000] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 11:57:23.000] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 11:57:23.015] [DEBUG] QUERY OK source="terminal_group_memberships" db=15.2ms queue=0.3ms idle=86.7ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 11:57:22], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 11:57:23.020] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.1ms idle=18.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 11:57:23.031] [DEBUG] QUERY OK source="terminal_group_rules" db=11.0ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 11:57:23.031] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 11:57:23.093] [DEBUG] QUERY OK source="tms_terminals" db=31.7ms queue=42.5ms idle=2.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-08-21 11:57:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:57:23.093] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:57:23.103] [DEBUG] QUERY OK source="tms_terminals" db=8.9ms idle=62.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:57:23.190] [DEBUG] QUERY OK source="tms_terminals" db=46.1ms queue=41.3ms idle=10.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:57:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:57:23.224] [DEBUG] QUERY OK db=33.0ms idle=88.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "7bd9f528-31cb-4304-b854-ab53ae55212b", "2026-08-21T11:57:21Z", ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:57:23.224] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77894, oid: "7bd9f528-31cb-4304-b854-ab53ae55212b", upload_time: "2026-08-21T11:57:21Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]} [2026-08-21 11:57:23.224] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:57:21Z", "value" => "morefun"} [2026-08-21 11:57:23.276] [DEBUG] QUERY OK db=51.0ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "morefun", "vendor", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:23.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792125, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:23.276] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:57:21Z", "value" => "kiosk_launcher"} [2026-08-21 11:57:23.346] [DEBUG] QUERY OK db=69.5ms queue=0.1ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "kiosk_launcher", "model", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:23.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792126, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:23.347] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:57:21Z", "value" => "1.0"} [2026-08-21 11:57:23.415] [DEBUG] QUERY OK db=62.3ms idle=76.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "1.0", "app_version", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:23.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792127, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:23.415] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:57:21Z", "value" => "13"} [2026-08-21 11:57:23.469] [DEBUG] QUERY OK db=50.8ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "13", "android_version", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:23.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792128, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:23.473] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:57:21Z", "value" => "919"} [2026-08-21 11:57:23.516] [DEBUG] QUERY OK db=42.7ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "919", "ram_free_mb", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:23.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792129, itemkey: "ram_free_mb", value: "919", timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:23.516] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:57:21Z", "value" => "WIFI"} [2026-08-21 11:57:23.563] [DEBUG] QUERY OK db=45.7ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "WIFI", "network_type", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:23.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792130, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:23.566] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:57:21Z", "value" => "true"} [2026-08-21 11:57:23.630] [DEBUG] QUERY OK db=62.8ms idle=51.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "true", "kiosk_active", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:23.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792131, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:23.631] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:57:21Z", "value" => ""} [2026-08-21 11:57:23.715] [DEBUG] QUERY OK db=83.7ms idle=68.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:57:21Z", "sim_operator", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:23.715] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792132, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:23.715] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:57:21Z", "value" => "UNKNOWN"} [2026-08-21 11:57:23.737] [DEBUG] QUERY OK db=21.2ms queue=0.1ms idle=85.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "UNKNOWN", "sim_number", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:23.737] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792133, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:23.737] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:57:21Z", "value" => "UNKNOWN"} [2026-08-21 11:57:23.807] [DEBUG] QUERY OK db=69.0ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "UNKNOWN", "sim_iccid", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:23.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792134, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:23.808] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:57:21Z", "value" => "UNKNOWN"} [2026-08-21 11:57:23.865] [DEBUG] QUERY OK db=55.8ms idle=72.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "UNKNOWN", "sim_imsi", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:23.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792135, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:23.866] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:57:21Z", "value" => "UNKNOWN"} [2026-08-21 11:57:23.910] [DEBUG] QUERY OK db=38.4ms idle=64.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "UNKNOWN", "sim_iccid2", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:23.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792136, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:23.910] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:57:21Z", "value" => "UNKNOWN"} [2026-08-21 11:57:23.951] [DEBUG] QUERY OK db=38.5ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "UNKNOWN", "sim_imsi2", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:23.952] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792137, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:23.952] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:57:21Z", "value" => "35"} [2026-08-21 11:57:23.997] [DEBUG] QUERY OK db=44.2ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "35", "data_usage_mb", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:23.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792138, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:23.997] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:57:21Z", "value" => "0"} [2026-08-21 11:57:24.060] [DEBUG] QUERY OK db=61.8ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "0", "mobile_data_mb", 77894, ~N[2026-08-21 11:57:23], ~N[2026-08-21 11:57:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:24.060] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792139, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:23], updated_at: ~N[2026-08-21 11:57:23]}} [2026-08-21 11:57:24.061] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:57:21Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:57:24.093] [DEBUG] QUERY OK db=30.4ms idle=64.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:21Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77894, ~N[2026-08-21 11:57:24], ~N[2026-08-21 11:57:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:24.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792140, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:57:21Z", message: nil, status_log_id: 77894, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:24], updated_at: ~N[2026-08-21 11:57:24]}} [2026-08-21 11:57:35.505] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T11:57:15Z"} [2026-08-21 11:57:35.506] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T11:57:15Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 136, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 11:57:51.834] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:57:51.834] [INFO ] Incoming JSON payload: {"oid":"887b1389-ddc0-4a18-9535-1ce81461dbbf","sn":"98251226730002","uploadTime":"2026-08-21T11:57:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"ram_free_mb","value":"998","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:57:18Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:57:51.836] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "887b1389-ddc0-4a18-9535-1ce81461dbbf", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:57:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:57:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:57:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:57:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:57:18Z", "value" => "998"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:57:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:57:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:57:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:57:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:57:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:57:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:57:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:57:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:57:18Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:57:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:57:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:57:18Z", "vendor" => "morefun"} [2026-08-21 11:57:51.836] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:57:51.836] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:57:51.836] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:57:51.838] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.6ms idle=1260.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-08-21 11:57:51.838] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=259.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-08-21 11:57:51.839] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:57:51.840] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:57:51.841] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:57:51.877] [DEBUG] QUERY OK source="tms_terminals" db=35.8ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:57:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:57:51.877] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:57:51.879] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=37.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:57:51.909] [DEBUG] QUERY OK source="tms_terminals" db=30.3ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:57:51], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:57:51.944] [DEBUG] QUERY OK db=34.1ms idle=31.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "887b1389-ddc0-4a18-9535-1ce81461dbbf", "2026-08-21T11:57:18Z", ~N[2026-08-21 11:57:51], ~N[2026-08-21 11:57:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:57:51.945] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77895, oid: "887b1389-ddc0-4a18-9535-1ce81461dbbf", upload_time: "2026-08-21T11:57:18Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:51], updated_at: ~N[2026-08-21 11:57:51]} [2026-08-21 11:57:51.945] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:57:18Z", "value" => "morefun"} [2026-08-21 11:57:51.984] [DEBUG] QUERY OK db=37.5ms queue=0.9ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "morefun", "vendor", 77895, ~N[2026-08-21 11:57:51], ~N[2026-08-21 11:57:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:51.985] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792141, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:51], updated_at: ~N[2026-08-21 11:57:51]}} [2026-08-21 11:57:51.985] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:57:18Z", "value" => "kiosk_launcher"} [2026-08-21 11:57:52.040] [DEBUG] QUERY OK db=54.1ms queue=0.1ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "kiosk_launcher", "model", 77895, ~N[2026-08-21 11:57:51], ~N[2026-08-21 11:57:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792142, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:51], updated_at: ~N[2026-08-21 11:57:51]}} [2026-08-21 11:57:52.040] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:57:18Z", "value" => "1.0"} [2026-08-21 11:57:52.064] [DEBUG] QUERY OK db=23.4ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "1.0", "app_version", 77895, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.064] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792143, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.064] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:57:18Z", "value" => "13"} [2026-08-21 11:57:52.098] [DEBUG] QUERY OK db=33.5ms queue=0.1ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "13", "android_version", 77895, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.098] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792144, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.099] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:57:18Z", "value" => "998"} [2026-08-21 11:57:52.130] [DEBUG] QUERY OK db=30.5ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "998", "ram_free_mb", 77895, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792145, itemkey: "ram_free_mb", value: "998", timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.131] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:57:18Z", "value" => "WIFI"} [2026-08-21 11:57:52.188] [DEBUG] QUERY OK db=56.6ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "WIFI", "network_type", 77895, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792146, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.188] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:57:18Z", "value" => "true"} [2026-08-21 11:57:52.221] [DEBUG] QUERY OK db=31.9ms queue=0.1ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "true", "kiosk_active", 77895, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792147, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.222] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:57:18Z", "value" => ""} [2026-08-21 11:57:52.284] [DEBUG] QUERY OK db=61.4ms queue=0.1ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:57:18Z", "sim_operator", 77895, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792148, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.285] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:57:18Z", "value" => "UNKNOWN"} [2026-08-21 11:57:52.347] [DEBUG] QUERY OK db=61.9ms idle=64.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "UNKNOWN", "sim_number", 77895, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792149, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.347] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:57:18Z", "value" => "UNKNOWN"} [2026-08-21 11:57:52.379] [DEBUG] QUERY OK db=30.8ms idle=64.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "UNKNOWN", "sim_iccid", 77895, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792150, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.380] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:57:18Z", "value" => "UNKNOWN"} [2026-08-21 11:57:52.424] [DEBUG] QUERY OK db=40.2ms queue=3.0ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "UNKNOWN", "sim_imsi", 77895, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.424] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792151, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.424] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:57:18Z", "value" => "UNKNOWN"} [2026-08-21 11:57:52.469] [DEBUG] QUERY OK db=44.2ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "UNKNOWN", "sim_iccid2", 77895, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792152, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.470] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:57:18Z", "value" => "UNKNOWN"} [2026-08-21 11:57:52.539] [DEBUG] QUERY OK db=68.5ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "UNKNOWN", "sim_imsi2", 77895, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792153, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.540] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:57:18Z", "value" => "1"} [2026-08-21 11:57:52.600] [DEBUG] QUERY OK db=59.6ms idle=70.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "1", "data_usage_mb", 77895, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792154, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.600] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:57:18Z", "value" => "0"} [2026-08-21 11:57:52.649] [DEBUG] QUERY OK db=48.8ms idle=18.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "0", "mobile_data_mb", 77895, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792155, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.650] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:57:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:57:52.690] [DEBUG] QUERY OK db=38.1ms queue=0.4ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:18Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77895, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.691] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792156, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:57:18Z", message: nil, status_log_id: 77895, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.691] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:57:52.691] [INFO ] Incoming JSON payload: {"oid":"dd5d5794-e774-47fe-894d-5a0259bd73b1","sn":"98251226730001","uploadTime":"2026-08-21T11:57:51Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:57:51Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:57:51Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:57:51Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:57:51Z"},{"itemkey":"ram_free_mb","value":"918","timestamp":"2026-08-21T11:57:51Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:57:51Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:57:51Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:57:51Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:57:51Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:57:51Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:57:51Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:57:51Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:57:51Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:57:51Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:57: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:57:52.693] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "dd5d5794-e774-47fe-894d-5a0259bd73b1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:57:51Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:57:51Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:57:51Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:57:51Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:57:51Z", "value" => "918"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:57:51Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:57:51Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:57:51Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:57:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:57:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:57:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:57:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:57:51Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:57:51Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:57:51Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:57: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:57:51Z", "vendor" => "morefun"} [2026-08-21 11:57:52.693] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:57:52.693] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:57:52.693] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:57:52.694] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms 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` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 11:57:52.695] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=5.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:57:52.695] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:57:52.696] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:57:52.696] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:57:52.775] [DEBUG] QUERY OK source="tms_terminals" db=36.1ms queue=42.2ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:57:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:57:52.775] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:57:52.776] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=79.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 11:57:52.825] [DEBUG] QUERY OK source="tms_terminals" db=48.4ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:57:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:57:52.868] [DEBUG] QUERY OK db=43.0ms idle=49.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "dd5d5794-e774-47fe-894d-5a0259bd73b1", "2026-08-21T11:57:51Z", ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:57:52.869] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77896, oid: "dd5d5794-e774-47fe-894d-5a0259bd73b1", upload_time: "2026-08-21T11:57:51Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]} [2026-08-21 11:57:52.869] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:57:51Z", "value" => "morefun"} [2026-08-21 11:57:52.916] [DEBUG] QUERY OK db=47.0ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:51Z", "morefun", "vendor", 77896, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.916] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792157, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.917] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:57:51Z", "value" => "kiosk_launcher"} [2026-08-21 11:57:52.954] [DEBUG] QUERY OK db=36.8ms idle=48.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:51Z", "kiosk_launcher", "model", 77896, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:52.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792158, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:52.954] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:57:51Z", "value" => "1.0"} [2026-08-21 11:57:53.019] [DEBUG] QUERY OK db=64.0ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:51Z", "1.0", "app_version", 77896, ~N[2026-08-21 11:57:52], ~N[2026-08-21 11:57:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:53.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792159, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:52], updated_at: ~N[2026-08-21 11:57:52]}} [2026-08-21 11:57:53.019] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:57:51Z", "value" => "13"} [2026-08-21 11:57:53.083] [DEBUG] QUERY OK db=63.3ms idle=65.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:51Z", "13", "android_version", 77896, ~N[2026-08-21 11:57:53], ~N[2026-08-21 11:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:53.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792160, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:53], updated_at: ~N[2026-08-21 11:57:53]}} [2026-08-21 11:57:53.084] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:57:51Z", "value" => "918"} [2026-08-21 11:57:53.107] [DEBUG] QUERY OK db=23.0ms idle=65.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:51Z", "918", "ram_free_mb", 77896, ~N[2026-08-21 11:57:53], ~N[2026-08-21 11:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:53.107] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792161, itemkey: "ram_free_mb", value: "918", timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:53], updated_at: ~N[2026-08-21 11:57:53]}} [2026-08-21 11:57:53.108] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:57:51Z", "value" => "WIFI"} [2026-08-21 11:57:53.164] [DEBUG] QUERY OK db=55.6ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:51Z", "WIFI", "network_type", 77896, ~N[2026-08-21 11:57:53], ~N[2026-08-21 11:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:53.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792162, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:53], updated_at: ~N[2026-08-21 11:57:53]}} [2026-08-21 11:57:53.164] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:57:51Z", "value" => "true"} [2026-08-21 11:57:53.213] [DEBUG] QUERY OK db=48.9ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:51Z", "true", "kiosk_active", 77896, ~N[2026-08-21 11:57:53], ~N[2026-08-21 11:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:53.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792163, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:53], updated_at: ~N[2026-08-21 11:57:53]}} [2026-08-21 11:57:53.215] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:57:51Z", "value" => ""} [2026-08-21 11:57:53.249] [DEBUG] QUERY OK db=33.2ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:57:51Z", "sim_operator", 77896, ~N[2026-08-21 11:57:53], ~N[2026-08-21 11:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:53.249] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792164, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:53], updated_at: ~N[2026-08-21 11:57:53]}} [2026-08-21 11:57:53.249] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:57:51Z", "value" => "UNKNOWN"} [2026-08-21 11:57:53.311] [DEBUG] QUERY OK db=61.9ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:51Z", "UNKNOWN", "sim_number", 77896, ~N[2026-08-21 11:57:53], ~N[2026-08-21 11:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:53.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792165, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:53], updated_at: ~N[2026-08-21 11:57:53]}} [2026-08-21 11:57:53.312] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:57:51Z", "value" => "UNKNOWN"} [2026-08-21 11:57:53.336] [DEBUG] QUERY OK db=23.6ms idle=63.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:51Z", "UNKNOWN", "sim_iccid", 77896, ~N[2026-08-21 11:57:53], ~N[2026-08-21 11:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:53.336] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792166, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:53], updated_at: ~N[2026-08-21 11:57:53]}} [2026-08-21 11:57:53.336] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:57:51Z", "value" => "UNKNOWN"} [2026-08-21 11:57:53.396] [DEBUG] QUERY OK db=59.4ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:51Z", "UNKNOWN", "sim_imsi", 77896, ~N[2026-08-21 11:57:53], ~N[2026-08-21 11:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:53.396] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792167, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:53], updated_at: ~N[2026-08-21 11:57:53]}} [2026-08-21 11:57:53.396] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:57:51Z", "value" => "UNKNOWN"} [2026-08-21 11:57:53.439] [DEBUG] QUERY OK db=42.5ms idle=60.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:51Z", "UNKNOWN", "sim_iccid2", 77896, ~N[2026-08-21 11:57:53], ~N[2026-08-21 11:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:53.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792168, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:53], updated_at: ~N[2026-08-21 11:57:53]}} [2026-08-21 11:57:53.440] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:57:51Z", "value" => "UNKNOWN"} [2026-08-21 11:57:53.482] [DEBUG] QUERY OK db=40.6ms queue=0.5ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:51Z", "UNKNOWN", "sim_imsi2", 77896, ~N[2026-08-21 11:57:53], ~N[2026-08-21 11:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:53.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792169, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:53], updated_at: ~N[2026-08-21 11:57:53]}} [2026-08-21 11:57:53.482] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:57:51Z", "value" => "35"} [2026-08-21 11:57:53.523] [DEBUG] QUERY OK db=38.4ms queue=1.4ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:51Z", "35", "data_usage_mb", 77896, ~N[2026-08-21 11:57:53], ~N[2026-08-21 11:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:53.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792170, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:53], updated_at: ~N[2026-08-21 11:57:53]}} [2026-08-21 11:57:53.523] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:57:51Z", "value" => "0"} [2026-08-21 11:57:53.621] [DEBUG] QUERY OK db=97.3ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:51Z", "0", "mobile_data_mb", 77896, ~N[2026-08-21 11:57:53], ~N[2026-08-21 11:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:53.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792171, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:53], updated_at: ~N[2026-08-21 11:57:53]}} [2026-08-21 11:57:53.622] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:57: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:57:53.663] [DEBUG] QUERY OK db=40.5ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77896, ~N[2026-08-21 11:57:53], ~N[2026-08-21 11:57:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:57:53.664] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792172, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:57:51Z", message: nil, status_log_id: 77896, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:57:53], updated_at: ~N[2026-08-21 11:57:53]}} [2026-08-21 11:58:21.933] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:58:21.933] [INFO ] Incoming JSON payload: {"oid":"dcb3a2fe-8e23-4a74-9972-c664085f0516","sn":"98251226730002","uploadTime":"2026-08-21T11:57:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"ram_free_mb","value":"996","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:57:48Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:58:21.935] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "dcb3a2fe-8e23-4a74-9972-c664085f0516", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:57:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:57:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:57:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:57:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:57:48Z", "value" => "996"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:57:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:57:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:57:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:57:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:57:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:57:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:57:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:57:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:57:48Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:57:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:57:48Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:57:48Z", "vendor" => "morefun"} [2026-08-21 11:58:21.935] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:58:21.935] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:58:21.935] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:58:21.937] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=755.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-08-21 11:58:21.939] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.4ms idle=257.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:58:21.939] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:58:21.941] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=2.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:58:21.942] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:58:21.966] [DEBUG] QUERY OK source="tms_terminals" db=23.5ms queue=0.6ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:58:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:58:21.966] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:58:21.970] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=27.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:58:22.028] [DEBUG] QUERY OK source="tms_terminals" db=58.2ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:58:21], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:58:22.068] [DEBUG] QUERY OK db=39.1ms idle=58.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "dcb3a2fe-8e23-4a74-9972-c664085f0516", "2026-08-21T11:57:48Z", ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:58:22.069] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77897, oid: "dcb3a2fe-8e23-4a74-9972-c664085f0516", upload_time: "2026-08-21T11:57:48Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]} [2026-08-21 11:58:22.069] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:57:48Z", "value" => "morefun"} [2026-08-21 11:58:22.113] [DEBUG] QUERY OK db=42.7ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "morefun", "vendor", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792173, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.114] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:57:48Z", "value" => "kiosk_launcher"} [2026-08-21 11:58:22.163] [DEBUG] QUERY OK db=47.7ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "kiosk_launcher", "model", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792174, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.164] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:57:48Z", "value" => "1.0"} [2026-08-21 11:58:22.197] [DEBUG] QUERY OK db=33.0ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "1.0", "app_version", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792175, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.198] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:57:48Z", "value" => "13"} [2026-08-21 11:58:22.231] [DEBUG] QUERY OK db=33.3ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "13", "android_version", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792176, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.232] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:57:48Z", "value" => "996"} [2026-08-21 11:58:22.303] [DEBUG] QUERY OK db=67.8ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "996", "ram_free_mb", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.303] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792177, itemkey: "ram_free_mb", value: "996", timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.303] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:57:48Z", "value" => "WIFI"} [2026-08-21 11:58:22.347] [DEBUG] QUERY OK db=43.1ms queue=0.1ms idle=72.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "WIFI", "network_type", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792178, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.347] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:57:48Z", "value" => "true"} [2026-08-21 11:58:22.440] [DEBUG] QUERY OK db=91.7ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "true", "kiosk_active", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792179, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.440] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:57:48Z", "value" => ""} [2026-08-21 11:58:22.532] [DEBUG] QUERY OK db=91.5ms idle=93.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:57:48Z", "sim_operator", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792180, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.532] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:57:48Z", "value" => "UNKNOWN"} [2026-08-21 11:58:22.579] [DEBUG] QUERY OK db=45.0ms idle=93.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "UNKNOWN", "sim_number", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792181, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.580] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:57:48Z", "value" => "UNKNOWN"} [2026-08-21 11:58:22.606] [DEBUG] QUERY OK db=25.3ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "UNKNOWN", "sim_iccid", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792182, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.606] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:57:48Z", "value" => "UNKNOWN"} [2026-08-21 11:58:22.661] [DEBUG] QUERY OK db=54.7ms idle=28.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "UNKNOWN", "sim_imsi", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.664] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792183, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.664] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:57:48Z", "value" => "UNKNOWN"} [2026-08-21 11:58:22.708] [DEBUG] QUERY OK db=43.4ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "UNKNOWN", "sim_iccid2", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792184, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.709] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:57:48Z", "value" => "UNKNOWN"} [2026-08-21 11:58:22.757] [DEBUG] QUERY OK db=48.3ms queue=0.1ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "UNKNOWN", "sim_imsi2", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792185, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.758] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:57:48Z", "value" => "1"} [2026-08-21 11:58:22.792] [DEBUG] QUERY OK db=34.0ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "1", "data_usage_mb", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.792] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792186, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.793] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:57:48Z", "value" => "0"} [2026-08-21 11:58:22.839] [DEBUG] QUERY OK db=45.6ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "0", "mobile_data_mb", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792187, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.839] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:57:48Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:58:22.886] [DEBUG] QUERY OK db=44.8ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:57:48Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77897, ~N[2026-08-21 11:58:22], ~N[2026-08-21 11:58:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:22.887] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792188, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:57:48Z", message: nil, status_log_id: 77897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:22], updated_at: ~N[2026-08-21 11:58:22]}} [2026-08-21 11:58:22.887] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:58:22.887] [INFO ] Incoming JSON payload: {"oid":"32e8b575-31db-4058-ae27-ff246c762725","sn":"98251226730001","uploadTime":"2026-08-21T11:58:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:58:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:58:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:58:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:58:22Z"},{"itemkey":"ram_free_mb","value":"920","timestamp":"2026-08-21T11:58:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:58:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:58:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:58:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:58:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:58:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:58:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:58:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:58:22Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:58:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:58: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:58:22.889] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "32e8b575-31db-4058-ae27-ff246c762725", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:58:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:58:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:58:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:58:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:58:22Z", "value" => "920"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:58:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:58:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:58:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:58:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:58:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:58:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:58:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:58:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:58:22Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:58:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:58: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:58:22Z", "vendor" => "morefun"} [2026-08-21 11:58:22.889] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:58:22.889] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:58:22.889] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:58:22.891] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=50.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-08-21 11:58:22.893] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=5.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:58:22.893] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:58:22.895] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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-08-21 11:58:22.895] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:58:22.938] [DEBUG] QUERY OK source="tms_terminals" db=42.8ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:58:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:58:22.938] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:58:22.941] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=44.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:58:23.002] [DEBUG] QUERY OK source="tms_terminals" db=61.3ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:58:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:58:23.053] [DEBUG] QUERY OK db=50.2ms idle=62.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "32e8b575-31db-4058-ae27-ff246c762725", "2026-08-21T11:58:22Z", ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:58:23.053] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77898, oid: "32e8b575-31db-4058-ae27-ff246c762725", upload_time: "2026-08-21T11:58:22Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]} [2026-08-21 11:58:23.053] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:58:22Z", "value" => "morefun"} [2026-08-21 11:58:23.088] [DEBUG] QUERY OK db=33.6ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:22Z", "morefun", "vendor", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792189, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.088] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:58:22Z", "value" => "kiosk_launcher"} [2026-08-21 11:58:23.128] [DEBUG] QUERY OK db=39.2ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:22Z", "kiosk_launcher", "model", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792190, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.128] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:58:22Z", "value" => "1.0"} [2026-08-21 11:58:23.186] [DEBUG] QUERY OK db=57.1ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:22Z", "1.0", "app_version", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792191, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.187] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:58:22Z", "value" => "13"} [2026-08-21 11:58:23.211] [DEBUG] QUERY OK db=23.6ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:22Z", "13", "android_version", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792192, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.213] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:58:22Z", "value" => "920"} [2026-08-21 11:58:23.293] [DEBUG] QUERY OK db=80.3ms queue=0.1ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:22Z", "920", "ram_free_mb", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792193, itemkey: "ram_free_mb", value: "920", timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.294] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:58:22Z", "value" => "WIFI"} [2026-08-21 11:58:23.342] [DEBUG] QUERY OK db=47.7ms queue=0.1ms idle=83.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:22Z", "WIFI", "network_type", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.343] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792194, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.343] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:58:22Z", "value" => "true"} [2026-08-21 11:58:23.389] [DEBUG] QUERY OK db=46.0ms queue=0.1ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:22Z", "true", "kiosk_active", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792195, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.390] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:58:22Z", "value" => ""} [2026-08-21 11:58:23.415] [DEBUG] QUERY OK db=24.4ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:58:22Z", "sim_operator", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792196, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.416] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:58:22Z", "value" => "UNKNOWN"} [2026-08-21 11:58:23.465] [DEBUG] QUERY OK db=48.7ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:22Z", "UNKNOWN", "sim_number", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.465] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792197, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.466] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:58:22Z", "value" => "UNKNOWN"} [2026-08-21 11:58:23.506] [DEBUG] QUERY OK db=40.2ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:22Z", "UNKNOWN", "sim_iccid", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.507] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792198, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.507] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:58:22Z", "value" => "UNKNOWN"} [2026-08-21 11:58:23.532] [DEBUG] QUERY OK db=24.2ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:22Z", "UNKNOWN", "sim_imsi", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.532] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792199, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.532] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:58:22Z", "value" => "UNKNOWN"} [2026-08-21 11:58:23.577] [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-08-21T11:58:22Z", "UNKNOWN", "sim_iccid2", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792200, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.579] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:58:22Z", "value" => "UNKNOWN"} [2026-08-21 11:58:23.626] [DEBUG] QUERY OK db=46.3ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:22Z", "UNKNOWN", "sim_imsi2", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792201, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.626] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:58:22Z", "value" => "35"} [2026-08-21 11:58:23.650] [DEBUG] QUERY OK db=23.7ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:22Z", "35", "data_usage_mb", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.651] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792202, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.651] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:58:22Z", "value" => "0"} [2026-08-21 11:58:23.696] [DEBUG] QUERY OK db=44.4ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:22Z", "0", "mobile_data_mb", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792203, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:23.697] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:58: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:58:23.747] [DEBUG] QUERY OK db=47.9ms idle=9.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77898, ~N[2026-08-21 11:58:23], ~N[2026-08-21 11:58:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:23.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792204, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:58:22Z", message: nil, status_log_id: 77898, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:23], updated_at: ~N[2026-08-21 11:58:23]}} [2026-08-21 11:58:46.352] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 11:58:46.352] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T03:08:11Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T03:08:11Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T03:08:11Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T03:08:11Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T03:08:11Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T03:08:11Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T03:08:11Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T03:08:11Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T03:08:11Z","vendor":"MoreFun"} [2026-08-21 11:58:46.352] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:08:11Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:08:11Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:08:11Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:08:11Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:08:11Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:08:11Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:08:11Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:08:11Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T03:08:11Z", "vendor" => "MoreFun"} [2026-08-21 11:58:46.352] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 11:58:46.352] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 11:58:46.352] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 11:58:46.354] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=567.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-08-21 11:58:46.355] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=172.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 11:58:46.358] [DEBUG] QUERY OK source="parameter_template_values" db=1.0ms idle=2.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:58:46.363] [DEBUG] QUERY OK source="parameter_definitions" db=2.1ms queue=2.0ms idle=4.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 11:58:46.365] [DEBUG] QUERY OK source="pos_terminal" db=1.1ms idle=6.8ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 11:58:46.405] [DEBUG] QUERY OK source="pos_merchant" db=39.1ms idle=2.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 11:58:46.408] [DEBUG] QUERY OK db=1.1ms queue=2.0ms idle=1222.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 ["123451234512345"] [2026-08-21 11:58:46.408] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 11:58:46.414] [DEBUG] QUERY OK source="pos_terminal_data" db=4.7ms idle=43.6ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 11:58:46.414] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 11:58:46.415] [DEBUG] QUERY OK source="address" db=0.7ms queue=0.8ms idle=9.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` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 11:58:46.416] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 11:58:46.425] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 11:58:46.468] [DEBUG] QUERY OK db=40.3ms queue=1.4ms idle=12.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "62e6d223dbd7b80d0ee62957328a9d18d151bc379a45826138e2c976c0ce25e8", 3875, 932, ~U[2026-08-21 11:58:46Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 11:58:46], ~N[2026-08-21 11:58:46]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 11:58:46.470] [INFO ] AutoPushService: Created push log 49046 for MF919 params.zip [2026-08-21 11:58:46.470] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 3875, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 11:58:46.472] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:58:46.472] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 11:58:46.474] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms idle=57.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-08-21 11:58:46.484] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 11:58:46.525] [DEBUG] QUERY OK db=39.3ms idle=18.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "26d25a2b0f95c9f5ee8221fb83abb022091c16ba79714a2fcbc27a83834a5d9c", 2469, 17947, ~U[2026-08-21 11:58:46Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 11:58:46], ~N[2026-08-21 11:58:46]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 11:58:46.528] [INFO ] AutoPushService: Created push log 49047 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 11:58:46.528] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 2469, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 11:58:46.528] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 11:58:46.528] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 11:58:46.530] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms queue=0.2ms idle=54.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-08-21 11:58:46.530] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 11:58:46.531] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=5.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 11:58:46.532] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 11:58:46.539] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 11:58:46.539] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:58:46.540] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 11:58:46.546] [DEBUG] QUERY OK source="config_file_versions" db=5.6ms idle=9.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-08-21 11:58:46.548] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:58:46.549] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 11:58:46.554] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=19.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:58:46.554] [INFO ] Terminal updated: 98250623730001 [2026-08-21 11:58:46.625] [DEBUG] QUERY OK source="tms_terminals" db=70.3ms idle=9.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:58:46], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:58:46.626] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=71.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-08-21 11:58:46.629] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms idle=2.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:58:46.630] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=3.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 11:58:46.630] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 11:58:46.729] [DEBUG] QUERY OK source="parameter_push_logs" db=96.0ms queue=2.1ms idle=1.7ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [19, "application", ~N[2026-08-21 11:28:46]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 11:58:46.732] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 11:58:46.732] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 11:58:46.735] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=104.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 11:58:46.736] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=6.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 11:58:46.737] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 11:58:46.738] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:58:46.779] [DEBUG] QUERY OK source="tms_terminals" db=38.8ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:58:46], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:58:46.930] [DEBUG] QUERY OK db=149.0ms idle=42.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T03:08:11Z", ~N[2026-08-21 11:58:46], ~N[2026-08-21 11:58:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:58:46.930] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77899, oid: "organization_id", upload_time: "2026-08-21T03:08:11Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:46], updated_at: ~N[2026-08-21 11:58:46]} [2026-08-21 11:58:46.930] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:08:11Z", "value" => "online"} [2026-08-21 11:58:46.981] [DEBUG] QUERY OK db=50.4ms idle=141.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T03:08:11Z", "online", "status", 77899, ~N[2026-08-21 11:58:46], ~N[2026-08-21 11:58:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:46.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792205, itemkey: "status", value: "online", timestamp: "2026-08-21T03:08:11Z", message: "Terminal status update", status_log_id: 77899, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:46], updated_at: ~N[2026-08-21 11:58:46]}} [2026-08-21 11:58:46.981] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 11:58:46.982] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:08:11Z", "value" => "51"} [2026-08-21 11:58:47.048] [DEBUG] QUERY OK db=66.2ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T03:08:11Z", "51", "battery", 77899, ~N[2026-08-21 11:58:46], ~N[2026-08-21 11:58:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:47.049] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792206, itemkey: "battery", value: "51", timestamp: "2026-08-21T03:08:11Z", message: "Battery level", status_log_id: 77899, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:46], updated_at: ~N[2026-08-21 11:58:46]}} [2026-08-21 11:58:47.050] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:08:11Z", "value" => "online"} [2026-08-21 11:58:47.089] [DEBUG] QUERY OK db=38.8ms idle=69.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T03:08:11Z", "online", "network", 77899, ~N[2026-08-21 11:58:47], ~N[2026-08-21 11:58:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:47.089] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792207, itemkey: "network", value: "online", timestamp: "2026-08-21T03:08:11Z", message: "Network connectivity", status_log_id: 77899, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:47], updated_at: ~N[2026-08-21 11:58:47]}} [2026-08-21 11:58:47.089] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 11:58:47.091] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:08:11Z", "value" => "0"} [2026-08-21 11:58:47.132] [DEBUG] QUERY OK db=39.4ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T03:08:11Z", "0", "cpu", 77899, ~N[2026-08-21 11:58:47], ~N[2026-08-21 11:58:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:47.132] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792208, itemkey: "cpu", value: "0", timestamp: "2026-08-21T03:08:11Z", message: "CPU usage percentage", status_log_id: 77899, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:47], updated_at: ~N[2026-08-21 11:58:47]}} [2026-08-21 11:58:47.132] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:08:11Z", "value" => "1.0.0"} [2026-08-21 11:58:47.166] [DEBUG] QUERY OK db=32.2ms queue=0.1ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T03:08:11Z", "1.0.0", "parameter_config", 77899, ~N[2026-08-21 11:58:47], ~N[2026-08-21 11:58:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:47.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792209, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T03:08:11Z", message: "Current parameters version", status_log_id: 77899, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:47], updated_at: ~N[2026-08-21 11:58:47]}} [2026-08-21 11:58:47.166] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:08:11Z", "value" => "1.0.1"} [2026-08-21 11:58:47.221] [DEBUG] QUERY OK db=54.7ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T03:08:11Z", "1.0.1", "emv_config", 77899, ~N[2026-08-21 11:58:47], ~N[2026-08-21 11:58:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:47.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792210, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T03:08:11Z", message: "Current EMV config version", status_log_id: 77899, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:47], updated_at: ~N[2026-08-21 11:58:47]}} [2026-08-21 11:58:47.222] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:08:11Z", "value" => ""} [2026-08-21 11:58:47.335] [DEBUG] QUERY OK db=71.3ms queue=41.2ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T03:08:11Z", "keys_config", 77899, ~N[2026-08-21 11:58:47], ~N[2026-08-21 11:58:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:47.335] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792211, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T03:08:11Z", message: "Current keys config version", status_log_id: 77899, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:47], updated_at: ~N[2026-08-21 11:58:47]}} [2026-08-21 11:58:47.335] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:08:11Z", "value" => "3.8.7.3"} [2026-08-21 11:58:47.412] [DEBUG] QUERY OK db=75.9ms idle=114.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T03:08:11Z", "3.8.7.3", "application", 77899, ~N[2026-08-21 11:58:47], ~N[2026-08-21 11:58:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:47.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792212, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T03:08:11Z", message: "Current application version", status_log_id: 77899, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:47], updated_at: ~N[2026-08-21 11:58:47]}} [2026-08-21 11:58:47.412] [WARN ] Unexpected async result [2026-08-21 11:58:47.412] [WARN ] Unexpected async result [2026-08-21 11:58:52.437] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:58:52.437] [INFO ] Incoming JSON payload: {"oid":"6410b793-2376-411f-b69a-2ddda723067c","sn":"98251226730002","uploadTime":"2026-08-21T11:58:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"ram_free_mb","value":"997","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:58:18Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:58:52.441] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6410b793-2376-411f-b69a-2ddda723067c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:58:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:58:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:58:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:58:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:58:18Z", "value" => "997"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:58:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:58:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:58:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:58:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:58:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:58:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:58:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:58:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:58:18Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:58:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:58:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:58:18Z", "vendor" => "morefun"} [2026-08-21 11:58:52.442] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:58:52.443] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:58:52.443] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:58:52.444] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=632.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-08-21 11:58:52.448] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms idle=262.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-08-21 11:58:52.448] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:58:52.452] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=4.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:58:52.452] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:58:52.487] [DEBUG] QUERY OK source="tms_terminals" db=35.0ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:58:52], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:58:52.488] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:58:52.492] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms queue=0.1ms idle=37.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:58:52.541] [DEBUG] QUERY OK source="tms_terminals" db=47.2ms queue=0.1ms idle=5.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:58:52], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:58:52.585] [DEBUG] QUERY OK db=42.0ms queue=0.1ms idle=52.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "6410b793-2376-411f-b69a-2ddda723067c", "2026-08-21T11:58:18Z", ~N[2026-08-21 11:58:52], ~N[2026-08-21 11:58:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:58:52.585] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77900, oid: "6410b793-2376-411f-b69a-2ddda723067c", upload_time: "2026-08-21T11:58:18Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:52], updated_at: ~N[2026-08-21 11:58:52]} [2026-08-21 11:58:52.585] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:58:18Z", "value" => "morefun"} [2026-08-21 11:58:52.621] [DEBUG] QUERY OK db=35.3ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "morefun", "vendor", 77900, ~N[2026-08-21 11:58:52], ~N[2026-08-21 11:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:52.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792213, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:52], updated_at: ~N[2026-08-21 11:58:52]}} [2026-08-21 11:58:52.627] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:58:18Z", "value" => "kiosk_launcher"} [2026-08-21 11:58:52.698] [DEBUG] QUERY OK db=24.2ms queue=44.9ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "kiosk_launcher", "model", 77900, ~N[2026-08-21 11:58:52], ~N[2026-08-21 11:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:52.698] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792214, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:52], updated_at: ~N[2026-08-21 11:58:52]}} [2026-08-21 11:58:52.698] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:58:18Z", "value" => "1.0"} [2026-08-21 11:58:52.751] [DEBUG] QUERY OK db=52.2ms idle=77.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "1.0", "app_version", 77900, ~N[2026-08-21 11:58:52], ~N[2026-08-21 11:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:52.751] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792215, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:52], updated_at: ~N[2026-08-21 11:58:52]}} [2026-08-21 11:58:52.751] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:58:18Z", "value" => "13"} [2026-08-21 11:58:52.797] [DEBUG] QUERY OK db=45.1ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "13", "android_version", 77900, ~N[2026-08-21 11:58:52], ~N[2026-08-21 11:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:52.797] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792216, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:52], updated_at: ~N[2026-08-21 11:58:52]}} [2026-08-21 11:58:52.797] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:58:18Z", "value" => "997"} [2026-08-21 11:58:52.848] [DEBUG] QUERY OK db=50.6ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "997", "ram_free_mb", 77900, ~N[2026-08-21 11:58:52], ~N[2026-08-21 11:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:52.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792217, itemkey: "ram_free_mb", value: "997", timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:52], updated_at: ~N[2026-08-21 11:58:52]}} [2026-08-21 11:58:52.850] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:58:18Z", "value" => "WIFI"} [2026-08-21 11:58:52.892] [DEBUG] QUERY OK db=40.1ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "WIFI", "network_type", 77900, ~N[2026-08-21 11:58:52], ~N[2026-08-21 11:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:52.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792218, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:52], updated_at: ~N[2026-08-21 11:58:52]}} [2026-08-21 11:58:52.892] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:58:18Z", "value" => "true"} [2026-08-21 11:58:52.956] [DEBUG] QUERY OK db=63.6ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "true", "kiosk_active", 77900, ~N[2026-08-21 11:58:52], ~N[2026-08-21 11:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:52.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792219, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:52], updated_at: ~N[2026-08-21 11:58:52]}} [2026-08-21 11:58:52.957] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:58:18Z", "value" => ""} [2026-08-21 11:58:52.981] [DEBUG] QUERY OK db=23.4ms idle=66.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:58:18Z", "sim_operator", 77900, ~N[2026-08-21 11:58:52], ~N[2026-08-21 11:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:52.981] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792220, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:52], updated_at: ~N[2026-08-21 11:58:52]}} [2026-08-21 11:58:52.981] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:58:18Z", "value" => "UNKNOWN"} [2026-08-21 11:58:53.064] [DEBUG] QUERY OK db=82.2ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "UNKNOWN", "sim_number", 77900, ~N[2026-08-21 11:58:52], ~N[2026-08-21 11:58:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.064] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792221, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:52], updated_at: ~N[2026-08-21 11:58:52]}} [2026-08-21 11:58:53.064] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:58:18Z", "value" => "UNKNOWN"} [2026-08-21 11:58:53.116] [DEBUG] QUERY OK db=49.7ms queue=1.5ms idle=84.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "UNKNOWN", "sim_iccid", 77900, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.117] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792222, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.117] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:58:18Z", "value" => "UNKNOWN"} [2026-08-21 11:58:53.150] [DEBUG] QUERY OK db=32.5ms queue=0.2ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "UNKNOWN", "sim_imsi", 77900, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792223, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.151] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:58:18Z", "value" => "UNKNOWN"} [2026-08-21 11:58:53.199] [DEBUG] QUERY OK db=47.1ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "UNKNOWN", "sim_iccid2", 77900, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.199] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792224, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.200] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:58:18Z", "value" => "UNKNOWN"} [2026-08-21 11:58:53.238] [DEBUG] QUERY OK db=36.8ms queue=0.3ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "UNKNOWN", "sim_imsi2", 77900, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792225, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.238] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:58:18Z", "value" => "1"} [2026-08-21 11:58:53.314] [DEBUG] QUERY OK db=75.3ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "1", "data_usage_mb", 77900, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792226, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.314] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:58:18Z", "value" => "0"} [2026-08-21 11:58:53.347] [DEBUG] QUERY OK db=32.5ms idle=76.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "0", "mobile_data_mb", 77900, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792227, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.351] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:58:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:58:53.405] [DEBUG] QUERY OK db=51.9ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:18Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77900, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792228, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:58:18Z", message: nil, status_log_id: 77900, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.413] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:58:53.413] [INFO ] Incoming JSON payload: {"oid":"41157e16-5bd6-4b63-be6d-61f96fd5c428","sn":"98251226730001","uploadTime":"2026-08-21T11:58:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:58:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:58:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:58:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:58:52Z"},{"itemkey":"ram_free_mb","value":"918","timestamp":"2026-08-21T11:58:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:58:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:58:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:58:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:58:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:58:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:58:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:58:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:58:52Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:58:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:58:53.422] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "41157e16-5bd6-4b63-be6d-61f96fd5c428", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:58:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:58:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:58:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:58:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:58:52Z", "value" => "918"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:58:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:58:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:58:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:58:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:58:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:58:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:58:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:58:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:58:52Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:58:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:58:52Z", "vendor" => "morefun"} [2026-08-21 11:58:53.424] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:58:53.424] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:58:53.425] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:58:53.431] [DEBUG] QUERY OK source="parameter_templates" db=6.4ms idle=77.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-08-21 11:58:53.436] [DEBUG] QUERY OK source="parameter_templates" db=4.1ms idle=27.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-08-21 11:58:53.436] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:58:53.441] [DEBUG] QUERY OK source="tms_terminals" db=4.5ms idle=5.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:58:53.441] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:58:53.471] [DEBUG] QUERY OK source="tms_terminals" db=29.0ms idle=5.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:58:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:58:53.473] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:58:53.476] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:58:53.503] [DEBUG] QUERY OK source="tms_terminals" db=27.1ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:58:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:58:53.535] [DEBUG] QUERY OK db=30.4ms queue=0.2ms idle=29.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "41157e16-5bd6-4b63-be6d-61f96fd5c428", "2026-08-21T11:58:52Z", ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:58:53.536] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77901, oid: "41157e16-5bd6-4b63-be6d-61f96fd5c428", upload_time: "2026-08-21T11:58:52Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]} [2026-08-21 11:58:53.536] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:58:52Z", "value" => "morefun"} [2026-08-21 11:58:53.577] [DEBUG] QUERY OK db=40.4ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:52Z", "morefun", "vendor", 77901, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.579] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792229, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.579] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:58:52Z", "value" => "kiosk_launcher"} [2026-08-21 11:58:53.657] [DEBUG] QUERY OK db=77.8ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:52Z", "kiosk_launcher", "model", 77901, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792230, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.658] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:58:52Z", "value" => "1.0"} [2026-08-21 11:58:53.723] [DEBUG] QUERY OK db=62.9ms queue=1.7ms idle=81.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:52Z", "1.0", "app_version", 77901, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792231, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.723] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:58:52Z", "value" => "13"} [2026-08-21 11:58:53.759] [DEBUG] QUERY OK db=32.2ms idle=69.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:52Z", "13", "android_version", 77901, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.760] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792232, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.760] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:58:52Z", "value" => "918"} [2026-08-21 11:58:53.815] [DEBUG] QUERY OK db=51.4ms queue=3.3ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:52Z", "918", "ram_free_mb", 77901, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.815] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792233, itemkey: "ram_free_mb", value: "918", timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.815] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:58:52Z", "value" => "WIFI"} [2026-08-21 11:58:53.857] [DEBUG] QUERY OK db=37.1ms queue=3.7ms idle=56.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:52Z", "WIFI", "network_type", 77901, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.860] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792234, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.860] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:58:52Z", "value" => "true"} [2026-08-21 11:58:53.892] [DEBUG] QUERY OK db=30.7ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:52Z", "true", "kiosk_active", 77901, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792235, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.893] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:58:52Z", "value" => ""} [2026-08-21 11:58:53.923] [DEBUG] QUERY OK db=30.2ms queue=0.1ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:58:52Z", "sim_operator", 77901, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792236, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.924] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:58:52Z", "value" => "UNKNOWN"} [2026-08-21 11:58:53.977] [DEBUG] QUERY OK db=52.2ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:52Z", "UNKNOWN", "sim_number", 77901, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:53.978] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792237, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:53.978] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:58:52Z", "value" => "UNKNOWN"} [2026-08-21 11:58:54.024] [DEBUG] QUERY OK db=45.5ms idle=55.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:52Z", "UNKNOWN", "sim_iccid", 77901, ~N[2026-08-21 11:58:53], ~N[2026-08-21 11:58:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:54.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792238, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:53], updated_at: ~N[2026-08-21 11:58:53]}} [2026-08-21 11:58:54.024] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:58:52Z", "value" => "UNKNOWN"} [2026-08-21 11:58:54.072] [DEBUG] QUERY OK db=46.8ms idle=48.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:52Z", "UNKNOWN", "sim_imsi", 77901, ~N[2026-08-21 11:58:54], ~N[2026-08-21 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:54.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792239, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:54], updated_at: ~N[2026-08-21 11:58:54]}} [2026-08-21 11:58:54.073] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:58:52Z", "value" => "UNKNOWN"} [2026-08-21 11:58:54.111] [DEBUG] QUERY OK db=36.9ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:52Z", "UNKNOWN", "sim_iccid2", 77901, ~N[2026-08-21 11:58:54], ~N[2026-08-21 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:54.112] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792240, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:54], updated_at: ~N[2026-08-21 11:58:54]}} [2026-08-21 11:58:54.112] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:58:52Z", "value" => "UNKNOWN"} [2026-08-21 11:58:54.151] [DEBUG] QUERY OK db=36.9ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:52Z", "UNKNOWN", "sim_imsi2", 77901, ~N[2026-08-21 11:58:54], ~N[2026-08-21 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:54.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792241, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:54], updated_at: ~N[2026-08-21 11:58:54]}} [2026-08-21 11:58:54.151] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:58:52Z", "value" => "35"} [2026-08-21 11:58:54.199] [DEBUG] QUERY OK db=47.5ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:52Z", "35", "data_usage_mb", 77901, ~N[2026-08-21 11:58:54], ~N[2026-08-21 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:54.199] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792242, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:54], updated_at: ~N[2026-08-21 11:58:54]}} [2026-08-21 11:58:54.200] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:58:52Z", "value" => "0"} [2026-08-21 11:58:54.216] [DEBUG] QUERY OK db=15.4ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:52Z", "0", "mobile_data_mb", 77901, ~N[2026-08-21 11:58:54], ~N[2026-08-21 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:54.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792243, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:54], updated_at: ~N[2026-08-21 11:58:54]}} [2026-08-21 11:58:54.217] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:58:54.273] [DEBUG] QUERY OK db=55.6ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77901, ~N[2026-08-21 11:58:54], ~N[2026-08-21 11:58:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:58:54.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792244, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:58:52Z", message: nil, status_log_id: 77901, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:58:54], updated_at: ~N[2026-08-21 11:58:54]}} [2026-08-21 11:59:22.262] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:59:22.262] [INFO ] Incoming JSON payload: {"oid":"8ad60f7c-4ab2-4fc2-acfd-e2fac7df8799","sn":"98251226730002","uploadTime":"2026-08-21T11:58:48Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"ram_free_mb","value":"993","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:58:48Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:59:22.263] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8ad60f7c-4ab2-4fc2-acfd-e2fac7df8799", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:58:48Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:58:48Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:58:48Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:58:48Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:58:48Z", "value" => "993"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:58:48Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:58:48Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:58:48Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:58:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:58:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:58:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:58:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:58:48Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:58:48Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:58:48Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:58:48Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:58:48Z", "vendor" => "morefun"} [2026-08-21 11:59:22.263] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:59:22.263] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:59:22.263] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:59:22.266] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms queue=0.2ms idle=289.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-08-21 11:59:22.268] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.8ms idle=72.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-08-21 11:59:22.268] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:59:22.269] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:59:22.269] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:59:22.602] [DEBUG] QUERY OK source="tms_terminals" db=331.1ms queue=0.7ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:59:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:59:22.602] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:59:22.604] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=332.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:59:22.884] [DEBUG] QUERY OK source="tms_terminals" db=279.7ms queue=0.1ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:59:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:59:22.969] [DEBUG] QUERY OK db=81.0ms queue=3.1ms idle=281.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "8ad60f7c-4ab2-4fc2-acfd-e2fac7df8799", "2026-08-21T11:58:48Z", ~N[2026-08-21 11:59:22], ~N[2026-08-21 11:59:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:59:22.969] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77902, oid: "8ad60f7c-4ab2-4fc2-acfd-e2fac7df8799", upload_time: "2026-08-21T11:58:48Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:22], updated_at: ~N[2026-08-21 11:59:22]} [2026-08-21 11:59:22.969] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:58:48Z", "value" => "morefun"} [2026-08-21 11:59:23.013] [DEBUG] QUERY OK db=43.1ms idle=85.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "morefun", "vendor", 77902, ~N[2026-08-21 11:59:22], ~N[2026-08-21 11:59:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:23.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792245, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:22], updated_at: ~N[2026-08-21 11:59:22]}} [2026-08-21 11:59:23.013] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:58:48Z", "value" => "kiosk_launcher"} [2026-08-21 11:59:23.047] [DEBUG] QUERY OK db=33.9ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "kiosk_launcher", "model", 77902, ~N[2026-08-21 11:59:23], ~N[2026-08-21 11:59:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:23.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792246, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:23], updated_at: ~N[2026-08-21 11:59:23]}} [2026-08-21 11:59:23.048] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:58:48Z", "value" => "1.0"} [2026-08-21 11:59:23.121] [DEBUG] QUERY OK db=72.4ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "1.0", "app_version", 77902, ~N[2026-08-21 11:59:23], ~N[2026-08-21 11:59:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:23.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792247, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:23], updated_at: ~N[2026-08-21 11:59:23]}} [2026-08-21 11:59:23.121] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:58:48Z", "value" => "13"} [2026-08-21 11:59:23.164] [DEBUG] QUERY OK db=41.9ms idle=74.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "13", "android_version", 77902, ~N[2026-08-21 11:59:23], ~N[2026-08-21 11:59:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:23.165] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792248, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:23], updated_at: ~N[2026-08-21 11:59:23]}} [2026-08-21 11:59:23.169] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:58:48Z", "value" => "993"} [2026-08-21 11:59:23.243] [DEBUG] QUERY OK db=72.0ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "993", "ram_free_mb", 77902, ~N[2026-08-21 11:59:23], ~N[2026-08-21 11:59:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:23.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792249, itemkey: "ram_free_mb", value: "993", timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:23], updated_at: ~N[2026-08-21 11:59:23]}} [2026-08-21 11:59:23.243] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:58:48Z", "value" => "WIFI"} [2026-08-21 11:59:23.355] [DEBUG] QUERY OK db=110.8ms idle=80.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "WIFI", "network_type", 77902, ~N[2026-08-21 11:59:23], ~N[2026-08-21 11:59:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:23.360] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792250, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:23], updated_at: ~N[2026-08-21 11:59:23]}} [2026-08-21 11:59:23.362] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:58:48Z", "value" => "true"} [2026-08-21 11:59:23.407] [DEBUG] QUERY OK db=44.3ms idle=119.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "true", "kiosk_active", 77902, ~N[2026-08-21 11:59:23], ~N[2026-08-21 11:59:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:23.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792251, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:23], updated_at: ~N[2026-08-21 11:59:23]}} [2026-08-21 11:59:23.408] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:58:48Z", "value" => ""} [2026-08-21 11:59:23.482] [DEBUG] QUERY OK db=71.1ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:58:48Z", "sim_operator", 77902, ~N[2026-08-21 11:59:23], ~N[2026-08-21 11:59:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:23.483] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792252, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:23], updated_at: ~N[2026-08-21 11:59:23]}} [2026-08-21 11:59:23.483] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:58:48Z", "value" => "UNKNOWN"} [2026-08-21 11:59:23.571] [DEBUG] QUERY OK db=81.2ms queue=7.1ms idle=75.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "UNKNOWN", "sim_number", 77902, ~N[2026-08-21 11:59:23], ~N[2026-08-21 11:59:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:23.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792253, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:23], updated_at: ~N[2026-08-21 11:59:23]}} [2026-08-21 11:59:23.572] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:58:48Z", "value" => "UNKNOWN"} [2026-08-21 11:59:23.752] [DEBUG] QUERY OK db=177.4ms queue=1.2ms idle=89.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "UNKNOWN", "sim_iccid", 77902, ~N[2026-08-21 11:59:23], ~N[2026-08-21 11:59:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:23.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792254, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:23], updated_at: ~N[2026-08-21 11:59:23]}} [2026-08-21 11:59:23.757] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:58:48Z", "value" => "UNKNOWN"} [2026-08-21 11:59:23.953] [DEBUG] QUERY OK db=195.5ms idle=186.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "UNKNOWN", "sim_imsi", 77902, ~N[2026-08-21 11:59:23], ~N[2026-08-21 11:59:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:23.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792255, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:23], updated_at: ~N[2026-08-21 11:59:23]}} [2026-08-21 11:59:23.954] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:58:48Z", "value" => "UNKNOWN"} [2026-08-21 11:59:23.999] [DEBUG] QUERY OK db=44.7ms queue=0.1ms idle=203.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "UNKNOWN", "sim_iccid2", 77902, ~N[2026-08-21 11:59:23], ~N[2026-08-21 11:59:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:23.999] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792256, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:23], updated_at: ~N[2026-08-21 11:59:23]}} [2026-08-21 11:59:24.000] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:58:48Z", "value" => "UNKNOWN"} [2026-08-21 11:59:24.067] [DEBUG] QUERY OK db=67.0ms idle=17.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "UNKNOWN", "sim_imsi2", 77902, ~N[2026-08-21 11:59:24], ~N[2026-08-21 11:59:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:24.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792257, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:24], updated_at: ~N[2026-08-21 11:59:24]}} [2026-08-21 11:59:24.067] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:58:48Z", "value" => "1"} [2026-08-21 11:59:24.120] [DEBUG] QUERY OK db=52.4ms idle=68.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "1", "data_usage_mb", 77902, ~N[2026-08-21 11:59:24], ~N[2026-08-21 11:59:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:24.120] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792258, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:24], updated_at: ~N[2026-08-21 11:59:24]}} [2026-08-21 11:59:24.121] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:58:48Z", "value" => "0"} [2026-08-21 11:59:24.204] [DEBUG] QUERY OK db=83.2ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "0", "mobile_data_mb", 77902, ~N[2026-08-21 11:59:24], ~N[2026-08-21 11:59:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:24.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792259, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:24], updated_at: ~N[2026-08-21 11:59:24]}} [2026-08-21 11:59:24.205] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:58:48Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:59:24.346] [DEBUG] QUERY OK db=139.6ms idle=85.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:58:48Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77902, ~N[2026-08-21 11:59:24], ~N[2026-08-21 11:59:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:24.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792260, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:58:48Z", message: nil, status_log_id: 77902, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:24], updated_at: ~N[2026-08-21 11:59:24]}} [2026-08-21 11:59:24.355] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:59:24.355] [INFO ] Incoming JSON payload: {"oid":"e92b82a3-06e6-4529-8e7e-d82f0cfafec9","sn":"98251226730001","uploadTime":"2026-08-21T11:59:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:59:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:59:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:59:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:59:22Z"},{"itemkey":"ram_free_mb","value":"914","timestamp":"2026-08-21T11:59:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:59:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:59:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:59:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:59:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:59:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:59:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:59:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:59:22Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:59:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:59:24.361] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e92b82a3-06e6-4529-8e7e-d82f0cfafec9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:59:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:59:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:59:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:59:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:59:22Z", "value" => "914"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:59:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:59:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:59:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:59:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:59:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:59:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:59:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:59:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:59:22Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:59:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:59:22Z", "vendor" => "morefun"} [2026-08-21 11:59:24.362] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:59:24.362] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:59:24.362] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:59:24.366] [DEBUG] QUERY OK source="parameter_templates" db=2.9ms idle=158.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-08-21 11:59:24.375] [DEBUG] QUERY OK source="parameter_templates" db=3.1ms idle=26.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-08-21 11:59:24.375] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:59:24.377] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=9.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:59:24.377] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:59:24.617] [DEBUG] QUERY OK source="tms_terminals" db=235.7ms idle=7.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:59:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:59:24.618] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:59:24.622] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms idle=241.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:59:24.867] [DEBUG] QUERY OK source="tms_terminals" db=243.5ms idle=6.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:59:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:59:25.020] [DEBUG] QUERY OK db=151.4ms idle=245.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e92b82a3-06e6-4529-8e7e-d82f0cfafec9", "2026-08-21T11:59:22Z", ~N[2026-08-21 11:59:24], ~N[2026-08-21 11:59:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:59:25.021] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77903, oid: "e92b82a3-06e6-4529-8e7e-d82f0cfafec9", upload_time: "2026-08-21T11:59:22Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:24], updated_at: ~N[2026-08-21 11:59:24]} [2026-08-21 11:59:25.021] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:59:22Z", "value" => "morefun"} [2026-08-21 11:59:25.103] [DEBUG] QUERY OK db=81.6ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:22Z", "morefun", "vendor", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792261, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.107] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:59:22Z", "value" => "kiosk_launcher"} [2026-08-21 11:59:25.133] [DEBUG] QUERY OK db=26.1ms idle=87.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:22Z", "kiosk_launcher", "model", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792262, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.134] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:59:22Z", "value" => "1.0"} [2026-08-21 11:59:25.219] [DEBUG] QUERY OK db=84.5ms queue=0.1ms idle=31.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:22Z", "1.0", "app_version", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.219] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792263, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.219] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:59:22Z", "value" => "13"} [2026-08-21 11:59:25.270] [DEBUG] QUERY OK db=49.8ms idle=86.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:22Z", "13", "android_version", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792264, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.270] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:59:22Z", "value" => "914"} [2026-08-21 11:59:25.345] [DEBUG] QUERY OK db=74.2ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:22Z", "914", "ram_free_mb", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792265, itemkey: "ram_free_mb", value: "914", timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.345] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:59:22Z", "value" => "WIFI"} [2026-08-21 11:59:25.432] [DEBUG] QUERY OK db=85.8ms idle=75.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:22Z", "WIFI", "network_type", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.433] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792266, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.433] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:59:22Z", "value" => "true"} [2026-08-21 11:59:25.501] [DEBUG] QUERY OK db=65.9ms queue=1.1ms idle=89.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:22Z", "true", "kiosk_active", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792267, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.501] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:59:22Z", "value" => ""} [2026-08-21 11:59:25.604] [DEBUG] QUERY OK db=102.1ms idle=70.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:59:22Z", "sim_operator", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792268, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.609] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:59:22Z", "value" => "UNKNOWN"} [2026-08-21 11:59:25.656] [DEBUG] QUERY OK db=47.3ms idle=108.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:22Z", "UNKNOWN", "sim_number", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792269, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.659] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:59:22Z", "value" => "UNKNOWN"} [2026-08-21 11:59:25.698] [DEBUG] QUERY OK db=37.7ms queue=0.6ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:22Z", "UNKNOWN", "sim_iccid", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792270, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.700] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:59:22Z", "value" => "UNKNOWN"} [2026-08-21 11:59:25.762] [DEBUG] QUERY OK db=61.5ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:22Z", "UNKNOWN", "sim_imsi", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.762] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792271, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.762] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:59:22Z", "value" => "UNKNOWN"} [2026-08-21 11:59:25.813] [DEBUG] QUERY OK db=49.8ms idle=64.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:22Z", "UNKNOWN", "sim_iccid2", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.815] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792272, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.815] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:59:22Z", "value" => "UNKNOWN"} [2026-08-21 11:59:25.881] [DEBUG] QUERY OK db=64.8ms idle=54.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:22Z", "UNKNOWN", "sim_imsi2", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792273, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.881] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:59:22Z", "value" => "35"} [2026-08-21 11:59:25.941] [DEBUG] QUERY OK db=58.9ms idle=69.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:22Z", "35", "data_usage_mb", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.942] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792274, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.942] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:59:22Z", "value" => "0"} [2026-08-21 11:59:25.998] [DEBUG] QUERY OK db=52.1ms queue=0.1ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:22Z", "0", "mobile_data_mb", 77903, ~N[2026-08-21 11:59:25], ~N[2026-08-21 11:59:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:25.999] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792275, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:25], updated_at: ~N[2026-08-21 11:59:25]}} [2026-08-21 11:59:25.999] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:59:26.051] [DEBUG] QUERY OK db=48.5ms idle=9.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77903, ~N[2026-08-21 11:59:26], ~N[2026-08-21 11:59:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:26.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792276, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:59:22Z", message: nil, status_log_id: 77903, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:26], updated_at: ~N[2026-08-21 11:59:26]}} [2026-08-21 11:59:39.537] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 11:59:39.537] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T15:59:37Z","org.device":[{"itemkey":"battery","value":50,"timestamp":"2026-08-21T15:59:37Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T15:59:37Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T15:59:37Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T15:59:37Z","message":""}]} [2026-08-21 11:59:39.538] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T15:59:37Z", "value" => 50}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T15:59:37Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T15:59:37Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T15:59:37Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T15:59:37Z"} [2026-08-21 11:59:39.538] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:59:39.539] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1338.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:59:39.539] [INFO ] Terminal updated: 61250415798001 [2026-08-21 11:59:40.257] [DEBUG] QUERY OK source="tms_terminals" db=718.0ms idle=495.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:59:39], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:59:40.260] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=0.2ms idle=208.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:59:42.340] [DEBUG] QUERY OK source="tms_terminals" db=2080.2ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:59:40], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:59:42.912] [DEBUG] QUERY OK db=568.8ms idle=286.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T15:59:37Z", ~N[2026-08-21 11:59:42], ~N[2026-08-21 11:59:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:59:42.912] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77904, oid: "org-id-placeholder", upload_time: "2026-08-21T15:59:37Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:42], updated_at: ~N[2026-08-21 11:59:42]} [2026-08-21 11:59:42.912] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T15:59:37Z", "value" => 50} [2026-08-21 11:59:43.466] [DEBUG] QUERY OK db=550.1ms queue=0.3ms idle=574.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:59:37Z", "50", "battery", 77904, ~N[2026-08-21 11:59:42], ~N[2026-08-21 11:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:43.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792277, itemkey: "battery", value: "50", timestamp: "2026-08-21T15:59:37Z", message: nil, status_log_id: 77904, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:42], updated_at: ~N[2026-08-21 11:59:42]}} [2026-08-21 11:59:43.466] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T15:59:37Z", "value" => 50} [2026-08-21 11:59:44.714] [DEBUG] QUERY OK db=1243.5ms idle=406.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T15:59:37Z", "50", "memory", 77904, ~N[2026-08-21 11:59:43], ~N[2026-08-21 11:59:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:44.714] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792278, itemkey: "memory", value: "50", timestamp: "2026-08-21T15:59:37Z", message: "Normal", status_log_id: 77904, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:43], updated_at: ~N[2026-08-21 11:59:43]}} [2026-08-21 11:59:44.714] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T15:59:37Z", "value" => 50} [2026-08-21 11:59:45.456] [DEBUG] QUERY OK db=739.9ms queue=1.8ms idle=647.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:59:37Z", "50", "cpu", 77904, ~N[2026-08-21 11:59:44], ~N[2026-08-21 11:59:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:45.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792279, itemkey: "cpu", value: "50", timestamp: "2026-08-21T15:59:37Z", message: nil, status_log_id: 77904, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:44], updated_at: ~N[2026-08-21 11:59:44]}} [2026-08-21 11:59:45.458] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T15:59:37Z", "value" => "online"} [2026-08-21 11:59:45.559] [DEBUG] QUERY OK db=100.1ms queue=0.7ms idle=1.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T15:59:37Z", "online", "network", 77904, ~N[2026-08-21 11:59:45], ~N[2026-08-21 11:59:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:45.559] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792280, itemkey: "network", value: "online", timestamp: "2026-08-21T15:59:37Z", message: nil, status_log_id: 77904, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:45], updated_at: ~N[2026-08-21 11:59:45]}} [2026-08-21 11:59:45.559] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 11:59:52.446] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 11:59:52.447] [INFO ] Incoming JSON payload: {"oid":"a8dc1d72-9b55-4f1b-8285-a784b9d46e23","sn":"98251226730002","uploadTime":"2026-08-21T11:59:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"ram_free_mb","value":"993","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:59:18Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 11:59:52.448] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a8dc1d72-9b55-4f1b-8285-a784b9d46e23", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:59:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:59:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:59:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:59:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:59:18Z", "value" => "993"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:59:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:59:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:59:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:59:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:59:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:59:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:59:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:59:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:59:18Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:59:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:59:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:59:18Z", "vendor" => "morefun"} [2026-08-21 11:59:52.448] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:59:52.448] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 11:59:52.449] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 11:59:52.449] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1248.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-08-21 11:59:52.450] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=355.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-08-21 11:59:52.450] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:59:52.452] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:59:52.453] [INFO ] Terminal updated: 98251226730002 [2026-08-21 11:59:52.515] [DEBUG] QUERY OK source="tms_terminals" db=62.3ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:59:52], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:59:52.515] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 11:59:52.520] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=66.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:59:52.624] [DEBUG] QUERY OK source="tms_terminals" db=103.3ms idle=5.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:59:52], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:59:52.741] [DEBUG] QUERY OK db=115.9ms queue=0.4ms idle=104.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "a8dc1d72-9b55-4f1b-8285-a784b9d46e23", "2026-08-21T11:59:18Z", ~N[2026-08-21 11:59:52], ~N[2026-08-21 11:59:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:59:52.741] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77905, oid: "a8dc1d72-9b55-4f1b-8285-a784b9d46e23", upload_time: "2026-08-21T11:59:18Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:52], updated_at: ~N[2026-08-21 11:59:52]} [2026-08-21 11:59:52.742] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:59:18Z", "value" => "morefun"} [2026-08-21 11:59:52.850] [DEBUG] QUERY OK db=107.8ms idle=117.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "morefun", "vendor", 77905, ~N[2026-08-21 11:59:52], ~N[2026-08-21 11:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:52.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792281, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:52], updated_at: ~N[2026-08-21 11:59:52]}} [2026-08-21 11:59:52.850] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:59:18Z", "value" => "kiosk_launcher"} [2026-08-21 11:59:52.928] [DEBUG] QUERY OK db=77.8ms idle=109.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "kiosk_launcher", "model", 77905, ~N[2026-08-21 11:59:52], ~N[2026-08-21 11:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:52.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792282, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:52], updated_at: ~N[2026-08-21 11:59:52]}} [2026-08-21 11:59:52.929] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:59:18Z", "value" => "1.0"} [2026-08-21 11:59:53.005] [DEBUG] QUERY OK db=74.5ms idle=80.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "1.0", "app_version", 77905, ~N[2026-08-21 11:59:52], ~N[2026-08-21 11:59:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:53.006] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792283, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:52], updated_at: ~N[2026-08-21 11:59:52]}} [2026-08-21 11:59:53.006] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:59:18Z", "value" => "13"} [2026-08-21 11:59:53.064] [DEBUG] QUERY OK db=48.8ms queue=8.5ms idle=78.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "13", "android_version", 77905, ~N[2026-08-21 11:59:53], ~N[2026-08-21 11:59:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:53.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792284, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:53], updated_at: ~N[2026-08-21 11:59:53]}} [2026-08-21 11:59:53.069] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:59:18Z", "value" => "993"} [2026-08-21 11:59:53.138] [DEBUG] QUERY OK db=68.2ms idle=64.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "993", "ram_free_mb", 77905, ~N[2026-08-21 11:59:53], ~N[2026-08-21 11:59:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:53.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792285, itemkey: "ram_free_mb", value: "993", timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:53], updated_at: ~N[2026-08-21 11:59:53]}} [2026-08-21 11:59:53.139] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:59:18Z", "value" => "WIFI"} [2026-08-21 11:59:53.207] [DEBUG] QUERY OK db=67.9ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "WIFI", "network_type", 77905, ~N[2026-08-21 11:59:53], ~N[2026-08-21 11:59:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:53.207] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792286, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:53], updated_at: ~N[2026-08-21 11:59:53]}} [2026-08-21 11:59:53.207] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:59:18Z", "value" => "true"} [2026-08-21 11:59:53.281] [DEBUG] QUERY OK db=73.0ms idle=69.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "true", "kiosk_active", 77905, ~N[2026-08-21 11:59:53], ~N[2026-08-21 11:59:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:53.281] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792287, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:53], updated_at: ~N[2026-08-21 11:59:53]}} [2026-08-21 11:59:53.282] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:59:18Z", "value" => ""} [2026-08-21 11:59:53.428] [DEBUG] QUERY OK db=145.6ms idle=75.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:59:18Z", "sim_operator", 77905, ~N[2026-08-21 11:59:53], ~N[2026-08-21 11:59:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:53.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792288, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:53], updated_at: ~N[2026-08-21 11:59:53]}} [2026-08-21 11:59:53.429] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:59:18Z", "value" => "UNKNOWN"} [2026-08-21 11:59:53.484] [DEBUG] QUERY OK db=53.9ms queue=0.1ms idle=148.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "UNKNOWN", "sim_number", 77905, ~N[2026-08-21 11:59:53], ~N[2026-08-21 11:59:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:53.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792289, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:53], updated_at: ~N[2026-08-21 11:59:53]}} [2026-08-21 11:59:53.484] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:59:18Z", "value" => "UNKNOWN"} [2026-08-21 11:59:53.554] [DEBUG] QUERY OK db=69.4ms idle=56.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "UNKNOWN", "sim_iccid", 77905, ~N[2026-08-21 11:59:53], ~N[2026-08-21 11:59:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:53.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792290, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:53], updated_at: ~N[2026-08-21 11:59:53]}} [2026-08-21 11:59:53.555] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:59:18Z", "value" => "UNKNOWN"} [2026-08-21 11:59:53.629] [DEBUG] QUERY OK db=71.0ms idle=74.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "UNKNOWN", "sim_imsi", 77905, ~N[2026-08-21 11:59:53], ~N[2026-08-21 11:59:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:53.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792291, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:53], updated_at: ~N[2026-08-21 11:59:53]}} [2026-08-21 11:59:53.630] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:59:18Z", "value" => "UNKNOWN"} [2026-08-21 11:59:53.702] [DEBUG] QUERY OK db=71.3ms idle=76.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "UNKNOWN", "sim_iccid2", 77905, ~N[2026-08-21 11:59:53], ~N[2026-08-21 11:59:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:53.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792292, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:53], updated_at: ~N[2026-08-21 11:59:53]}} [2026-08-21 11:59:53.702] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:59:18Z", "value" => "UNKNOWN"} [2026-08-21 11:59:53.791] [DEBUG] QUERY OK db=88.7ms idle=73.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "UNKNOWN", "sim_imsi2", 77905, ~N[2026-08-21 11:59:53], ~N[2026-08-21 11:59:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:53.792] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792293, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:53], updated_at: ~N[2026-08-21 11:59:53]}} [2026-08-21 11:59:53.792] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:59:18Z", "value" => "1"} [2026-08-21 11:59:53.888] [DEBUG] QUERY OK db=95.5ms idle=90.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "1", "data_usage_mb", 77905, ~N[2026-08-21 11:59:53], ~N[2026-08-21 11:59:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:53.889] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792294, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:53], updated_at: ~N[2026-08-21 11:59:53]}} [2026-08-21 11:59:53.889] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:59:18Z", "value" => "0"} [2026-08-21 11:59:53.962] [DEBUG] QUERY OK db=71.4ms idle=99.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "0", "mobile_data_mb", 77905, ~N[2026-08-21 11:59:53], ~N[2026-08-21 11:59:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:53.962] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792295, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:53], updated_at: ~N[2026-08-21 11:59:53]}} [2026-08-21 11:59:53.963] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:59:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 11:59:54.029] [DEBUG] QUERY OK db=62.9ms idle=76.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:18Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77905, ~N[2026-08-21 11:59:53], ~N[2026-08-21 11:59:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:54.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792296, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:59:18Z", message: nil, status_log_id: 77905, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:53], updated_at: ~N[2026-08-21 11:59:53]}} [2026-08-21 11:59:54.030] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 11:59:54.030] [INFO ] Incoming JSON payload: {"oid":"5c67b98a-ef73-43af-a742-00ff87976c24","sn":"98251226730001","uploadTime":"2026-08-21T11:59:52Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:59:52Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:59:52Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:59:52Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:59:52Z"},{"itemkey":"ram_free_mb","value":"912","timestamp":"2026-08-21T11:59:52Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:59:52Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:59:52Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:59:52Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:59:52Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:59:52Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:59:52Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:59:52Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:59:52Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T11:59:52Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 11:59:54.031] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5c67b98a-ef73-43af-a742-00ff87976c24", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:59:52Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:59:52Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:59:52Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:59:52Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:59:52Z", "value" => "912"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:59:52Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:59:52Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:59:52Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:59:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:59:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:59:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:59:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:59:52Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:59:52Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:59:52Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T11:59:52Z", "vendor" => "morefun"} [2026-08-21 11:59:54.031] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:59:54.031] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 11:59:54.031] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 11:59:54.034] [DEBUG] QUERY OK source="parameter_templates" db=3.2ms idle=69.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-08-21 11:59:54.036] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.4ms idle=6.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 11:59:54.036] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 11:59:54.037] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:59:54.037] [INFO ] Terminal updated: 98251226730001 [2026-08-21 11:59:54.110] [DEBUG] QUERY OK source="tms_terminals" db=72.4ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:59:54], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:59:54.110] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 11:59:54.111] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.5ms 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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:59:54.181] [DEBUG] QUERY OK source="tms_terminals" db=69.0ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:59:54], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:59:54.249] [DEBUG] QUERY OK db=67.2ms queue=0.3ms idle=69.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "5c67b98a-ef73-43af-a742-00ff87976c24", "2026-08-21T11:59:52Z", ~N[2026-08-21 11:59:54], ~N[2026-08-21 11:59:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:59:54.249] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77906, oid: "5c67b98a-ef73-43af-a742-00ff87976c24", upload_time: "2026-08-21T11:59:52Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:54], updated_at: ~N[2026-08-21 11:59:54]} [2026-08-21 11:59:54.249] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:59:52Z", "value" => "morefun"} [2026-08-21 11:59:54.317] [DEBUG] QUERY OK db=66.1ms queue=0.1ms idle=69.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:52Z", "morefun", "vendor", 77906, ~N[2026-08-21 11:59:54], ~N[2026-08-21 11:59:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:54.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792297, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:54], updated_at: ~N[2026-08-21 11:59:54]}} [2026-08-21 11:59:54.317] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:59:52Z", "value" => "kiosk_launcher"} [2026-08-21 11:59:54.421] [DEBUG] QUERY OK db=103.5ms idle=68.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:52Z", "kiosk_launcher", "model", 77906, ~N[2026-08-21 11:59:54], ~N[2026-08-21 11:59:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:54.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792298, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:54], updated_at: ~N[2026-08-21 11:59:54]}} [2026-08-21 11:59:54.421] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:59:52Z", "value" => "1.0"} [2026-08-21 11:59:54.490] [DEBUG] QUERY OK db=68.6ms idle=105.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:52Z", "1.0", "app_version", 77906, ~N[2026-08-21 11:59:54], ~N[2026-08-21 11:59:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:54.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792299, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:54], updated_at: ~N[2026-08-21 11:59:54]}} [2026-08-21 11:59:54.491] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:59:52Z", "value" => "13"} [2026-08-21 11:59:54.548] [DEBUG] QUERY OK db=57.2ms idle=70.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:52Z", "13", "android_version", 77906, ~N[2026-08-21 11:59:54], ~N[2026-08-21 11:59:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:54.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792300, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:54], updated_at: ~N[2026-08-21 11:59:54]}} [2026-08-21 11:59:54.549] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:59:52Z", "value" => "912"} [2026-08-21 11:59:54.631] [DEBUG] QUERY OK db=81.8ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:52Z", "912", "ram_free_mb", 77906, ~N[2026-08-21 11:59:54], ~N[2026-08-21 11:59:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:54.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792301, itemkey: "ram_free_mb", value: "912", timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:54], updated_at: ~N[2026-08-21 11:59:54]}} [2026-08-21 11:59:54.631] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:59:52Z", "value" => "WIFI"} [2026-08-21 11:59:54.700] [DEBUG] QUERY OK db=68.0ms idle=83.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:52Z", "WIFI", "network_type", 77906, ~N[2026-08-21 11:59:54], ~N[2026-08-21 11:59:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:54.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792302, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:54], updated_at: ~N[2026-08-21 11:59:54]}} [2026-08-21 11:59:54.701] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:59:52Z", "value" => "true"} [2026-08-21 11:59:54.763] [DEBUG] QUERY OK db=62.1ms idle=69.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:52Z", "true", "kiosk_active", 77906, ~N[2026-08-21 11:59:54], ~N[2026-08-21 11:59:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:54.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792303, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:54], updated_at: ~N[2026-08-21 11:59:54]}} [2026-08-21 11:59:54.767] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:59:52Z", "value" => ""} [2026-08-21 11:59:54.834] [DEBUG] QUERY OK db=66.0ms idle=67.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:59:52Z", "sim_operator", 77906, ~N[2026-08-21 11:59:54], ~N[2026-08-21 11:59:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:54.834] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792304, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:54], updated_at: ~N[2026-08-21 11:59:54]}} [2026-08-21 11:59:54.834] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:59:52Z", "value" => "UNKNOWN"} [2026-08-21 11:59:54.882] [DEBUG] QUERY OK db=47.5ms idle=71.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:52Z", "UNKNOWN", "sim_number", 77906, ~N[2026-08-21 11:59:54], ~N[2026-08-21 11:59:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:54.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792305, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:54], updated_at: ~N[2026-08-21 11:59:54]}} [2026-08-21 11:59:54.882] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:59:52Z", "value" => "UNKNOWN"} [2026-08-21 11:59:54.930] [DEBUG] QUERY OK db=47.5ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:52Z", "UNKNOWN", "sim_iccid", 77906, ~N[2026-08-21 11:59:54], ~N[2026-08-21 11:59:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:54.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792306, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:54], updated_at: ~N[2026-08-21 11:59:54]}} [2026-08-21 11:59:54.931] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:59:52Z", "value" => "UNKNOWN"} [2026-08-21 11:59:54.961] [DEBUG] QUERY OK db=29.8ms queue=0.1ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:52Z", "UNKNOWN", "sim_imsi", 77906, ~N[2026-08-21 11:59:54], ~N[2026-08-21 11:59:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:54.961] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792307, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:54], updated_at: ~N[2026-08-21 11:59:54]}} [2026-08-21 11:59:54.962] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:59:52Z", "value" => "UNKNOWN"} [2026-08-21 11:59:55.011] [DEBUG] QUERY OK db=48.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-08-21T11:59:52Z", "UNKNOWN", "sim_iccid2", 77906, ~N[2026-08-21 11:59:54], ~N[2026-08-21 11:59:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:55.011] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792308, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:54], updated_at: ~N[2026-08-21 11:59:54]}} [2026-08-21 11:59:55.011] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:59:52Z", "value" => "UNKNOWN"} [2026-08-21 11:59:55.044] [DEBUG] QUERY OK db=32.3ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:52Z", "UNKNOWN", "sim_imsi2", 77906, ~N[2026-08-21 11:59:55], ~N[2026-08-21 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:55.044] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792309, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:55], updated_at: ~N[2026-08-21 11:59:55]}} [2026-08-21 11:59:55.044] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:59:52Z", "value" => "35"} [2026-08-21 11:59:55.099] [DEBUG] QUERY OK db=53.7ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:52Z", "35", "data_usage_mb", 77906, ~N[2026-08-21 11:59:55], ~N[2026-08-21 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:55.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792310, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:55], updated_at: ~N[2026-08-21 11:59:55]}} [2026-08-21 11:59:55.099] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:59:52Z", "value" => "0"} [2026-08-21 11:59:55.177] [DEBUG] QUERY OK db=77.7ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:52Z", "0", "mobile_data_mb", 77906, ~N[2026-08-21 11:59:55], ~N[2026-08-21 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:55.178] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792311, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:55], updated_at: ~N[2026-08-21 11:59:55]}} [2026-08-21 11:59:55.179] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 11:59:55.253] [DEBUG] QUERY OK db=70.9ms idle=71.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77906, ~N[2026-08-21 11:59:55], ~N[2026-08-21 11:59:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:55.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792312, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T11:59:52Z", message: nil, status_log_id: 77906, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:55], updated_at: ~N[2026-08-21 11:59:55]}} [2026-08-21 11:59:57.592] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 11:59:57.592] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"5493065-09-06T20:58:35Z","org.device":[{"itemkey":"status","value":"offline","timestamp":"5493065-09-06T20:58:35Z","message":"Connection reset - reconnecting"}]} [2026-08-21 11:59:57.592] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Connection reset - reconnecting", "timestamp" => "5493065-09-06T20:58:35Z", "value" => "offline"}], "sn" => "61250415798001", "uploadTime" => "5493065-09-06T20:58:35Z"} [2026-08-21 11:59:57.592] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 11:59:57.594] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=475.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 11:59:57.594] [INFO ] Terminal updated: 61250415798001 [2026-08-21 11:59:57.652] [DEBUG] QUERY OK source="tms_terminals" db=57.8ms idle=392.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 11:59:57], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 11:59:57.655] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=59.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 11:59:57.702] [DEBUG] QUERY OK source="tms_terminals" db=46.6ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 11:59:57], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 11:59:57.735] [DEBUG] QUERY OK db=32.2ms idle=47.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "5493065-09-06T20:58:35Z", ~N[2026-08-21 11:59:57], ~N[2026-08-21 11:59:57]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 11:59:57.735] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77907, oid: "org-id-placeholder", upload_time: "5493065-09-06T20:58:35Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:57], updated_at: ~N[2026-08-21 11:59:57]} [2026-08-21 11:59:57.735] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Connection reset - reconnecting", "timestamp" => "5493065-09-06T20:58:35Z", "value" => "offline"} [2026-08-21 11:59:57.771] [DEBUG] QUERY OK db=34.7ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Connection reset - reconnecting", "5493065-09-06T20:58:35Z", "offline", "status", 77907, ~N[2026-08-21 11:59:57], ~N[2026-08-21 11:59:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 11:59:57.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792313, itemkey: "status", value: "offline", timestamp: "5493065-09-06T20:58:35Z", message: "Connection reset - reconnecting", status_log_id: 77907, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 11:59:57], updated_at: ~N[2026-08-21 11:59:57]}} [2026-08-21 11:59:57.773] [INFO ] Setting terminal 61250415798001 status to 'offline' from status itemkey [2026-08-21 11:59:57.814] [DEBUG] QUERY OK source="tms_terminals" db=41.1ms idle=38.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["offline", ~N[2026-08-21 11:59:57], 1] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:161 [2026-08-21 11:59:57.816] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.3ms idle=44.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["offline", ~N[2026-08-21 11:59:57], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-08-21 12:00:01.809] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 12:00:01.809] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"-3362962-06-06T08:14:55Z","org.device":[{"itemkey":"status","value":"online","timestamp":"-3362962-06-06T08:14:55Z","message":"Device Connected"}]} [2026-08-21 12:00:01.814] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-3362962-06-06T08:14:55Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "-3362962-06-06T08:14:55Z"} [2026-08-21 12:00:01.814] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:00:01.820] [DEBUG] QUERY OK source="tms_terminals" db=6.1ms idle=1348.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:00:01.828] [INFO ] Terminal updated: 61250415798001 [2026-08-21 12:00:01.900] [DEBUG] QUERY OK source="tms_terminals" db=71.5ms idle=695.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:00:01], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:00:01.905] [DEBUG] QUERY OK source="tms_terminals" db=3.9ms idle=80.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:00:01.980] [DEBUG] QUERY OK source="tms_terminals" db=62.9ms idle=16.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:00:01], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:00:02.059] [DEBUG] QUERY OK db=77.7ms queue=0.1ms idle=76.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "-3362962-06-06T08:14:55Z", ~N[2026-08-21 12:00:01], ~N[2026-08-21 12:00:01]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:00:02.059] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77908, oid: "org-id-placeholder", upload_time: "-3362962-06-06T08:14:55Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:01], updated_at: ~N[2026-08-21 12:00:01]} [2026-08-21 12:00:02.059] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-3362962-06-06T08:14:55Z", "value" => "online"} [2026-08-21 12:00:02.094] [DEBUG] QUERY OK db=34.3ms idle=79.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "-3362962-06-06T08:14:55Z", "online", "status", 77908, ~N[2026-08-21 12:00:02], ~N[2026-08-21 12:00:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:02.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792314, itemkey: "status", value: "online", timestamp: "-3362962-06-06T08:14:55Z", message: "Device Connected", status_log_id: 77908, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:02], updated_at: ~N[2026-08-21 12:00:02]}} [2026-08-21 12:00:02.104] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-08-21 12:00:02.180] [DEBUG] QUERY OK source="tms_terminals" db=75.4ms idle=45.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:00:02], 1] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-08-21 12:00:02.196] [DEBUG] QUERY OK source="tms_terminals" db=7.8ms queue=3.0ms idle=44.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:00:02], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-08-21 12:00:22.449] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 12:00:22.450] [INFO ] Incoming JSON payload: {"oid":"c2ce2556-6726-49d1-b194-6500710a6181","sn":"98251226730002","uploadTime":"2026-08-21T11:59:49Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"ram_free_mb","value":"998","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T11:59:49Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 12:00:22.450] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c2ce2556-6726-49d1-b194-6500710a6181", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:59:49Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T11:59:49Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:59:49Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:59:49Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:59:49Z", "value" => "998"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:59:49Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:59:49Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:59:49Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:59:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:59:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:59:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:59:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:59:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:59:49Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:59:49Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:59:49Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T11:59:49Z", "vendor" => "morefun"} [2026-08-21 12:00:22.450] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:00:22.451] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 12:00:22.451] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 12:00:22.452] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=244.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-08-21 12:00:22.453] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=84.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-08-21 12:00:22.453] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:00:22.454] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:00:22.455] [INFO ] Terminal updated: 98251226730002 [2026-08-21 12:00:22.517] [DEBUG] QUERY OK source="tms_terminals" db=61.9ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:00:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:00:22.517] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 12:00:22.519] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=63.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:00:22.615] [DEBUG] QUERY OK source="tms_terminals" db=95.5ms queue=0.1ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:00:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:00:22.649] [DEBUG] QUERY OK db=33.6ms idle=96.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "c2ce2556-6726-49d1-b194-6500710a6181", "2026-08-21T11:59:49Z", ~N[2026-08-21 12:00:22], ~N[2026-08-21 12:00:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:00:22.649] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77909, oid: "c2ce2556-6726-49d1-b194-6500710a6181", upload_time: "2026-08-21T11:59:49Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:22], updated_at: ~N[2026-08-21 12:00:22]} [2026-08-21 12:00:22.649] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T11:59:49Z", "value" => "morefun"} [2026-08-21 12:00:22.696] [DEBUG] QUERY OK db=47.0ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "morefun", "vendor", 77909, ~N[2026-08-21 12:00:22], ~N[2026-08-21 12:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:22.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792315, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:22], updated_at: ~N[2026-08-21 12:00:22]}} [2026-08-21 12:00:22.697] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T11:59:49Z", "value" => "kiosk_launcher"} [2026-08-21 12:00:22.758] [DEBUG] QUERY OK db=60.6ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "kiosk_launcher", "model", 77909, ~N[2026-08-21 12:00:22], ~N[2026-08-21 12:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:22.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792316, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:22], updated_at: ~N[2026-08-21 12:00:22]}} [2026-08-21 12:00:22.758] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T11:59:49Z", "value" => "1.0"} [2026-08-21 12:00:22.791] [DEBUG] QUERY OK db=31.8ms idle=62.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "1.0", "app_version", 77909, ~N[2026-08-21 12:00:22], ~N[2026-08-21 12:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:22.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792317, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:22], updated_at: ~N[2026-08-21 12:00:22]}} [2026-08-21 12:00:22.791] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T11:59:49Z", "value" => "13"} [2026-08-21 12:00:22.837] [DEBUG] QUERY OK db=45.3ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "13", "android_version", 77909, ~N[2026-08-21 12:00:22], ~N[2026-08-21 12:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:22.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792318, itemkey: "android_version", value: "13", timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:22], updated_at: ~N[2026-08-21 12:00:22]}} [2026-08-21 12:00:22.837] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T11:59:49Z", "value" => "998"} [2026-08-21 12:00:22.892] [DEBUG] QUERY OK db=54.1ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "998", "ram_free_mb", 77909, ~N[2026-08-21 12:00:22], ~N[2026-08-21 12:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:22.892] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792319, itemkey: "ram_free_mb", value: "998", timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:22], updated_at: ~N[2026-08-21 12:00:22]}} [2026-08-21 12:00:22.892] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T11:59:49Z", "value" => "WIFI"} [2026-08-21 12:00:22.915] [DEBUG] QUERY OK db=23.0ms idle=55.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "WIFI", "network_type", 77909, ~N[2026-08-21 12:00:22], ~N[2026-08-21 12:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:22.916] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792320, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:22], updated_at: ~N[2026-08-21 12:00:22]}} [2026-08-21 12:00:22.916] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T11:59:49Z", "value" => "true"} [2026-08-21 12:00:22.968] [DEBUG] QUERY OK db=50.9ms idle=25.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "true", "kiosk_active", 77909, ~N[2026-08-21 12:00:22], ~N[2026-08-21 12:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:22.968] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792321, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:22], updated_at: ~N[2026-08-21 12:00:22]}} [2026-08-21 12:00:22.968] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T11:59:49Z", "value" => ""} [2026-08-21 12:00:23.004] [DEBUG] QUERY OK db=35.3ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T11:59:49Z", "sim_operator", 77909, ~N[2026-08-21 12:00:22], ~N[2026-08-21 12:00:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:23.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792322, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:22], updated_at: ~N[2026-08-21 12:00:22]}} [2026-08-21 12:00:23.004] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T11:59:49Z", "value" => "UNKNOWN"} [2026-08-21 12:00:23.042] [DEBUG] QUERY OK db=37.4ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "UNKNOWN", "sim_number", 77909, ~N[2026-08-21 12:00:23], ~N[2026-08-21 12:00:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:23.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792323, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:23], updated_at: ~N[2026-08-21 12:00:23]}} [2026-08-21 12:00:23.042] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T11:59:49Z", "value" => "UNKNOWN"} [2026-08-21 12:00:23.079] [DEBUG] QUERY OK db=36.0ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "UNKNOWN", "sim_iccid", 77909, ~N[2026-08-21 12:00:23], ~N[2026-08-21 12:00:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:23.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792324, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:23], updated_at: ~N[2026-08-21 12:00:23]}} [2026-08-21 12:00:23.080] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T11:59:49Z", "value" => "UNKNOWN"} [2026-08-21 12:00:23.132] [DEBUG] QUERY OK db=50.4ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "UNKNOWN", "sim_imsi", 77909, ~N[2026-08-21 12:00:23], ~N[2026-08-21 12:00:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:23.132] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792325, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:23], updated_at: ~N[2026-08-21 12:00:23]}} [2026-08-21 12:00:23.132] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T11:59:49Z", "value" => "UNKNOWN"} [2026-08-21 12:00:23.164] [DEBUG] QUERY OK db=31.1ms queue=0.7ms idle=52.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "UNKNOWN", "sim_iccid2", 77909, ~N[2026-08-21 12:00:23], ~N[2026-08-21 12:00:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:23.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792326, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:23], updated_at: ~N[2026-08-21 12:00:23]}} [2026-08-21 12:00:23.165] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T11:59:49Z", "value" => "UNKNOWN"} [2026-08-21 12:00:23.188] [DEBUG] QUERY OK db=23.1ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "UNKNOWN", "sim_imsi2", 77909, ~N[2026-08-21 12:00:23], ~N[2026-08-21 12:00:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:23.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792327, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:23], updated_at: ~N[2026-08-21 12:00:23]}} [2026-08-21 12:00:23.188] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T11:59:49Z", "value" => "1"} [2026-08-21 12:00:23.248] [DEBUG] QUERY OK db=59.6ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "1", "data_usage_mb", 77909, ~N[2026-08-21 12:00:23], ~N[2026-08-21 12:00:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:23.249] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792328, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:23], updated_at: ~N[2026-08-21 12:00:23]}} [2026-08-21 12:00:23.249] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T11:59:49Z", "value" => "0"} [2026-08-21 12:00:23.312] [DEBUG] QUERY OK db=62.7ms queue=0.1ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "0", "mobile_data_mb", 77909, ~N[2026-08-21 12:00:23], ~N[2026-08-21 12:00:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:23.312] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792329, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:23], updated_at: ~N[2026-08-21 12:00:23]}} [2026-08-21 12:00:23.313] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T11:59:49Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 12:00:23.366] [DEBUG] QUERY OK db=51.6ms idle=65.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T11:59:49Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77909, ~N[2026-08-21 12:00:23], ~N[2026-08-21 12:00:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:23.367] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792330, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T11:59:49Z", message: nil, status_log_id: 77909, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:23], updated_at: ~N[2026-08-21 12:00:23]}} [2026-08-21 12:00:23.414] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:00:23.415] [INFO ] Incoming JSON payload: {"oid":"bba4d818-7254-42a4-b83d-11f49111bc5f","sn":"98251226730001","uploadTime":"2026-08-21T12:00:22Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:00:22Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:00:22Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:00:22Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:00:22Z"},{"itemkey":"ram_free_mb","value":"913","timestamp":"2026-08-21T12:00:22Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:00:22Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:00:22Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:00:22Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:00:22Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:00:22Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:00:22Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:00:22Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:00:22Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:00:22Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:00: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:00:23.423] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bba4d818-7254-42a4-b83d-11f49111bc5f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:00:22Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:00:22Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:00:22Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:00:22Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:00:22Z", "value" => "913"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:00:22Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:00:22Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:00:22Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:00:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:00:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:00:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:00:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:00:22Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:00:22Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:00:22Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:00: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:00:22Z", "vendor" => "morefun"} [2026-08-21 12:00:23.424] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:00:23.424] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:00:23.424] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:00:23.428] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=2.3ms idle=59.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-08-21 12:00:23.431] [DEBUG] QUERY OK source="parameter_templates" db=2.6ms idle=56.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-08-21 12:00:23.431] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:00:23.432] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.7ms idle=3.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:00:23.433] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:00:23.476] [DEBUG] QUERY OK source="tms_terminals" db=43.2ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:00:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:00:23.476] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:00:23.482] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms queue=0.5ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:00:23.550] [DEBUG] QUERY OK source="tms_terminals" db=67.6ms idle=6.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:00:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:00:23.670] [DEBUG] QUERY OK db=119.6ms idle=68.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "bba4d818-7254-42a4-b83d-11f49111bc5f", "2026-08-21T12:00:22Z", ~N[2026-08-21 12:00:23], ~N[2026-08-21 12:00:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:00:23.671] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77910, oid: "bba4d818-7254-42a4-b83d-11f49111bc5f", upload_time: "2026-08-21T12:00:22Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:23], updated_at: ~N[2026-08-21 12:00:23]} [2026-08-21 12:00:23.671] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:00:22Z", "value" => "morefun"} [2026-08-21 12:00:23.752] [DEBUG] QUERY OK db=78.6ms queue=0.1ms idle=122.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:22Z", "morefun", "vendor", 77910, ~N[2026-08-21 12:00:23], ~N[2026-08-21 12:00:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:23.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792331, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:23], updated_at: ~N[2026-08-21 12:00:23]}} [2026-08-21 12:00:23.752] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:00:22Z", "value" => "kiosk_launcher"} [2026-08-21 12:00:23.831] [DEBUG] QUERY OK db=74.3ms idle=85.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:22Z", "kiosk_launcher", "model", 77910, ~N[2026-08-21 12:00:23], ~N[2026-08-21 12:00:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:23.831] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792332, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:23], updated_at: ~N[2026-08-21 12:00:23]}} [2026-08-21 12:00:23.831] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:00:22Z", "value" => "1.0"} [2026-08-21 12:00:23.893] [DEBUG] QUERY OK db=62.1ms idle=79.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:22Z", "1.0", "app_version", 77910, ~N[2026-08-21 12:00:23], ~N[2026-08-21 12:00:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:23.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792333, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:23], updated_at: ~N[2026-08-21 12:00:23]}} [2026-08-21 12:00:23.894] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:00:22Z", "value" => "13"} [2026-08-21 12:00:24.083] [DEBUG] QUERY OK db=188.1ms idle=64.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:22Z", "13", "android_version", 77910, ~N[2026-08-21 12:00:23], ~N[2026-08-21 12:00:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:24.083] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792334, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:23], updated_at: ~N[2026-08-21 12:00:23]}} [2026-08-21 12:00:24.083] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:00:22Z", "value" => "913"} [2026-08-21 12:00:24.149] [DEBUG] QUERY OK db=65.1ms idle=189.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:22Z", "913", "ram_free_mb", 77910, ~N[2026-08-21 12:00:24], ~N[2026-08-21 12:00:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:24.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792335, itemkey: "ram_free_mb", value: "913", timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:24], updated_at: ~N[2026-08-21 12:00:24]}} [2026-08-21 12:00:24.149] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:00:22Z", "value" => "WIFI"} [2026-08-21 12:00:24.183] [DEBUG] QUERY OK db=33.4ms queue=0.1ms idle=66.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:22Z", "WIFI", "network_type", 77910, ~N[2026-08-21 12:00:24], ~N[2026-08-21 12:00:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:24.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792336, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:24], updated_at: ~N[2026-08-21 12:00:24]}} [2026-08-21 12:00:24.183] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:00:22Z", "value" => "true"} [2026-08-21 12:00:24.226] [DEBUG] QUERY OK db=42.4ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:22Z", "true", "kiosk_active", 77910, ~N[2026-08-21 12:00:24], ~N[2026-08-21 12:00:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:24.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792337, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:24], updated_at: ~N[2026-08-21 12:00:24]}} [2026-08-21 12:00:24.227] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:00:22Z", "value" => ""} [2026-08-21 12:00:24.287] [DEBUG] QUERY OK db=58.8ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:00:22Z", "sim_operator", 77910, ~N[2026-08-21 12:00:24], ~N[2026-08-21 12:00:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:24.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792338, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:24], updated_at: ~N[2026-08-21 12:00:24]}} [2026-08-21 12:00:24.287] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:00:22Z", "value" => "UNKNOWN"} [2026-08-21 12:00:24.327] [DEBUG] QUERY OK db=39.1ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:22Z", "UNKNOWN", "sim_number", 77910, ~N[2026-08-21 12:00:24], ~N[2026-08-21 12:00:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:24.327] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792339, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:24], updated_at: ~N[2026-08-21 12:00:24]}} [2026-08-21 12:00:24.327] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:00:22Z", "value" => "UNKNOWN"} [2026-08-21 12:00:24.390] [DEBUG] QUERY OK db=62.0ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:22Z", "UNKNOWN", "sim_iccid", 77910, ~N[2026-08-21 12:00:24], ~N[2026-08-21 12:00:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:24.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792340, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:24], updated_at: ~N[2026-08-21 12:00:24]}} [2026-08-21 12:00:24.390] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:00:22Z", "value" => "UNKNOWN"} [2026-08-21 12:00:24.453] [DEBUG] QUERY OK db=62.2ms idle=14.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:22Z", "UNKNOWN", "sim_imsi", 77910, ~N[2026-08-21 12:00:24], ~N[2026-08-21 12:00:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:24.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792341, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:24], updated_at: ~N[2026-08-21 12:00:24]}} [2026-08-21 12:00:24.453] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:00:22Z", "value" => "UNKNOWN"} [2026-08-21 12:00:24.510] [DEBUG] QUERY OK db=55.6ms idle=63.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:22Z", "UNKNOWN", "sim_iccid2", 77910, ~N[2026-08-21 12:00:24], ~N[2026-08-21 12:00:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:24.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792342, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:24], updated_at: ~N[2026-08-21 12:00:24]}} [2026-08-21 12:00:24.510] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:00:22Z", "value" => "UNKNOWN"} [2026-08-21 12:00:24.560] [DEBUG] QUERY OK db=50.1ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:22Z", "UNKNOWN", "sim_imsi2", 77910, ~N[2026-08-21 12:00:24], ~N[2026-08-21 12:00:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:24.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792343, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:24], updated_at: ~N[2026-08-21 12:00:24]}} [2026-08-21 12:00:24.561] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:00:22Z", "value" => "35"} [2026-08-21 12:00:24.636] [DEBUG] QUERY OK db=75.1ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:22Z", "35", "data_usage_mb", 77910, ~N[2026-08-21 12:00:24], ~N[2026-08-21 12:00:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:24.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792344, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:24], updated_at: ~N[2026-08-21 12:00:24]}} [2026-08-21 12:00:24.637] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:00:22Z", "value" => "0"} [2026-08-21 12:00:24.673] [DEBUG] QUERY OK db=36.3ms idle=76.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:22Z", "0", "mobile_data_mb", 77910, ~N[2026-08-21 12:00:24], ~N[2026-08-21 12:00:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:24.674] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792345, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:24], updated_at: ~N[2026-08-21 12:00:24]}} [2026-08-21 12:00:24.677] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:00: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:00:24.726] [DEBUG] QUERY OK db=47.3ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77910, ~N[2026-08-21 12:00:24], ~N[2026-08-21 12:00:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:24.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792346, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:00:22Z", message: nil, status_log_id: 77910, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:24], updated_at: ~N[2026-08-21 12:00:24]}} [2026-08-21 12:00:52.550] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 12:00:52.550] [INFO ] Incoming JSON payload: {"oid":"21e2c632-543b-4a60-acfd-c22b996996f8","sn":"98251226730002","uploadTime":"2026-08-21T12:00:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"ram_free_mb","value":"997","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:00:19Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 12:00:52.552] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "21e2c632-543b-4a60-acfd-c22b996996f8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:00:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:00:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:00:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:00:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:00:19Z", "value" => "997"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:00:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:00:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:00:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:00:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:00:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:00:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:00:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:00:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:00:19Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:00:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:00:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T12:00:19Z", "vendor" => "morefun"} [2026-08-21 12:00:52.552] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:00:52.552] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 12:00:52.552] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 12:00:52.557] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=349.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-08-21 12:00:52.558] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=83.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-08-21 12:00:52.559] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:00:52.562] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:00:52.563] [INFO ] Terminal updated: 98251226730002 [2026-08-21 12:00:52.610] [DEBUG] QUERY OK source="tms_terminals" db=46.2ms idle=4.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:00:52], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:00:52.610] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 12:00:52.612] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=49.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:00:52.668] [DEBUG] QUERY OK source="tms_terminals" db=55.9ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:00:52], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:00:52.719] [DEBUG] QUERY OK db=50.7ms idle=56.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "21e2c632-543b-4a60-acfd-c22b996996f8", "2026-08-21T12:00:19Z", ~N[2026-08-21 12:00:52], ~N[2026-08-21 12:00:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:00:52.721] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77911, oid: "21e2c632-543b-4a60-acfd-c22b996996f8", upload_time: "2026-08-21T12:00:19Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:52], updated_at: ~N[2026-08-21 12:00:52]} [2026-08-21 12:00:52.721] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:00:19Z", "value" => "morefun"} [2026-08-21 12:00:52.764] [DEBUG] QUERY OK db=42.7ms queue=0.4ms idle=52.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "morefun", "vendor", 77911, ~N[2026-08-21 12:00:52], ~N[2026-08-21 12:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:52.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792347, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:52], updated_at: ~N[2026-08-21 12:00:52]}} [2026-08-21 12:00:52.764] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:00:19Z", "value" => "kiosk_launcher"} [2026-08-21 12:00:52.814] [DEBUG] QUERY OK db=49.0ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "kiosk_launcher", "model", 77911, ~N[2026-08-21 12:00:52], ~N[2026-08-21 12:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:52.814] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792348, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:52], updated_at: ~N[2026-08-21 12:00:52]}} [2026-08-21 12:00:52.814] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:00:19Z", "value" => "1.0"} [2026-08-21 12:00:52.852] [DEBUG] QUERY OK db=36.6ms queue=0.1ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "1.0", "app_version", 77911, ~N[2026-08-21 12:00:52], ~N[2026-08-21 12:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:52.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792349, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:52], updated_at: ~N[2026-08-21 12:00:52]}} [2026-08-21 12:00:52.852] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:00:19Z", "value" => "13"} [2026-08-21 12:00:52.905] [DEBUG] QUERY OK db=51.9ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "13", "android_version", 77911, ~N[2026-08-21 12:00:52], ~N[2026-08-21 12:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:52.905] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792350, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:52], updated_at: ~N[2026-08-21 12:00:52]}} [2026-08-21 12:00:52.905] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:00:19Z", "value" => "997"} [2026-08-21 12:00:52.931] [DEBUG] QUERY OK db=24.7ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "997", "ram_free_mb", 77911, ~N[2026-08-21 12:00:52], ~N[2026-08-21 12:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:52.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792351, itemkey: "ram_free_mb", value: "997", timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:52], updated_at: ~N[2026-08-21 12:00:52]}} [2026-08-21 12:00:52.932] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:00:19Z", "value" => "WIFI"} [2026-08-21 12:00:52.975] [DEBUG] QUERY OK db=42.4ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "WIFI", "network_type", 77911, ~N[2026-08-21 12:00:52], ~N[2026-08-21 12:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:52.976] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792352, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:52], updated_at: ~N[2026-08-21 12:00:52]}} [2026-08-21 12:00:52.976] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:00:19Z", "value" => "true"} [2026-08-21 12:00:53.033] [DEBUG] QUERY OK db=56.6ms queue=0.1ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "true", "kiosk_active", 77911, ~N[2026-08-21 12:00:52], ~N[2026-08-21 12:00:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:53.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792353, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:52], updated_at: ~N[2026-08-21 12:00:52]}} [2026-08-21 12:00:53.033] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:00:19Z", "value" => ""} [2026-08-21 12:00:53.076] [DEBUG] QUERY OK db=39.2ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:00:19Z", "sim_operator", 77911, ~N[2026-08-21 12:00:53], ~N[2026-08-21 12:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:53.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792354, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:53], updated_at: ~N[2026-08-21 12:00:53]}} [2026-08-21 12:00:53.076] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:00:19Z", "value" => "UNKNOWN"} [2026-08-21 12:00:53.130] [DEBUG] QUERY OK db=53.0ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "UNKNOWN", "sim_number", 77911, ~N[2026-08-21 12:00:53], ~N[2026-08-21 12:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:53.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792355, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:53], updated_at: ~N[2026-08-21 12:00:53]}} [2026-08-21 12:00:53.130] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:00:19Z", "value" => "UNKNOWN"} [2026-08-21 12:00:53.189] [DEBUG] QUERY OK db=56.2ms queue=1.6ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "UNKNOWN", "sim_iccid", 77911, ~N[2026-08-21 12:00:53], ~N[2026-08-21 12:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:53.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792356, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:53], updated_at: ~N[2026-08-21 12:00:53]}} [2026-08-21 12:00:53.190] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:00:19Z", "value" => "UNKNOWN"} [2026-08-21 12:00:53.238] [DEBUG] QUERY OK db=47.7ms queue=0.4ms idle=60.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "UNKNOWN", "sim_imsi", 77911, ~N[2026-08-21 12:00:53], ~N[2026-08-21 12:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:53.239] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792357, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:53], updated_at: ~N[2026-08-21 12:00:53]}} [2026-08-21 12:00:53.239] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:00:19Z", "value" => "UNKNOWN"} [2026-08-21 12:00:53.272] [DEBUG] QUERY OK db=32.5ms idle=51.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "UNKNOWN", "sim_iccid2", 77911, ~N[2026-08-21 12:00:53], ~N[2026-08-21 12:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:53.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792358, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:53], updated_at: ~N[2026-08-21 12:00:53]}} [2026-08-21 12:00:53.273] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:00:19Z", "value" => "UNKNOWN"} [2026-08-21 12:00:53.331] [DEBUG] QUERY OK db=58.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "UNKNOWN", "sim_imsi2", 77911, ~N[2026-08-21 12:00:53], ~N[2026-08-21 12:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:53.332] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792359, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:53], updated_at: ~N[2026-08-21 12:00:53]}} [2026-08-21 12:00:53.332] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:00:19Z", "value" => "1"} [2026-08-21 12:00:53.368] [DEBUG] QUERY OK db=35.9ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "1", "data_usage_mb", 77911, ~N[2026-08-21 12:00:53], ~N[2026-08-21 12:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:53.369] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792360, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:53], updated_at: ~N[2026-08-21 12:00:53]}} [2026-08-21 12:00:53.369] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:00:19Z", "value" => "0"} [2026-08-21 12:00:53.427] [DEBUG] QUERY OK db=56.6ms queue=1.0ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "0", "mobile_data_mb", 77911, ~N[2026-08-21 12:00:53], ~N[2026-08-21 12:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:53.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792361, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:53], updated_at: ~N[2026-08-21 12:00:53]}} [2026-08-21 12:00:53.428] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:00:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 12:00:53.469] [DEBUG] QUERY OK db=40.2ms queue=0.1ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:19Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77911, ~N[2026-08-21 12:00:53], ~N[2026-08-21 12:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:53.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792362, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T12:00:19Z", message: nil, status_log_id: 77911, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:53], updated_at: ~N[2026-08-21 12:00:53]}} [2026-08-21 12:00:53.557] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:00:53.557] [INFO ] Incoming JSON payload: {"oid":"fe2a6865-faa3-432c-a57e-bfdcb9ee61e2","sn":"98251226730001","uploadTime":"2026-08-21T12:00:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:00:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:00:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:00:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:00:53Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-08-21T12:00:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:00:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:00:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:00:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:00:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:00:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:00:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:00:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:00:53Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:00:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:00:53.567] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "fe2a6865-faa3-432c-a57e-bfdcb9ee61e2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:00:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:00:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:00:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:00:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:00:53Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:00:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:00:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:00:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:00:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:00:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:00:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:00:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:00:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:00:53Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:00:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:00:53Z", "vendor" => "morefun"} [2026-08-21 12:00:53.567] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:00:53.568] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:00:53.568] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:00:53.575] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=5.9ms idle=99.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-08-21 12:00:53.579] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=95.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-08-21 12:00:53.579] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:00:53.581] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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-08-21 12:00:53.581] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:00:53.627] [DEBUG] QUERY OK source="tms_terminals" db=45.5ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:00:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:00:53.628] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:00:53.632] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms idle=47.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:00:53.711] [DEBUG] QUERY OK source="tms_terminals" db=77.9ms idle=5.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:00:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:00:53.773] [DEBUG] QUERY OK db=60.2ms idle=80.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "fe2a6865-faa3-432c-a57e-bfdcb9ee61e2", "2026-08-21T12:00:53Z", ~N[2026-08-21 12:00:53], ~N[2026-08-21 12:00:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:00:53.773] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77912, oid: "fe2a6865-faa3-432c-a57e-bfdcb9ee61e2", upload_time: "2026-08-21T12:00:53Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:53], updated_at: ~N[2026-08-21 12:00:53]} [2026-08-21 12:00:53.774] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:00:53Z", "value" => "morefun"} [2026-08-21 12:00:53.815] [DEBUG] QUERY OK db=40.3ms idle=63.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:53Z", "morefun", "vendor", 77912, ~N[2026-08-21 12:00:53], ~N[2026-08-21 12:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:53.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792363, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:53], updated_at: ~N[2026-08-21 12:00:53]}} [2026-08-21 12:00:53.816] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:00:53Z", "value" => "kiosk_launcher"} [2026-08-21 12:00:54.000] [DEBUG] QUERY OK db=183.2ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:53Z", "kiosk_launcher", "model", 77912, ~N[2026-08-21 12:00:53], ~N[2026-08-21 12:00:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792364, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:53], updated_at: ~N[2026-08-21 12:00:53]}} [2026-08-21 12:00:54.001] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:00:53Z", "value" => "1.0"} [2026-08-21 12:00:54.053] [DEBUG] QUERY OK db=51.9ms idle=186.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:53Z", "1.0", "app_version", 77912, ~N[2026-08-21 12:00:54], ~N[2026-08-21 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.053] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792365, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:54], updated_at: ~N[2026-08-21 12:00:54]}} [2026-08-21 12:00:54.053] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:00:53Z", "value" => "13"} [2026-08-21 12:00:54.077] [DEBUG] QUERY OK db=23.0ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:53Z", "13", "android_version", 77912, ~N[2026-08-21 12:00:54], ~N[2026-08-21 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.077] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792366, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:54], updated_at: ~N[2026-08-21 12:00:54]}} [2026-08-21 12:00:54.077] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:00:53Z", "value" => "917"} [2026-08-21 12:00:54.132] [DEBUG] QUERY OK db=54.2ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:53Z", "917", "ram_free_mb", 77912, ~N[2026-08-21 12:00:54], ~N[2026-08-21 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.132] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792367, itemkey: "ram_free_mb", value: "917", timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:54], updated_at: ~N[2026-08-21 12:00:54]}} [2026-08-21 12:00:54.132] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:00:53Z", "value" => "WIFI"} [2026-08-21 12:00:54.166] [DEBUG] QUERY OK db=33.7ms idle=56.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:53Z", "WIFI", "network_type", 77912, ~N[2026-08-21 12:00:54], ~N[2026-08-21 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.167] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792368, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:54], updated_at: ~N[2026-08-21 12:00:54]}} [2026-08-21 12:00:54.167] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:00:53Z", "value" => "true"} [2026-08-21 12:00:54.207] [DEBUG] QUERY OK db=38.8ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:53Z", "true", "kiosk_active", 77912, ~N[2026-08-21 12:00:54], ~N[2026-08-21 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.207] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792369, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:54], updated_at: ~N[2026-08-21 12:00:54]}} [2026-08-21 12:00:54.208] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:00:53Z", "value" => ""} [2026-08-21 12:00:54.258] [DEBUG] QUERY OK db=49.9ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:00:53Z", "sim_operator", 77912, ~N[2026-08-21 12:00:54], ~N[2026-08-21 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.258] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792370, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:54], updated_at: ~N[2026-08-21 12:00:54]}} [2026-08-21 12:00:54.258] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:00:53Z", "value" => "UNKNOWN"} [2026-08-21 12:00:54.298] [DEBUG] QUERY OK db=38.8ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:53Z", "UNKNOWN", "sim_number", 77912, ~N[2026-08-21 12:00:54], ~N[2026-08-21 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.298] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792371, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:54], updated_at: ~N[2026-08-21 12:00:54]}} [2026-08-21 12:00:54.298] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:00:53Z", "value" => "UNKNOWN"} [2026-08-21 12:00:54.335] [DEBUG] QUERY OK db=36.7ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:53Z", "UNKNOWN", "sim_iccid", 77912, ~N[2026-08-21 12:00:54], ~N[2026-08-21 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.336] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792372, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:54], updated_at: ~N[2026-08-21 12:00:54]}} [2026-08-21 12:00:54.336] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:00:53Z", "value" => "UNKNOWN"} [2026-08-21 12:00:54.394] [DEBUG] QUERY OK db=54.8ms queue=0.2ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:53Z", "UNKNOWN", "sim_imsi", 77912, ~N[2026-08-21 12:00:54], ~N[2026-08-21 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.394] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792373, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:54], updated_at: ~N[2026-08-21 12:00:54]}} [2026-08-21 12:00:54.395] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:00:53Z", "value" => "UNKNOWN"} [2026-08-21 12:00:54.447] [DEBUG] QUERY OK db=51.7ms idle=59.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:53Z", "UNKNOWN", "sim_iccid2", 77912, ~N[2026-08-21 12:00:54], ~N[2026-08-21 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792374, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:54], updated_at: ~N[2026-08-21 12:00:54]}} [2026-08-21 12:00:54.448] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:00:53Z", "value" => "UNKNOWN"} [2026-08-21 12:00:54.500] [DEBUG] QUERY OK db=51.8ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:53Z", "UNKNOWN", "sim_imsi2", 77912, ~N[2026-08-21 12:00:54], ~N[2026-08-21 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792375, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:54], updated_at: ~N[2026-08-21 12:00:54]}} [2026-08-21 12:00:54.500] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:00:53Z", "value" => "35"} [2026-08-21 12:00:54.563] [DEBUG] QUERY OK db=61.0ms queue=0.2ms idle=18.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:53Z", "35", "data_usage_mb", 77912, ~N[2026-08-21 12:00:54], ~N[2026-08-21 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792376, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:54], updated_at: ~N[2026-08-21 12:00:54]}} [2026-08-21 12:00:54.564] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:00:53Z", "value" => "0"} [2026-08-21 12:00:54.641] [DEBUG] QUERY OK db=76.8ms idle=63.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:53Z", "0", "mobile_data_mb", 77912, ~N[2026-08-21 12:00:54], ~N[2026-08-21 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792377, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:54], updated_at: ~N[2026-08-21 12:00:54]}} [2026-08-21 12:00:54.642] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:00:54.719] [DEBUG] QUERY OK db=76.9ms idle=78.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77912, ~N[2026-08-21 12:00:54], ~N[2026-08-21 12:00:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:00:54.720] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792378, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:00:53Z", message: nil, status_log_id: 77912, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:00:54], updated_at: ~N[2026-08-21 12:00:54]}} [2026-08-21 12:01:02.957] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 12:01:02.957] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T03:10:28Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T03:10:28Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T03:10:28Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T03:10:28Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T03:10:28Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T03:10:28Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T03:10:28Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T03:10:28Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T03:10:28Z","vendor":"MoreFun"} [2026-08-21 12:01:02.958] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:10:28Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:10:28Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:10:28Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:10:28Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:10:28Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:10:28Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:10:28Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:10:28Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T03:10:28Z", "vendor" => "MoreFun"} [2026-08-21 12:01:02.958] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:01:02.959] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 12:01:02.959] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 12:01:02.962] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms idle=442.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-08-21 12:01:02.965] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms queue=0.3ms idle=263.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 12:01:02.967] [DEBUG] QUERY OK source="parameter_template_values" db=1.0ms queue=0.1ms idle=4.0ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:01:02.976] [DEBUG] QUERY OK source="parameter_definitions" db=3.9ms queue=4.3ms 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-08-21 12:01:02.984] [DEBUG] QUERY OK source="pos_terminal" db=3.2ms queue=2.5ms idle=10.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:01:03.019] [DEBUG] QUERY OK source="pos_merchant" db=34.7ms idle=8.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:01:03.024] [DEBUG] QUERY OK db=3.0ms queue=2.1ms idle=810.1ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["123451234512345"] [2026-08-21 12:01:03.024] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:01:03.027] [DEBUG] QUERY OK source="pos_terminal_data" db=2.4ms idle=40.9ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:01:03.027] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 12:01:03.035] [DEBUG] QUERY OK source="address" db=7.7ms idle=8.8ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:01:03.037] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 12:01:03.048] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 12:01:03.077] [DEBUG] QUERY OK db=25.0ms idle=24.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b2bac695fed04610b42578172b174c29a4ad0394507239573969ef20ac1e384c", 4131, 932, ~U[2026-08-21 12:01:03Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:01:03], ~N[2026-08-21 12:01:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:01:03.079] [INFO ] AutoPushService: Created push log 49048 for MF919 params.zip [2026-08-21 12:01:03.079] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 4131, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:01:03.079] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:01:03.079] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 12:01:03.090] [DEBUG] QUERY OK source="config_file_versions" db=10.1ms idle=44.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:01:03.100] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 12:01:03.149] [DEBUG] QUERY OK db=41.3ms queue=2.3ms idle=28.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d40a1a904e097fa2bfd3a15260c71ac02874ea231b720091ba6d225bd6fc822b", 7106, 17947, ~U[2026-08-21 12:01:03Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:01:03], ~N[2026-08-21 12:01:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:01:03.152] [INFO ] AutoPushService: Created push log 49049 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:01:03.152] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 7106, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:01:03.153] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:01:03.153] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 12:01:03.157] [DEBUG] QUERY OK source="config_file_versions" db=3.2ms 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 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 12:01:03.157] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 12:01:03.159] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=8.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:01:03.159] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 12:01:03.180] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:01:03.180] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:01:03.181] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:01:03.192] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms queue=9.7ms idle=23.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-08-21 12:01:03.194] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:01:03.194] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 12:01:03.198] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=2.5ms idle=35.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:01:03.198] [INFO ] Terminal updated: 98250623730001 [2026-08-21 12:01:03.243] [DEBUG] QUERY OK source="tms_terminals" db=44.9ms idle=6.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:01:03], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:01:03.245] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=45.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-08-21 12:01:03.250] [DEBUG] QUERY OK source="config_file_versions" db=2.4ms queue=2.2ms idle=2.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:01:03.254] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms decode=1.2ms idle=6.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:01:03.254] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:01:03.345] [DEBUG] QUERY OK source="parameter_push_logs" db=90.5ms queue=0.1ms idle=4.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 [19, "application", ~N[2026-08-21 11:31:03]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:01:03.345] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:01:03.345] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 12:01:03.350] [DEBUG] QUERY OK source="tms_terminals" db=4.6ms idle=92.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:01:03.353] [DEBUG] QUERY OK source="config_file_versions" db=2.1ms idle=5.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-08-21 12:01:03.357] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:01:03.363] [DEBUG] QUERY OK source="tms_terminals" db=5.6ms idle=6.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:01:03.396] [DEBUG] QUERY OK source="tms_terminals" db=29.1ms queue=0.8ms idle=13.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:01:03], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:01:03.438] [DEBUG] QUERY OK db=40.3ms idle=34.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T03:10:28Z", ~N[2026-08-21 12:01:03], ~N[2026-08-21 12:01:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:01:03.438] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77913, oid: "organization_id", upload_time: "2026-08-21T03:10:28Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:03], updated_at: ~N[2026-08-21 12:01:03]} [2026-08-21 12:01:03.439] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:10:28Z", "value" => "online"} [2026-08-21 12:01:03.506] [DEBUG] QUERY OK db=67.0ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T03:10:28Z", "online", "status", 77913, ~N[2026-08-21 12:01:03], ~N[2026-08-21 12:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:03.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792379, itemkey: "status", value: "online", timestamp: "2026-08-21T03:10:28Z", message: "Terminal status update", status_log_id: 77913, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:03], updated_at: ~N[2026-08-21 12:01:03]}} [2026-08-21 12:01:03.506] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 12:01:03.506] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:10:28Z", "value" => "51"} [2026-08-21 12:01:03.617] [DEBUG] QUERY OK db=110.3ms idle=68.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T03:10:28Z", "51", "battery", 77913, ~N[2026-08-21 12:01:03], ~N[2026-08-21 12:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:03.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792380, itemkey: "battery", value: "51", timestamp: "2026-08-21T03:10:28Z", message: "Battery level", status_log_id: 77913, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:03], updated_at: ~N[2026-08-21 12:01:03]}} [2026-08-21 12:01:03.617] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:10:28Z", "value" => "online"} [2026-08-21 12:01:03.711] [DEBUG] QUERY OK db=91.8ms queue=1.5ms idle=84.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T03:10:28Z", "online", "network", 77913, ~N[2026-08-21 12:01:03], ~N[2026-08-21 12:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:03.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792381, itemkey: "network", value: "online", timestamp: "2026-08-21T03:10:28Z", message: "Network connectivity", status_log_id: 77913, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:03], updated_at: ~N[2026-08-21 12:01:03]}} [2026-08-21 12:01:03.711] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 12:01:03.712] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:10:28Z", "value" => "0"} [2026-08-21 12:01:03.794] [DEBUG] QUERY OK db=81.7ms idle=95.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T03:10:28Z", "0", "cpu", 77913, ~N[2026-08-21 12:01:03], ~N[2026-08-21 12:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:03.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792382, itemkey: "cpu", value: "0", timestamp: "2026-08-21T03:10:28Z", message: "CPU usage percentage", status_log_id: 77913, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:03], updated_at: ~N[2026-08-21 12:01:03]}} [2026-08-21 12:01:03.794] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:10:28Z", "value" => "1.0.0"} [2026-08-21 12:01:03.825] [DEBUG] QUERY OK db=30.8ms idle=83.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T03:10:28Z", "1.0.0", "parameter_config", 77913, ~N[2026-08-21 12:01:03], ~N[2026-08-21 12:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:03.827] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792383, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T03:10:28Z", message: "Current parameters version", status_log_id: 77913, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:03], updated_at: ~N[2026-08-21 12:01:03]}} [2026-08-21 12:01:03.827] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:10:28Z", "value" => "1.0.1"} [2026-08-21 12:01:03.868] [DEBUG] QUERY OK db=40.8ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T03:10:28Z", "1.0.1", "emv_config", 77913, ~N[2026-08-21 12:01:03], ~N[2026-08-21 12:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:03.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792384, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T03:10:28Z", message: "Current EMV config version", status_log_id: 77913, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:03], updated_at: ~N[2026-08-21 12:01:03]}} [2026-08-21 12:01:03.869] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:10:28Z", "value" => ""} [2026-08-21 12:01:03.940] [DEBUG] QUERY OK db=27.7ms queue=43.7ms 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-08-21T03:10:28Z", "keys_config", 77913, ~N[2026-08-21 12:01:03], ~N[2026-08-21 12:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:03.941] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792385, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T03:10:28Z", message: "Current keys config version", status_log_id: 77913, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:03], updated_at: ~N[2026-08-21 12:01:03]}} [2026-08-21 12:01:03.941] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:10:28Z", "value" => "3.8.7.3"} [2026-08-21 12:01:03.976] [DEBUG] QUERY OK db=33.6ms idle=74.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T03:10:28Z", "3.8.7.3", "application", 77913, ~N[2026-08-21 12:01:03], ~N[2026-08-21 12:01:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:03.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792386, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T03:10:28Z", message: "Current application version", status_log_id: 77913, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:03], updated_at: ~N[2026-08-21 12:01:03]}} [2026-08-21 12:01:03.983] [WARN ] Unexpected async result [2026-08-21 12:01:03.992] [WARN ] Unexpected async result [2026-08-21 12:01:23.031] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 12:01:23.031] [INFO ] Incoming JSON payload: {"oid":"cadf607e-2ce2-4fd9-b865-751f0a7b8d92","sn":"98251226730002","uploadTime":"2026-08-21T12:00:49Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"ram_free_mb","value":"997","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:00:49Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 12:01:23.032] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "cadf607e-2ce2-4fd9-b865-751f0a7b8d92", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:00:49Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:00:49Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:00:49Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:00:49Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:00:49Z", "value" => "997"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:00:49Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:00:49Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:00:49Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:00:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:00:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:00:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:00:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:00:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:00:49Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:00:49Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:00:49Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T12:00:49Z", "vendor" => "morefun"} [2026-08-21 12:01:23.033] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:01:23.033] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 12:01:23.033] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 12:01:23.034] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1413.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-08-21 12:01:23.035] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=411.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-08-21 12:01:23.035] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:01:23.036] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:01:23.036] [INFO ] Terminal updated: 98251226730002 [2026-08-21 12:01:23.060] [DEBUG] QUERY OK source="tms_terminals" db=23.3ms queue=0.3ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:01:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:01:23.060] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 12:01:23.061] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:01:23.104] [DEBUG] QUERY OK source="tms_terminals" db=42.7ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:01:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:01:23.152] [DEBUG] QUERY OK db=47.5ms idle=43.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "cadf607e-2ce2-4fd9-b865-751f0a7b8d92", "2026-08-21T12:00:49Z", ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:01:23.152] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77914, oid: "cadf607e-2ce2-4fd9-b865-751f0a7b8d92", upload_time: "2026-08-21T12:00:49Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]} [2026-08-21 12:01:23.153] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:00:49Z", "value" => "morefun"} [2026-08-21 12:01:23.201] [DEBUG] QUERY OK db=47.8ms queue=0.3ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "morefun", "vendor", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.201] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792387, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.202] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:00:49Z", "value" => "kiosk_launcher"} [2026-08-21 12:01:23.236] [DEBUG] QUERY OK db=34.1ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "kiosk_launcher", "model", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792388, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.236] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:00:49Z", "value" => "1.0"} [2026-08-21 12:01:23.268] [DEBUG] QUERY OK db=31.3ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "1.0", "app_version", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792389, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.268] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:00:49Z", "value" => "13"} [2026-08-21 12:01:23.322] [DEBUG] QUERY OK db=52.8ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "13", "android_version", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792390, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.322] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:00:49Z", "value" => "997"} [2026-08-21 12:01:23.360] [DEBUG] QUERY OK db=36.6ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "997", "ram_free_mb", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.360] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792391, itemkey: "ram_free_mb", value: "997", timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.361] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:00:49Z", "value" => "WIFI"} [2026-08-21 12:01:23.414] [DEBUG] QUERY OK db=52.1ms queue=0.2ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "WIFI", "network_type", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792392, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.414] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:00:49Z", "value" => "true"} [2026-08-21 12:01:23.439] [DEBUG] QUERY OK db=24.2ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "true", "kiosk_active", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792393, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.440] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:00:49Z", "value" => ""} [2026-08-21 12:01:23.516] [DEBUG] QUERY OK db=74.9ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:00:49Z", "sim_operator", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792394, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.516] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:00:49Z", "value" => "UNKNOWN"} [2026-08-21 12:01:23.572] [DEBUG] QUERY OK db=55.5ms idle=77.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "UNKNOWN", "sim_number", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792395, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.572] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:00:49Z", "value" => "UNKNOWN"} [2026-08-21 12:01:23.620] [DEBUG] QUERY OK db=47.5ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "UNKNOWN", "sim_iccid", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792396, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.621] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:00:49Z", "value" => "UNKNOWN"} [2026-08-21 12:01:23.672] [DEBUG] QUERY OK db=51.3ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "UNKNOWN", "sim_imsi", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.673] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792397, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.673] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:00:49Z", "value" => "UNKNOWN"} [2026-08-21 12:01:23.725] [DEBUG] QUERY OK db=51.9ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "UNKNOWN", "sim_iccid2", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.725] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792398, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.726] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:00:49Z", "value" => "UNKNOWN"} [2026-08-21 12:01:23.778] [DEBUG] QUERY OK db=52.1ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "UNKNOWN", "sim_imsi2", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.778] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792399, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.778] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:00:49Z", "value" => "1"} [2026-08-21 12:01:23.819] [DEBUG] QUERY OK db=40.3ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "1", "data_usage_mb", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792400, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.819] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:00:49Z", "value" => "0"} [2026-08-21 12:01:23.854] [DEBUG] QUERY OK db=34.4ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "0", "mobile_data_mb", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792401, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.855] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:00:49Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 12:01:23.897] [DEBUG] QUERY OK db=40.4ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:00:49Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77914, ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:23.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792402, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T12:00:49Z", message: nil, status_log_id: 77914, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]}} [2026-08-21 12:01:23.898] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:01:23.898] [INFO ] Incoming JSON payload: {"oid":"02db01b7-2ebe-4c66-92c5-5f0a0b40124c","sn":"98251226730001","uploadTime":"2026-08-21T12:01:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:01:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:01:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:01:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:01:23Z"},{"itemkey":"ram_free_mb","value":"924","timestamp":"2026-08-21T12:01:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:01:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:01:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:01:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:01:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:01:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:01:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:01:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:01:23Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:01:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:01:23.899] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "02db01b7-2ebe-4c66-92c5-5f0a0b40124c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:01:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:01:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:01:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:01:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:01:23Z", "value" => "924"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:01:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:01:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:01:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:01:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:01:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:01:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:01:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:01:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:01:23Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:01:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:01:23Z", "vendor" => "morefun"} [2026-08-21 12:01:23.899] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:01:23.900] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:01:23.900] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:01:23.901] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=46.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-08-21 12:01:23.903] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.1ms idle=5.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-08-21 12:01:23.903] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:01:23.904] [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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:01:23.905] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:01:23.942] [DEBUG] QUERY OK source="tms_terminals" db=36.9ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:01:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:01:23.943] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:01:23.944] [DEBUG] QUERY OK source="tms_terminals" db=0.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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:01:23.998] [DEBUG] QUERY OK source="tms_terminals" db=53.3ms queue=0.1ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:01:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:01:24.057] [DEBUG] QUERY OK db=58.5ms idle=54.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "02db01b7-2ebe-4c66-92c5-5f0a0b40124c", "2026-08-21T12:01:23Z", ~N[2026-08-21 12:01:23], ~N[2026-08-21 12:01:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:01:24.057] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77915, oid: "02db01b7-2ebe-4c66-92c5-5f0a0b40124c", upload_time: "2026-08-21T12:01:23Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:23], updated_at: ~N[2026-08-21 12:01:23]} [2026-08-21 12:01:24.057] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:01:23Z", "value" => "morefun"} [2026-08-21 12:01:24.094] [DEBUG] QUERY OK db=35.1ms queue=0.3ms idle=60.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:23Z", "morefun", "vendor", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792403, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.094] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:01:23Z", "value" => "kiosk_launcher"} [2026-08-21 12:01:24.138] [DEBUG] QUERY OK db=42.9ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:23Z", "kiosk_launcher", "model", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792404, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.138] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:01:23Z", "value" => "1.0"} [2026-08-21 12:01:24.198] [DEBUG] QUERY OK db=58.9ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:23Z", "1.0", "app_version", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792405, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.198] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:01:23Z", "value" => "13"} [2026-08-21 12:01:24.242] [DEBUG] QUERY OK db=43.0ms idle=60.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:23Z", "13", "android_version", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792406, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.242] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:01:23Z", "value" => "924"} [2026-08-21 12:01:24.289] [DEBUG] QUERY OK db=44.9ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:23Z", "924", "ram_free_mb", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.289] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792407, itemkey: "ram_free_mb", value: "924", timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.289] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:01:23Z", "value" => "WIFI"} [2026-08-21 12:01:24.346] [DEBUG] QUERY OK db=56.8ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:23Z", "WIFI", "network_type", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.346] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792408, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.347] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:01:23Z", "value" => "true"} [2026-08-21 12:01:24.379] [DEBUG] QUERY OK db=31.7ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:23Z", "true", "kiosk_active", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792409, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.379] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:01:23Z", "value" => ""} [2026-08-21 12:01:24.421] [DEBUG] QUERY OK db=41.8ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:01:23Z", "sim_operator", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792410, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.422] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:01:23Z", "value" => "UNKNOWN"} [2026-08-21 12:01:24.481] [DEBUG] QUERY OK db=59.1ms queue=0.3ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:23Z", "UNKNOWN", "sim_number", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792411, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.482] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:01:23Z", "value" => "UNKNOWN"} [2026-08-21 12:01:24.529] [DEBUG] QUERY OK db=46.9ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:23Z", "UNKNOWN", "sim_iccid", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792412, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.530] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:01:23Z", "value" => "UNKNOWN"} [2026-08-21 12:01:24.573] [DEBUG] QUERY OK db=43.0ms idle=48.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:23Z", "UNKNOWN", "sim_imsi", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792413, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.574] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:01:23Z", "value" => "UNKNOWN"} [2026-08-21 12:01:24.659] [DEBUG] QUERY OK db=84.6ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:23Z", "UNKNOWN", "sim_iccid2", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.659] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792414, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.659] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:01:23Z", "value" => "UNKNOWN"} [2026-08-21 12:01:24.737] [DEBUG] QUERY OK db=76.8ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:23Z", "UNKNOWN", "sim_imsi2", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.737] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792415, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.737] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:01:23Z", "value" => "35"} [2026-08-21 12:01:24.768] [DEBUG] QUERY OK db=31.1ms idle=78.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:23Z", "35", "data_usage_mb", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792416, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.770] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:01:23Z", "value" => "0"} [2026-08-21 12:01:24.811] [DEBUG] QUERY OK db=40.1ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:23Z", "0", "mobile_data_mb", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792417, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:24.812] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:01:24.868] [DEBUG] QUERY OK db=55.9ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77915, ~N[2026-08-21 12:01:24], ~N[2026-08-21 12:01:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:24.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792418, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:01:23Z", message: nil, status_log_id: 77915, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:24], updated_at: ~N[2026-08-21 12:01:24]}} [2026-08-21 12:01:52.831] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 12:01:52.831] [INFO ] Incoming JSON payload: {"oid":"32c4b57d-6734-4ac7-96c0-7708a47d1799","sn":"98251226730002","uploadTime":"2026-08-21T12:01:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"ram_free_mb","value":"995","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:01:19Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 12:01:52.833] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "32c4b57d-6734-4ac7-96c0-7708a47d1799", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:01:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:01:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:01:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:01:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:01:19Z", "value" => "995"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:01:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:01:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:01:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:01:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:01:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:01:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:01:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:01:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:01:19Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:01:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:01:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T12:01:19Z", "vendor" => "morefun"} [2026-08-21 12:01:52.833] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:01:52.834] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 12:01:52.834] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 12:01:52.836] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1111.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-08-21 12:01:52.837] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=110.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-08-21 12:01:52.837] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:01:52.839] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=2.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:01:52.839] [INFO ] Terminal updated: 98251226730002 [2026-08-21 12:01:52.891] [DEBUG] QUERY OK source="tms_terminals" db=51.6ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:01:52], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:01:52.891] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 12:01:52.893] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=53.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:01:52.925] [DEBUG] QUERY OK source="tms_terminals" db=31.4ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:01:52], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:01:52.964] [DEBUG] QUERY OK db=38.2ms idle=32.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "32c4b57d-6734-4ac7-96c0-7708a47d1799", "2026-08-21T12:01:19Z", ~N[2026-08-21 12:01:52], ~N[2026-08-21 12:01:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:01:52.964] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77916, oid: "32c4b57d-6734-4ac7-96c0-7708a47d1799", upload_time: "2026-08-21T12:01:19Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:52], updated_at: ~N[2026-08-21 12:01:52]} [2026-08-21 12:01:52.964] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:01:19Z", "value" => "morefun"} [2026-08-21 12:01:53.008] [DEBUG] QUERY OK db=43.1ms queue=0.1ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "morefun", "vendor", 77916, ~N[2026-08-21 12:01:52], ~N[2026-08-21 12:01:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792419, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:52], updated_at: ~N[2026-08-21 12:01:52]}} [2026-08-21 12:01:53.008] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:01:19Z", "value" => "kiosk_launcher"} [2026-08-21 12:01:53.049] [DEBUG] QUERY OK db=40.4ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "kiosk_launcher", "model", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792420, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.050] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:01:19Z", "value" => "1.0"} [2026-08-21 12:01:53.091] [DEBUG] QUERY OK db=40.4ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "1.0", "app_version", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792421, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.091] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:01:19Z", "value" => "13"} [2026-08-21 12:01:53.137] [DEBUG] QUERY OK db=44.7ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "13", "android_version", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792422, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.137] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:01:19Z", "value" => "995"} [2026-08-21 12:01:53.192] [DEBUG] QUERY OK db=54.0ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "995", "ram_free_mb", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792423, itemkey: "ram_free_mb", value: "995", timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.192] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:01:19Z", "value" => "WIFI"} [2026-08-21 12:01:53.227] [DEBUG] QUERY OK db=34.7ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "WIFI", "network_type", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.228] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792424, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.228] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:01:19Z", "value" => "true"} [2026-08-21 12:01:53.245] [DEBUG] QUERY OK db=15.8ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "true", "kiosk_active", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792425, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.245] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:01:19Z", "value" => ""} [2026-08-21 12:01:53.288] [DEBUG] QUERY OK db=42.8ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:01:19Z", "sim_operator", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792426, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.289] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:01:19Z", "value" => "UNKNOWN"} [2026-08-21 12:01:53.335] [DEBUG] QUERY OK db=46.4ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "UNKNOWN", "sim_number", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.336] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792427, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.336] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:01:19Z", "value" => "UNKNOWN"} [2026-08-21 12:01:53.387] [DEBUG] QUERY OK db=51.1ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "UNKNOWN", "sim_iccid", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792428, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.388] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:01:19Z", "value" => "UNKNOWN"} [2026-08-21 12:01:53.440] [DEBUG] QUERY OK db=52.0ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "UNKNOWN", "sim_imsi", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792429, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.441] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:01:19Z", "value" => "UNKNOWN"} [2026-08-21 12:01:53.481] [DEBUG] QUERY OK db=38.7ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "UNKNOWN", "sim_iccid2", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792430, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.482] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:01:19Z", "value" => "UNKNOWN"} [2026-08-21 12:01:53.522] [DEBUG] QUERY OK db=40.2ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "UNKNOWN", "sim_imsi2", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792431, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.523] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:01:19Z", "value" => "1"} [2026-08-21 12:01:53.783] [DEBUG] QUERY OK db=259.5ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "1", "data_usage_mb", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792432, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.783] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:01:19Z", "value" => "0"} [2026-08-21 12:01:53.822] [DEBUG] QUERY OK db=39.0ms idle=53.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "0", "mobile_data_mb", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792433, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.824] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:01:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 12:01:53.863] [DEBUG] QUERY OK db=37.4ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:19Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77916, ~N[2026-08-21 12:01:53], ~N[2026-08-21 12:01:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:53.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792434, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T12:01:19Z", message: nil, status_log_id: 77916, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:53], updated_at: ~N[2026-08-21 12:01:53]}} [2026-08-21 12:01:53.871] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:01:53.871] [INFO ] Incoming JSON payload: {"oid":"cc209d7d-e220-48ef-8481-b0337411ef5f","sn":"98251226730001","uploadTime":"2026-08-21T12:01:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:01:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:01:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:01:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:01:53Z"},{"itemkey":"ram_free_mb","value":"923","timestamp":"2026-08-21T12:01:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:01:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:01:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:01:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:01:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:01:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:01:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:01:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:01:53Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:01:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:01: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:01:53.875] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "cc209d7d-e220-48ef-8481-b0337411ef5f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:01:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:01:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:01:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:01:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:01:53Z", "value" => "923"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:01:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:01:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:01:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:01:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:01:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:01:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:01:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:01:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:01:53Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:01:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:01: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:01:53Z", "vendor" => "morefun"} [2026-08-21 12:01:53.875] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:01:53.876] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:01:53.876] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:01:53.878] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=54.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 12:01:53.880] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms queue=0.4ms idle=15.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 12:01:53.880] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:01:53.882] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=2.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:01:53.882] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:01:53.924] [DEBUG] QUERY OK source="tms_terminals" db=40.7ms queue=0.5ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:01:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:01:53.925] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:01:53.926] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=43.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:01:54.015] [DEBUG] QUERY OK source="tms_terminals" db=88.6ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:01:53], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:01:54.055] [DEBUG] QUERY OK db=39.5ms queue=0.1ms idle=89.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "cc209d7d-e220-48ef-8481-b0337411ef5f", "2026-08-21T12:01:53Z", ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:01:54.056] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77917, oid: "cc209d7d-e220-48ef-8481-b0337411ef5f", upload_time: "2026-08-21T12:01:53Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]} [2026-08-21 12:01:54.056] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:01:53Z", "value" => "morefun"} [2026-08-21 12:01:54.100] [DEBUG] QUERY OK db=44.4ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:53Z", "morefun", "vendor", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792435, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.101] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:01:53Z", "value" => "kiosk_launcher"} [2026-08-21 12:01:54.136] [DEBUG] QUERY OK db=33.2ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:53Z", "kiosk_launcher", "model", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792436, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.137] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:01:53Z", "value" => "1.0"} [2026-08-21 12:01:54.224] [DEBUG] QUERY OK db=86.5ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:53Z", "1.0", "app_version", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792437, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.224] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:01:53Z", "value" => "13"} [2026-08-21 12:01:54.262] [DEBUG] QUERY OK db=37.9ms idle=87.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:53Z", "13", "android_version", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.263] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792438, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.263] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:01:53Z", "value" => "923"} [2026-08-21 12:01:54.294] [DEBUG] QUERY OK db=30.7ms queue=0.1ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:53Z", "923", "ram_free_mb", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792439, itemkey: "ram_free_mb", value: "923", timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.295] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:01:53Z", "value" => "WIFI"} [2026-08-21 12:01:54.327] [DEBUG] QUERY OK db=32.4ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:53Z", "WIFI", "network_type", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792440, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.328] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:01:53Z", "value" => "true"} [2026-08-21 12:01:54.369] [DEBUG] QUERY OK db=40.9ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:53Z", "true", "kiosk_active", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.369] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792441, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.369] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:01:53Z", "value" => ""} [2026-08-21 12:01:54.414] [DEBUG] QUERY OK db=43.5ms queue=0.6ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:01:53Z", "sim_operator", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792442, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.415] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:01:53Z", "value" => "UNKNOWN"} [2026-08-21 12:01:54.457] [DEBUG] QUERY OK db=41.9ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:53Z", "UNKNOWN", "sim_number", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792443, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.457] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:01:53Z", "value" => "UNKNOWN"} [2026-08-21 12:01:54.497] [DEBUG] QUERY OK db=39.6ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:53Z", "UNKNOWN", "sim_iccid", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792444, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.498] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:01:53Z", "value" => "UNKNOWN"} [2026-08-21 12:01:54.573] [DEBUG] QUERY OK db=74.2ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:53Z", "UNKNOWN", "sim_imsi", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792445, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.573] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:01:53Z", "value" => "UNKNOWN"} [2026-08-21 12:01:54.683] [DEBUG] QUERY OK db=109.8ms idle=76.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:53Z", "UNKNOWN", "sim_iccid2", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792446, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.684] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:01:53Z", "value" => "UNKNOWN"} [2026-08-21 12:01:54.713] [DEBUG] QUERY OK db=29.0ms idle=111.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:53Z", "UNKNOWN", "sim_imsi2", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.714] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792447, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.715] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:01:53Z", "value" => "35"} [2026-08-21 12:01:54.763] [DEBUG] QUERY OK db=46.7ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:53Z", "35", "data_usage_mb", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792448, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.763] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:01:53Z", "value" => "0"} [2026-08-21 12:01:54.794] [DEBUG] QUERY OK db=30.5ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:53Z", "0", "mobile_data_mb", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792449, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:01:54.796] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:01: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:01:54.843] [DEBUG] QUERY OK db=46.3ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77917, ~N[2026-08-21 12:01:54], ~N[2026-08-21 12:01:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:01:54.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792450, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:01:53Z", message: nil, status_log_id: 77917, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:01:54], updated_at: ~N[2026-08-21 12:01:54]}} [2026-08-21 12:02:06.824] [INFO ] Running offline device check... [2026-08-21 12:02:06.825] [INFO ] Starting offline device check... [2026-08-21 12:02:06.826] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=595.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-08-21 12:02:06.842] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.4ms queue=0.3ms idle=51.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:02:06.850] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.5ms idle=16.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:02:06.852] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.856] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.859] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.861] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.863] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.867] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.877] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.4ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.878] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.896] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.8ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.903] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms queue=0.1ms idle=18.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:02:06.906] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms queue=0.3ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.907] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.909] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.938] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=28.3ms queue=0.1ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.939] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=29.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:02:06.942] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.943] [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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:06.944] [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-08-21 12:02:06.947] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.004] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=55.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.005] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=56.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:02:07.007] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.017] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.019] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms 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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.026] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.030] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms queue=0.3ms idle=8.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.034] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.043] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.4ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.049] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms queue=0.2ms idle=10.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.050] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.051] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.053] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.056] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.060] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.062] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.063] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.064] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.066] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.067] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.068] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.069] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.070] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.072] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.074] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.077] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.7ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.084] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:02:07.086] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 12:02:07.086] [INFO ] Offline device check completed successfully [2026-08-21 12:02:22.984] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 12:02:22.984] [INFO ] Incoming JSON payload: {"oid":"51b8fc03-7f41-43f3-a463-bae140ec48bb","sn":"98251226730002","uploadTime":"2026-08-21T12:01:49Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"ram_free_mb","value":"995","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:01:49Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 12:02:22.985] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "51b8fc03-7f41-43f3-a463-bae140ec48bb", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:01:49Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:01:49Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:01:49Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:01:49Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:01:49Z", "value" => "995"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:01:49Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:01:49Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:01:49Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:01:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:01:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:01:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:01:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:01:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:01:49Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:01:49Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:01:49Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T12:01:49Z", "vendor" => "morefun"} [2026-08-21 12:02:22.986] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:02:22.986] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 12:02:22.986] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 12:02:22.987] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.2ms idle=757.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-08-21 12:02:22.987] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=149.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-08-21 12:02:22.987] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:02:22.989] [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` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:02:22.993] [INFO ] Terminal updated: 98251226730002 [2026-08-21 12:02:23.041] [DEBUG] QUERY OK source="tms_terminals" db=46.8ms queue=0.6ms idle=6.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:02:22], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:02:23.041] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 12:02:23.044] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.1ms idle=53.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:02:23.089] [DEBUG] QUERY OK source="tms_terminals" db=44.8ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:02:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:02:23.113] [DEBUG] QUERY OK db=23.7ms idle=45.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "51b8fc03-7f41-43f3-a463-bae140ec48bb", "2026-08-21T12:01:49Z", ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:02:23.114] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77918, oid: "51b8fc03-7f41-43f3-a463-bae140ec48bb", upload_time: "2026-08-21T12:01:49Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]} [2026-08-21 12:02:23.114] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:01:49Z", "value" => "morefun"} [2026-08-21 12:02:23.172] [DEBUG] QUERY OK db=57.6ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:49Z", "morefun", "vendor", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.172] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792451, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.172] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:01:49Z", "value" => "kiosk_launcher"} [2026-08-21 12:02:23.213] [DEBUG] QUERY OK db=39.9ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:49Z", "kiosk_launcher", "model", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.213] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792452, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.213] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:01:49Z", "value" => "1.0"} [2026-08-21 12:02:23.246] [DEBUG] QUERY OK db=32.6ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:49Z", "1.0", "app_version", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.246] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792453, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.246] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:01:49Z", "value" => "13"} [2026-08-21 12:02:23.298] [DEBUG] QUERY OK db=51.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-08-21T12:01:49Z", "13", "android_version", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792454, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.299] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:01:49Z", "value" => "995"} [2026-08-21 12:02:23.332] [DEBUG] QUERY OK db=32.9ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:49Z", "995", "ram_free_mb", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.332] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792455, itemkey: "ram_free_mb", value: "995", timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.333] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:01:49Z", "value" => "WIFI"} [2026-08-21 12:02:23.398] [DEBUG] QUERY OK db=65.3ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:49Z", "WIFI", "network_type", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792456, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.399] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:01:49Z", "value" => "true"} [2026-08-21 12:02:23.422] [DEBUG] QUERY OK db=23.0ms idle=66.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:49Z", "true", "kiosk_active", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792457, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.422] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:01:49Z", "value" => ""} [2026-08-21 12:02:23.462] [DEBUG] QUERY OK db=38.7ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:01:49Z", "sim_operator", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.462] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792458, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.462] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:01:49Z", "value" => "UNKNOWN"} [2026-08-21 12:02:23.515] [DEBUG] QUERY OK db=50.2ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:49Z", "UNKNOWN", "sim_number", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792459, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.515] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:01:49Z", "value" => "UNKNOWN"} [2026-08-21 12:02:23.614] [DEBUG] QUERY OK db=98.9ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:49Z", "UNKNOWN", "sim_iccid", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792460, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.615] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:01:49Z", "value" => "UNKNOWN"} [2026-08-21 12:02:23.812] [DEBUG] QUERY OK db=197.1ms idle=100.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:49Z", "UNKNOWN", "sim_imsi", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.813] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792461, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.813] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:01:49Z", "value" => "UNKNOWN"} [2026-08-21 12:02:23.844] [DEBUG] QUERY OK db=30.6ms idle=199.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:49Z", "UNKNOWN", "sim_iccid2", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792462, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.846] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:01:49Z", "value" => "UNKNOWN"} [2026-08-21 12:02:23.901] [DEBUG] QUERY OK db=54.7ms idle=5.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:49Z", "UNKNOWN", "sim_imsi2", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792463, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.903] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:01:49Z", "value" => "1"} [2026-08-21 12:02:23.929] [DEBUG] QUERY OK db=22.8ms queue=2.3ms idle=59.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:49Z", "1", "data_usage_mb", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792464, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.930] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:01:49Z", "value" => "0"} [2026-08-21 12:02:23.990] [DEBUG] QUERY OK db=59.0ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:49Z", "0", "mobile_data_mb", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:23.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792465, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:23.994] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:01:49Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 12:02:24.054] [DEBUG] QUERY OK db=56.5ms queue=1.8ms idle=65.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:01:49Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77918, ~N[2026-08-21 12:02:23], ~N[2026-08-21 12:02:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:24.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792466, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T12:01:49Z", message: nil, status_log_id: 77918, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:23], updated_at: ~N[2026-08-21 12:02:23]}} [2026-08-21 12:02:24.124] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:02:24.125] [INFO ] Incoming JSON payload: {"oid":"cc2df34c-be5d-41b4-b226-2fd49e49c542","sn":"98251226730001","uploadTime":"2026-08-21T12:02:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:02:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:02:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:02:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:02:23Z"},{"itemkey":"ram_free_mb","value":"922","timestamp":"2026-08-21T12:02:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:02:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:02:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:02:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:02:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:02:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:02:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:02:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:02:23Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:02:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:02: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:02:24.128] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "cc2df34c-be5d-41b4-b226-2fd49e49c542", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:02:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:02:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:02:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:02:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:02:23Z", "value" => "922"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:02:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:02:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:02:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:02:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:02:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:02:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:02:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:02:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:02:23Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:02:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:02: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:02:23Z", "vendor" => "morefun"} [2026-08-21 12:02:24.129] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:02:24.129] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:02:24.129] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:02:24.131] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=139.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-08-21 12:02:24.133] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=78.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-08-21 12:02:24.134] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:02:24.137] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=5.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:02:24.138] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:02:24.178] [DEBUG] QUERY OK source="tms_terminals" db=39.3ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:02:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:02:24.178] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:02:24.181] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=40.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:02:24.234] [DEBUG] QUERY OK source="tms_terminals" db=52.6ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:02:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:02:24.281] [DEBUG] QUERY OK db=45.9ms idle=53.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "cc2df34c-be5d-41b4-b226-2fd49e49c542", "2026-08-21T12:02:23Z", ~N[2026-08-21 12:02:24], ~N[2026-08-21 12:02:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:02:24.282] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77919, oid: "cc2df34c-be5d-41b4-b226-2fd49e49c542", upload_time: "2026-08-21T12:02:23Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:24], updated_at: ~N[2026-08-21 12:02:24]} [2026-08-21 12:02:24.282] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:02:23Z", "value" => "morefun"} [2026-08-21 12:02:24.338] [DEBUG] QUERY OK db=55.0ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:23Z", "morefun", "vendor", 77919, ~N[2026-08-21 12:02:24], ~N[2026-08-21 12:02:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:24.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792467, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:24], updated_at: ~N[2026-08-21 12:02:24]}} [2026-08-21 12:02:24.338] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:02:23Z", "value" => "kiosk_launcher"} [2026-08-21 12:02:24.389] [DEBUG] QUERY OK db=50.5ms idle=57.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:23Z", "kiosk_launcher", "model", 77919, ~N[2026-08-21 12:02:24], ~N[2026-08-21 12:02:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:24.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792468, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:24], updated_at: ~N[2026-08-21 12:02:24]}} [2026-08-21 12:02:24.390] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:02:23Z", "value" => "1.0"} [2026-08-21 12:02:24.433] [DEBUG] QUERY OK db=42.3ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:23Z", "1.0", "app_version", 77919, ~N[2026-08-21 12:02:24], ~N[2026-08-21 12:02:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:24.433] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792469, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:24], updated_at: ~N[2026-08-21 12:02:24]}} [2026-08-21 12:02:24.433] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:02:23Z", "value" => "13"} [2026-08-21 12:02:24.492] [DEBUG] QUERY OK db=58.6ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:23Z", "13", "android_version", 77919, ~N[2026-08-21 12:02:24], ~N[2026-08-21 12:02:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:24.492] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792470, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:24], updated_at: ~N[2026-08-21 12:02:24]}} [2026-08-21 12:02:24.492] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:02:23Z", "value" => "922"} [2026-08-21 12:02:24.533] [DEBUG] QUERY OK db=40.1ms queue=0.1ms idle=60.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:23Z", "922", "ram_free_mb", 77919, ~N[2026-08-21 12:02:24], ~N[2026-08-21 12:02:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:24.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792471, itemkey: "ram_free_mb", value: "922", timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:24], updated_at: ~N[2026-08-21 12:02:24]}} [2026-08-21 12:02:24.534] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:02:23Z", "value" => "WIFI"} [2026-08-21 12:02:24.692] [DEBUG] QUERY OK db=157.7ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:23Z", "WIFI", "network_type", 77919, ~N[2026-08-21 12:02:24], ~N[2026-08-21 12:02:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:24.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792472, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:24], updated_at: ~N[2026-08-21 12:02:24]}} [2026-08-21 12:02:24.692] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:02:23Z", "value" => "true"} [2026-08-21 12:02:24.730] [DEBUG] QUERY OK db=38.0ms idle=159.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:23Z", "true", "kiosk_active", 77919, ~N[2026-08-21 12:02:24], ~N[2026-08-21 12:02:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:24.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792473, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:24], updated_at: ~N[2026-08-21 12:02:24]}} [2026-08-21 12:02:24.734] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:02:23Z", "value" => ""} [2026-08-21 12:02:24.787] [DEBUG] QUERY OK db=52.8ms queue=0.1ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:02:23Z", "sim_operator", 77919, ~N[2026-08-21 12:02:24], ~N[2026-08-21 12:02:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:24.788] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792474, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:24], updated_at: ~N[2026-08-21 12:02:24]}} [2026-08-21 12:02:24.788] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:02:23Z", "value" => "UNKNOWN"} [2026-08-21 12:02:24.844] [DEBUG] QUERY OK db=55.1ms queue=0.5ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:23Z", "UNKNOWN", "sim_number", 77919, ~N[2026-08-21 12:02:24], ~N[2026-08-21 12:02:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:24.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792475, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:24], updated_at: ~N[2026-08-21 12:02:24]}} [2026-08-21 12:02:24.844] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:02:23Z", "value" => "UNKNOWN"} [2026-08-21 12:02:24.944] [DEBUG] QUERY OK db=99.0ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:23Z", "UNKNOWN", "sim_iccid", 77919, ~N[2026-08-21 12:02:24], ~N[2026-08-21 12:02:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:24.944] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792476, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:24], updated_at: ~N[2026-08-21 12:02:24]}} [2026-08-21 12:02:24.944] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:02:23Z", "value" => "UNKNOWN"} [2026-08-21 12:02:24.968] [DEBUG] QUERY OK db=22.9ms idle=98.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:23Z", "UNKNOWN", "sim_imsi", 77919, ~N[2026-08-21 12:02:24], ~N[2026-08-21 12:02:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:24.968] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792477, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:24], updated_at: ~N[2026-08-21 12:02:24]}} [2026-08-21 12:02:24.968] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:02:23Z", "value" => "UNKNOWN"} [2026-08-21 12:02:25.039] [DEBUG] QUERY OK db=70.1ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:23Z", "UNKNOWN", "sim_iccid2", 77919, ~N[2026-08-21 12:02:24], ~N[2026-08-21 12:02:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:25.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792478, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:24], updated_at: ~N[2026-08-21 12:02:24]}} [2026-08-21 12:02:25.039] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:02:23Z", "value" => "UNKNOWN"} [2026-08-21 12:02:25.091] [DEBUG] QUERY OK db=49.8ms queue=0.1ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:23Z", "UNKNOWN", "sim_imsi2", 77919, ~N[2026-08-21 12:02:25], ~N[2026-08-21 12:02:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:25.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792479, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:25], updated_at: ~N[2026-08-21 12:02:25]}} [2026-08-21 12:02:25.091] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:02:23Z", "value" => "35"} [2026-08-21 12:02:25.127] [DEBUG] QUERY OK db=35.8ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:23Z", "35", "data_usage_mb", 77919, ~N[2026-08-21 12:02:25], ~N[2026-08-21 12:02:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:25.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792480, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:25], updated_at: ~N[2026-08-21 12:02:25]}} [2026-08-21 12:02:25.128] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:02:23Z", "value" => "0"} [2026-08-21 12:02:25.190] [DEBUG] QUERY OK db=60.5ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:23Z", "0", "mobile_data_mb", 77919, ~N[2026-08-21 12:02:25], ~N[2026-08-21 12:02:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:25.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792481, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:25], updated_at: ~N[2026-08-21 12:02:25]}} [2026-08-21 12:02:25.192] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:02: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:02:25.259] [DEBUG] QUERY OK db=65.2ms idle=65.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77919, ~N[2026-08-21 12:02:25], ~N[2026-08-21 12:02:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:25.260] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792482, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:02:23Z", message: nil, status_log_id: 77919, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:25], updated_at: ~N[2026-08-21 12:02:25]}} [2026-08-21 12:02:32.050] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:02:32.050] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:02:31Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:02:31Z","value":"54"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:02:31Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:02:31Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:02:31Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:02:31Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:02:31Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:02:31Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:02:31Z","vendor":"MoreFun"} [2026-08-21 12:02:32.050] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:02:31Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:02:31Z", "value" => "54"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:02:31Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:02:31Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:02:31Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:02:31Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:02:31Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:02:31Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:02:31Z", "vendor" => "MoreFun"} [2026-08-21 12:02:32.050] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:02:32.050] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:02:32.050] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:02:32.055] [DEBUG] QUERY OK source="parameter_templates" db=4.3ms idle=819.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-08-21 12:02:32.060] [DEBUG] QUERY OK source="tms_terminals" db=4.3ms queue=0.1ms idle=178.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:02:32.061] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms idle=5.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:02:32.068] [DEBUG] QUERY OK source="parameter_definitions" db=1.9ms queue=1.9ms idle=4.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:02:32.074] [DEBUG] QUERY OK source="pos_terminal" db=6.0ms idle=7.3ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:02:32.109] [DEBUG] QUERY OK source="pos_merchant" db=33.7ms idle=6.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:02:32.113] [DEBUG] QUERY OK db=2.1ms queue=0.6ms idle=878.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 ["626165170000000"] [2026-08-21 12:02:32.113] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:02:32.121] [DEBUG] QUERY OK source="pos_terminal_data" db=3.9ms queue=1.3ms idle=41.3ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:02:32.121] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 12:02:32.126] [DEBUG] QUERY OK source="address" db=3.9ms idle=13.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:02:32.126] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:02:32.130] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:02:32.165] [DEBUG] QUERY OK db=29.6ms idle=13.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "30cd95e0f67158b528675954b693e3cede3dbf967866dc48ee2f4a9f08f2554d", 2661, 936, ~U[2026-08-21 12:02:32Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:02:32], ~N[2026-08-21 12:02:32]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:02:32.167] [INFO ] AutoPushService: Created push log 49050 for MF919 params.zip [2026-08-21 12:02:32.168] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 2661, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:02:32.168] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:02:32.170] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:02:32.173] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms queue=0.9ms idle=44.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:02:32.175] [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-08-21 12:02:32.234] [DEBUG] QUERY OK db=56.6ms queue=0.2ms idle=12.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "021f03797b5aad7ee1e6193be3b454332229ac39e1716340f286b94d9852d6e5", 2725, 17947, ~U[2026-08-21 12:02:32Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:02:32], ~N[2026-08-21 12:02:32]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:02:32.234] [INFO ] AutoPushService: Created push log 49051 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:02:32.234] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2725, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:02:32.234] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:02:32.235] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:02:32.236] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=62.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-08-21 12:02:32.237] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:02:32.238] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:02:32.239] [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-08-21 12:02:32.240] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:02:32.240] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:02:32.240] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:02:32.243] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms queue=1.0ms idle=5.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-08-21 12:02:32.246] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:02:32.246] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:02:32.248] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=8.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 12:02:32.323] [DEBUG] QUERY OK source="tms_terminals" db=33.7ms queue=41.2ms idle=4.8ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:02:32], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:02:32.323] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:02:32.324] [INFO ] Event published: terminal_updated [2026-08-21 12:02:32.324] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:02:32.324] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:02:32.324] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:02:32.326] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.3ms queue=0.2ms idle=76.6ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:02:32], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:02:32.330] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.4ms idle=4.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:02:32.331] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms queue=0.2ms idle=1.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:02:32.331] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:02:32.416] [DEBUG] QUERY OK source="tms_terminals" db=46.7ms queue=41.1ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:02:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:02:32.417] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=85.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 12:02:32.418] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:02:32.419] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms 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-08-21 12:02:32.419] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:02:32.470] [DEBUG] QUERY OK source="parameter_push_logs" db=50.6ms 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-08-21 11:32:32]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:02:32.470] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:02:32.470] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:02:32.472] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:02:32.474] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=2.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:02:32.475] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:02:32.475] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:02:32.592] [DEBUG] QUERY OK source="tms_terminals" db=74.4ms queue=41.4ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:02:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:02:32.681] [DEBUG] QUERY OK db=88.7ms idle=117.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:02:31Z", ~N[2026-08-21 12:02:32], ~N[2026-08-21 12:02:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:02:32.682] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77920, oid: "organization_id", upload_time: "2026-08-21T12:02:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:32], updated_at: ~N[2026-08-21 12:02:32]} [2026-08-21 12:02:32.682] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:02:31Z", "value" => "online"} [2026-08-21 12:02:32.771] [DEBUG] QUERY OK db=88.6ms idle=90.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:02:31Z", "online", "status", 77920, ~N[2026-08-21 12:02:32], ~N[2026-08-21 12:02:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:32.771] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792483, itemkey: "status", value: "online", timestamp: "2026-08-21T12:02:31Z", message: "Terminal status update", status_log_id: 77920, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:32], updated_at: ~N[2026-08-21 12:02:32]}} [2026-08-21 12:02:32.771] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:02:32.771] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:02:31Z", "value" => "54"} [2026-08-21 12:02:32.838] [DEBUG] QUERY OK db=66.5ms queue=0.1ms idle=90.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:02:31Z", "54", "battery", 77920, ~N[2026-08-21 12:02:32], ~N[2026-08-21 12:02:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:32.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792484, itemkey: "battery", value: "54", timestamp: "2026-08-21T12:02:31Z", message: "Battery level", status_log_id: 77920, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:32], updated_at: ~N[2026-08-21 12:02:32]}} [2026-08-21 12:02:32.839] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:02:31Z", "value" => "online"} [2026-08-21 12:02:32.905] [DEBUG] QUERY OK db=64.3ms idle=2.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:02:31Z", "online", "network", 77920, ~N[2026-08-21 12:02:32], ~N[2026-08-21 12:02:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:32.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792485, itemkey: "network", value: "online", timestamp: "2026-08-21T12:02:31Z", message: "Network connectivity", status_log_id: 77920, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:32], updated_at: ~N[2026-08-21 12:02:32]}} [2026-08-21 12:02:32.907] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:02:32.908] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:02:31Z", "value" => "0"} [2026-08-21 12:02:32.956] [DEBUG] QUERY OK db=47.8ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:02:31Z", "0", "cpu", 77920, ~N[2026-08-21 12:02:32], ~N[2026-08-21 12:02:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:32.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792486, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:02:31Z", message: "CPU usage percentage", status_log_id: 77920, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:32], updated_at: ~N[2026-08-21 12:02:32]}} [2026-08-21 12:02:32.959] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:02:31Z", "value" => "1.0.0"} [2026-08-21 12:02:32.997] [DEBUG] QUERY OK db=37.5ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:02:31Z", "1.0.0", "parameter_config", 77920, ~N[2026-08-21 12:02:32], ~N[2026-08-21 12:02:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:32.998] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792487, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:02:31Z", message: "Current parameters version", status_log_id: 77920, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:32], updated_at: ~N[2026-08-21 12:02:32]}} [2026-08-21 12:02:32.998] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:02:31Z", "value" => "1.0.1"} [2026-08-21 12:02:33.069] [DEBUG] QUERY OK db=68.8ms queue=2.2ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:02:31Z", "1.0.1", "emv_config", 77920, ~N[2026-08-21 12:02:32], ~N[2026-08-21 12:02:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:33.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792488, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:02:31Z", message: "Current EMV config version", status_log_id: 77920, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:32], updated_at: ~N[2026-08-21 12:02:32]}} [2026-08-21 12:02:33.070] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:02:31Z", "value" => ""} [2026-08-21 12:02:33.149] [DEBUG] QUERY OK db=37.5ms queue=41.4ms idle=72.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:02:31Z", "keys_config", 77920, ~N[2026-08-21 12:02:33], ~N[2026-08-21 12:02:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:33.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792489, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:02:31Z", message: "Current keys config version", status_log_id: 77920, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:33], updated_at: ~N[2026-08-21 12:02:33]}} [2026-08-21 12:02:33.149] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:02:31Z", "value" => "3.8.7.3"} [2026-08-21 12:02:33.200] [DEBUG] QUERY OK db=50.5ms idle=80.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:02:31Z", "3.8.7.3", "application", 77920, ~N[2026-08-21 12:02:33], ~N[2026-08-21 12:02:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:33.201] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792490, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:02:31Z", message: "Current application version", status_log_id: 77920, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:33], updated_at: ~N[2026-08-21 12:02:33]}} [2026-08-21 12:02:33.201] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:02:32Z"} [2026-08-21 12:02:33.201] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:02:32Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 162, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:02:50.876] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 12:02:50.876] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"-3345677-05-25T14:07:36Z","org.device":[{"itemkey":"status","value":"offline","timestamp":"-3345677-05-25T14:07:36Z","message":"Connection reset - reconnecting"}]} [2026-08-21 12:02:50.876] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Connection reset - reconnecting", "timestamp" => "-3345677-05-25T14:07:36Z", "value" => "offline"}], "sn" => "61250415798001", "uploadTime" => "-3345677-05-25T14:07:36Z"} [2026-08-21 12:02:50.877] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:02:50.881] [DEBUG] QUERY OK source="tms_terminals" db=4.2ms idle=921.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:02:50.881] [INFO ] Terminal updated: 61250415798001 [2026-08-21 12:02:50.983] [DEBUG] QUERY OK source="tms_terminals" db=59.3ms queue=41.8ms idle=645.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:02:50], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:02:50.984] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=21.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:02:51.028] [DEBUG] QUERY OK source="tms_terminals" db=43.1ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:02:50], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:02:51.062] [DEBUG] QUERY OK db=32.6ms queue=0.1ms idle=44.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "-3345677-05-25T14:07:36Z", ~N[2026-08-21 12:02:51], ~N[2026-08-21 12:02:51]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:02:51.064] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77921, oid: "org-id-placeholder", upload_time: "-3345677-05-25T14:07:36Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:51], updated_at: ~N[2026-08-21 12:02:51]} [2026-08-21 12:02:51.064] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Connection reset - reconnecting", "timestamp" => "-3345677-05-25T14:07:36Z", "value" => "offline"} [2026-08-21 12:02:51.100] [DEBUG] QUERY OK db=35.2ms queue=0.1ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Connection reset - reconnecting", "-3345677-05-25T14:07:36Z", "offline", "status", 77921, ~N[2026-08-21 12:02:51], ~N[2026-08-21 12:02:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:51.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792491, itemkey: "status", value: "offline", timestamp: "-3345677-05-25T14:07:36Z", message: "Connection reset - reconnecting", status_log_id: 77921, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:51], updated_at: ~N[2026-08-21 12:02:51]}} [2026-08-21 12:02:51.100] [INFO ] Setting terminal 61250415798001 status to 'offline' from status itemkey [2026-08-21 12:02:51.152] [DEBUG] QUERY OK source="tms_terminals" db=51.4ms idle=39.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["offline", ~N[2026-08-21 12:02:51], 1] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:161 [2026-08-21 12:02:51.153] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=52.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["offline", ~N[2026-08-21 12:02:51], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-08-21 12:02:52.527] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:02:32Z"} [2026-08-21 12:02:52.527] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:02:32Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 163, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:02:53.045] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 12:02:53.046] [INFO ] Incoming JSON payload: {"oid":"64eb1100-603b-4657-9dbc-7b298f43f415","sn":"98251226730002","uploadTime":"2026-08-21T12:02:19Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"ram_free_mb","value":"995","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:02:19Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 12:02:53.047] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "64eb1100-603b-4657-9dbc-7b298f43f415", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:02:19Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:02:19Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:02:19Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:02:19Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:02:19Z", "value" => "995"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:02:19Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:02:19Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:02:19Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:02:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:02:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:02:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:02:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:02:19Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:02:19Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:02:19Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:02:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T12:02:19Z", "vendor" => "morefun"} [2026-08-21 12:02:53.048] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:02:53.048] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 12:02:53.048] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 12:02:53.049] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=812.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-08-21 12:02:53.050] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=82.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-08-21 12:02:53.050] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:02:53.052] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=2.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:02:53.052] [INFO ] Terminal updated: 98251226730002 [2026-08-21 12:02:53.079] [DEBUG] QUERY OK source="tms_terminals" db=26.0ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:02:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:02:53.080] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 12:02:53.083] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=28.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:02:53.128] [DEBUG] QUERY OK source="tms_terminals" db=43.3ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:02:53], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:02:53.175] [DEBUG] QUERY OK db=45.7ms queue=0.6ms idle=0.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "64eb1100-603b-4657-9dbc-7b298f43f415", "2026-08-21T12:02:19Z", ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:02:53.175] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77922, oid: "64eb1100-603b-4657-9dbc-7b298f43f415", upload_time: "2026-08-21T12:02:19Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]} [2026-08-21 12:02:53.175] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:02:19Z", "value" => "morefun"} [2026-08-21 12:02:53.209] [DEBUG] QUERY OK db=31.0ms queue=1.8ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "morefun", "vendor", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792492, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.210] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:02:19Z", "value" => "kiosk_launcher"} [2026-08-21 12:02:53.258] [DEBUG] QUERY OK db=47.0ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "kiosk_launcher", "model", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.258] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792493, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.258] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:02:19Z", "value" => "1.0"} [2026-08-21 12:02:53.287] [DEBUG] QUERY OK db=28.2ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "1.0", "app_version", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792494, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.287] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:02:19Z", "value" => "13"} [2026-08-21 12:02:53.317] [DEBUG] QUERY OK db=29.6ms queue=0.1ms idle=30.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "13", "android_version", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.318] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792495, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.318] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:02:19Z", "value" => "995"} [2026-08-21 12:02:53.371] [DEBUG] QUERY OK db=52.4ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "995", "ram_free_mb", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792496, itemkey: "ram_free_mb", value: "995", timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.371] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:02:19Z", "value" => "WIFI"} [2026-08-21 12:02:53.419] [DEBUG] QUERY OK db=47.1ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "WIFI", "network_type", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792497, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.419] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:02:19Z", "value" => "true"} [2026-08-21 12:02:53.452] [DEBUG] QUERY OK db=32.6ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "true", "kiosk_active", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792498, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.453] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:02:19Z", "value" => ""} [2026-08-21 12:02:53.487] [DEBUG] QUERY OK db=34.0ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:02:19Z", "sim_operator", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.487] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792499, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.488] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:02:19Z", "value" => "UNKNOWN"} [2026-08-21 12:02:53.510] [DEBUG] QUERY OK db=21.4ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "UNKNOWN", "sim_number", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792500, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.511] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:02:19Z", "value" => "UNKNOWN"} [2026-08-21 12:02:53.585] [DEBUG] QUERY OK db=73.8ms idle=23.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "UNKNOWN", "sim_iccid", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792501, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.587] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:02:19Z", "value" => "UNKNOWN"} [2026-08-21 12:02:53.636] [DEBUG] QUERY OK db=47.1ms queue=1.5ms idle=76.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "UNKNOWN", "sim_imsi", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792502, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.636] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:02:19Z", "value" => "UNKNOWN"} [2026-08-21 12:02:53.702] [DEBUG] QUERY OK db=65.7ms idle=51.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "UNKNOWN", "sim_iccid2", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.703] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792503, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.703] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:02:19Z", "value" => "UNKNOWN"} [2026-08-21 12:02:53.764] [DEBUG] QUERY OK db=60.7ms idle=67.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "UNKNOWN", "sim_imsi2", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792504, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.765] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:02:19Z", "value" => "1"} [2026-08-21 12:02:53.816] [DEBUG] QUERY OK db=51.3ms queue=0.1ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "1", "data_usage_mb", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792505, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.817] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:02:19Z", "value" => "0"} [2026-08-21 12:02:53.873] [DEBUG] QUERY OK db=56.0ms queue=0.1ms idle=52.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "0", "mobile_data_mb", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792506, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:53.875] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:02:19Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 12:02:53.912] [DEBUG] QUERY OK db=35.9ms queue=0.1ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:19Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77922, ~N[2026-08-21 12:02:53], ~N[2026-08-21 12:02:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:53.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792507, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T12:02:19Z", message: nil, status_log_id: 77922, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:53], updated_at: ~N[2026-08-21 12:02:53]}} [2026-08-21 12:02:54.214] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:02:54.214] [INFO ] Incoming JSON payload: {"oid":"196c4813-5ab6-412a-b34c-4a484b6f4539","sn":"98251226730001","uploadTime":"2026-08-21T12:02:53Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:02:53Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:02:54.216] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "196c4813-5ab6-412a-b34c-4a484b6f4539", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:02:53Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:02:53Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:02:53Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:02:53Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:02:53Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:02:53Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:02:53Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:02:53Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:02:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:02:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:02:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:02:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:02:53Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:02:53Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:02:53Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:02:53Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:02:53Z", "vendor" => "morefun"} [2026-08-21 12:02:54.216] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:02:54.216] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:02:54.216] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:02:54.217] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=304.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-08-21 12:02:54.218] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=247.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-08-21 12:02:54.218] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:02:54.220] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=1.1ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:02:54.298] [DEBUG] QUERY OK source="tms_terminals" db=36.0ms queue=41.1ms idle=2.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 12:02:54], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:02:54.298] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:02:54.299] [INFO ] Event published: terminal_updated [2026-08-21 12:02:54.299] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:02:54.302] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.9ms queue=0.1ms idle=80.3ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:02:54], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:02:54.300] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:02:54.303] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:02:54.303] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=4.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:02:54.303] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms idle=0.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:02:54.304] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:02:54.373] [DEBUG] QUERY OK source="tms_terminals" db=28.6ms queue=41.7ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 12:02:54], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:02:54.373] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:02:54.374] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=69.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-08-21 12:02:54.436] [DEBUG] QUERY OK source="tms_terminals" db=20.4ms queue=41.6ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:02:54], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:02:54.506] [DEBUG] QUERY OK db=68.8ms idle=63.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "196c4813-5ab6-412a-b34c-4a484b6f4539", "2026-08-21T12:02:53Z", ~N[2026-08-21 12:02:54], ~N[2026-08-21 12:02:54]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:02:54.507] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77923, oid: "196c4813-5ab6-412a-b34c-4a484b6f4539", upload_time: "2026-08-21T12:02:53Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:54], updated_at: ~N[2026-08-21 12:02:54]} [2026-08-21 12:02:54.512] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:02:53Z", "value" => "morefun"} [2026-08-21 12:02:54.601] [DEBUG] QUERY OK db=79.4ms queue=4.6ms idle=80.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:53Z", "morefun", "vendor", 77923, ~N[2026-08-21 12:02:54], ~N[2026-08-21 12:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:54.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792508, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:54], updated_at: ~N[2026-08-21 12:02:54]}} [2026-08-21 12:02:54.601] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:02:53Z", "value" => "kiosk_launcher"} [2026-08-21 12:02:54.669] [DEBUG] QUERY OK db=67.4ms idle=95.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:53Z", "kiosk_launcher", "model", 77923, ~N[2026-08-21 12:02:54], ~N[2026-08-21 12:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:54.669] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792509, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:54], updated_at: ~N[2026-08-21 12:02:54]}} [2026-08-21 12:02:54.669] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:02:53Z", "value" => "1.0"} [2026-08-21 12:02:54.701] [DEBUG] QUERY OK db=31.1ms idle=69.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:53Z", "1.0", "app_version", 77923, ~N[2026-08-21 12:02:54], ~N[2026-08-21 12:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:54.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792510, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:54], updated_at: ~N[2026-08-21 12:02:54]}} [2026-08-21 12:02:54.701] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:02:53Z", "value" => "13"} [2026-08-21 12:02:54.743] [DEBUG] QUERY OK db=41.4ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:53Z", "13", "android_version", 77923, ~N[2026-08-21 12:02:54], ~N[2026-08-21 12:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:54.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792511, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:54], updated_at: ~N[2026-08-21 12:02:54]}} [2026-08-21 12:02:54.744] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:02:53Z", "value" => "921"} [2026-08-21 12:02:54.775] [DEBUG] QUERY OK db=30.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-08-21T12:02:53Z", "921", "ram_free_mb", 77923, ~N[2026-08-21 12:02:54], ~N[2026-08-21 12:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:54.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792512, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:54], updated_at: ~N[2026-08-21 12:02:54]}} [2026-08-21 12:02:54.776] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:02:53Z", "value" => "WIFI"} [2026-08-21 12:02:54.814] [DEBUG] QUERY OK db=38.0ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:53Z", "WIFI", "network_type", 77923, ~N[2026-08-21 12:02:54], ~N[2026-08-21 12:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:54.815] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792513, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:54], updated_at: ~N[2026-08-21 12:02:54]}} [2026-08-21 12:02:54.815] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:02:53Z", "value" => "true"} [2026-08-21 12:02:54.845] [DEBUG] QUERY OK db=29.0ms queue=1.3ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:53Z", "true", "kiosk_active", 77923, ~N[2026-08-21 12:02:54], ~N[2026-08-21 12:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:54.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792514, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:54], updated_at: ~N[2026-08-21 12:02:54]}} [2026-08-21 12:02:54.846] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:02:53Z", "value" => ""} [2026-08-21 12:02:54.902] [DEBUG] QUERY OK db=55.6ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:02:53Z", "sim_operator", 77923, ~N[2026-08-21 12:02:54], ~N[2026-08-21 12:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:54.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792515, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:54], updated_at: ~N[2026-08-21 12:02:54]}} [2026-08-21 12:02:54.902] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:02:53Z", "value" => "UNKNOWN"} [2026-08-21 12:02:54.925] [DEBUG] QUERY OK db=22.3ms queue=0.1ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:53Z", "UNKNOWN", "sim_number", 77923, ~N[2026-08-21 12:02:54], ~N[2026-08-21 12:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:54.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792516, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:54], updated_at: ~N[2026-08-21 12:02:54]}} [2026-08-21 12:02:54.926] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:02:53Z", "value" => "UNKNOWN"} [2026-08-21 12:02:54.946] [DEBUG] QUERY OK db=19.9ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:53Z", "UNKNOWN", "sim_iccid", 77923, ~N[2026-08-21 12:02:54], ~N[2026-08-21 12:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:54.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792517, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:54], updated_at: ~N[2026-08-21 12:02:54]}} [2026-08-21 12:02:54.948] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:02:53Z", "value" => "UNKNOWN"} [2026-08-21 12:02:54.994] [DEBUG] QUERY OK db=45.1ms queue=0.5ms idle=22.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:53Z", "UNKNOWN", "sim_imsi", 77923, ~N[2026-08-21 12:02:54], ~N[2026-08-21 12:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:54.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792518, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:54], updated_at: ~N[2026-08-21 12:02:54]}} [2026-08-21 12:02:54.994] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:02:53Z", "value" => "UNKNOWN"} [2026-08-21 12:02:55.019] [DEBUG] QUERY OK db=22.9ms queue=0.1ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:53Z", "UNKNOWN", "sim_iccid2", 77923, ~N[2026-08-21 12:02:54], ~N[2026-08-21 12:02:54]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:55.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792519, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:54], updated_at: ~N[2026-08-21 12:02:54]}} [2026-08-21 12:02:55.021] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:02:53Z", "value" => "UNKNOWN"} [2026-08-21 12:02:55.049] [DEBUG] QUERY OK db=27.6ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:53Z", "UNKNOWN", "sim_imsi2", 77923, ~N[2026-08-21 12:02:55], ~N[2026-08-21 12:02:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:55.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792520, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:55], updated_at: ~N[2026-08-21 12:02:55]}} [2026-08-21 12:02:55.051] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:02:53Z", "value" => "35"} [2026-08-21 12:02:55.109] [DEBUG] QUERY OK db=57.2ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:53Z", "35", "data_usage_mb", 77923, ~N[2026-08-21 12:02:55], ~N[2026-08-21 12:02:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:55.110] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792521, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:55], updated_at: ~N[2026-08-21 12:02:55]}} [2026-08-21 12:02:55.110] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:02:53Z", "value" => "0"} [2026-08-21 12:02:55.133] [DEBUG] QUERY OK db=22.6ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:53Z", "0", "mobile_data_mb", 77923, ~N[2026-08-21 12:02:55], ~N[2026-08-21 12:02:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:55.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792522, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:55], updated_at: ~N[2026-08-21 12:02:55]}} [2026-08-21 12:02:55.134] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:02:53Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:02:55.178] [DEBUG] QUERY OK db=42.3ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:53Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77923, ~N[2026-08-21 12:02:55], ~N[2026-08-21 12:02:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:55.179] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792523, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:02:53Z", message: nil, status_log_id: 77923, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:55], updated_at: ~N[2026-08-21 12:02:55]}} [2026-08-21 12:02:55.410] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 12:02:55.410] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"3686038-02-28T00:05:01Z","org.device":[{"itemkey":"status","value":"online","timestamp":"3686038-02-28T00:05:01Z","message":"Device Connected"}]} [2026-08-21 12:02:55.410] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "3686038-02-28T00:05:01Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "3686038-02-28T00:05:01Z"} [2026-08-21 12:02:55.411] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:02:55.413] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=277.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:02:55.414] [INFO ] Terminal updated: 61250415798001 [2026-08-21 12:02:55.474] [DEBUG] QUERY OK source="tms_terminals" db=57.8ms queue=1.4ms idle=237.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:02:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:02:55.475] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=60.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:02:55.515] [DEBUG] QUERY OK source="tms_terminals" db=39.0ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:02:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:02:55.577] [DEBUG] QUERY OK db=61.5ms idle=39.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "3686038-02-28T00:05:01Z", ~N[2026-08-21 12:02:55], ~N[2026-08-21 12:02:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:02:55.577] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77924, oid: "org-id-placeholder", upload_time: "3686038-02-28T00:05:01Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:55], updated_at: ~N[2026-08-21 12:02:55]} [2026-08-21 12:02:55.577] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "3686038-02-28T00:05:01Z", "value" => "online"} [2026-08-21 12:02:55.634] [DEBUG] QUERY OK db=55.9ms queue=0.1ms idle=62.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "3686038-02-28T00:05:01Z", "online", "status", 77924, ~N[2026-08-21 12:02:55], ~N[2026-08-21 12:02:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:02:55.634] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792524, itemkey: "status", value: "online", timestamp: "3686038-02-28T00:05:01Z", message: "Device Connected", status_log_id: 77924, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:02:55], updated_at: ~N[2026-08-21 12:02:55]}} [2026-08-21 12:02:55.634] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-08-21 12:02:55.635] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=57.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:02:55], 1] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-08-21 12:02:55.636] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:02:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-08-21 12:03:23.118] [INFO ] Received status update for terminal 98251226730002 [2026-08-21 12:03:23.118] [INFO ] Incoming JSON payload: {"oid":"c67a74d2-164e-4769-aad8-6a1874d15248","sn":"98251226730002","uploadTime":"2026-08-21T12:02:49Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"ram_free_mb","value":"992","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"data_usage_mb","value":"1","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:02:49Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.res (truncated) [2026-08-21 12:03:23.123] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c67a74d2-164e-4769-aad8-6a1874d15248", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:02:49Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:02:49Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:02:49Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:02:49Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:02:49Z", "value" => "992"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:02:49Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:02:49Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:02:49Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:02:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:02:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:02:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:02:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:02:49Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:02:49Z", "value" => "1"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:02:49Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:02:49Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...}], "sn" => "98251226730002", "uploadTime" => "2026-08-21T12:02:49Z", "vendor" => "morefun"} [2026-08-21 12:03:23.124] [INFO ] Extracted versions for 98251226730002: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:03:23.124] [INFO ] Detected missing versions for 98251226730002, triggering auto-push [2026-08-21 12:03:23.124] [INFO ] AutoPushService: Triggering auto-push for 98251226730002 (morefun kiosk_launcher) - missing version [2026-08-21 12:03:23.128] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=3.2ms idle=1000.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-08-21 12:03:23.129] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.1ms idle=0.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 12:03:23.129] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:03:23.131] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=0.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:03:23.132] [INFO ] Terminal updated: 98251226730002 [2026-08-21 12:03:23.165] [DEBUG] QUERY OK source="tms_terminals" db=33.1ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:03:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:03:23.165] [DEBUG] VersionComplianceChecker: 98251226730002 — all versions compliant [2026-08-21 12:03:23.166] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=33.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730002"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:03:23.231] [DEBUG] QUERY OK source="tms_terminals" db=64.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:03:23], 13] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:03:23.294] [DEBUG] QUERY OK db=62.8ms idle=64.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [13, "c67a74d2-164e-4769-aad8-6a1874d15248", "2026-08-21T12:02:49Z", ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:03:23.294] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77925, oid: "c67a74d2-164e-4769-aad8-6a1874d15248", upload_time: "2026-08-21T12:02:49Z", terminal_id: 13, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]} [2026-08-21 12:03:23.295] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:02:49Z", "value" => "morefun"} [2026-08-21 12:03:23.335] [DEBUG] QUERY OK db=39.6ms idle=63.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "morefun", "vendor", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:23.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792525, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:23.339] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:02:49Z", "value" => "kiosk_launcher"} [2026-08-21 12:03:23.386] [DEBUG] QUERY OK db=46.8ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "kiosk_launcher", "model", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:23.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792526, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:23.388] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:02:49Z", "value" => "1.0"} [2026-08-21 12:03:23.424] [DEBUG] QUERY OK db=32.7ms queue=1.9ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "1.0", "app_version", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:23.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792527, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:23.425] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:02:49Z", "value" => "13"} [2026-08-21 12:03:23.464] [DEBUG] QUERY OK db=37.9ms queue=0.6ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "13", "android_version", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:23.464] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792528, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:23.464] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:02:49Z", "value" => "992"} [2026-08-21 12:03:23.487] [DEBUG] QUERY OK db=22.5ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "992", "ram_free_mb", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:23.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792529, itemkey: "ram_free_mb", value: "992", timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:23.488] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:02:49Z", "value" => "WIFI"} [2026-08-21 12:03:23.543] [DEBUG] QUERY OK db=54.8ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "WIFI", "network_type", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:23.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792530, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:23.544] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:02:49Z", "value" => "true"} [2026-08-21 12:03:23.608] [DEBUG] QUERY OK db=62.9ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "true", "kiosk_active", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:23.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792531, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:23.609] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:02:49Z", "value" => ""} [2026-08-21 12:03:23.673] [DEBUG] QUERY OK db=64.5ms idle=66.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:02:49Z", "sim_operator", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:23.674] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792532, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:23.678] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:02:49Z", "value" => "UNKNOWN"} [2026-08-21 12:03:23.732] [DEBUG] QUERY OK db=53.6ms idle=70.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "UNKNOWN", "sim_number", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:23.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792533, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:23.732] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:02:49Z", "value" => "UNKNOWN"} [2026-08-21 12:03:23.763] [DEBUG] QUERY OK db=23.7ms queue=2.6ms idle=63.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "UNKNOWN", "sim_iccid", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:23.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792534, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:23.764] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:02:49Z", "value" => "UNKNOWN"} [2026-08-21 12:03:23.824] [DEBUG] QUERY OK db=59.5ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "UNKNOWN", "sim_imsi", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:23.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792535, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:23.826] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:02:49Z", "value" => "UNKNOWN"} [2026-08-21 12:03:23.869] [DEBUG] QUERY OK db=43.2ms idle=62.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "UNKNOWN", "sim_iccid2", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:23.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792536, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:23.870] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:02:49Z", "value" => "UNKNOWN"} [2026-08-21 12:03:23.915] [DEBUG] QUERY OK db=43.7ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "UNKNOWN", "sim_imsi2", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:23.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792537, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:23.920] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:02:49Z", "value" => "1"} [2026-08-21 12:03:23.994] [DEBUG] QUERY OK db=72.4ms idle=52.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "1", "data_usage_mb", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:23.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792538, itemkey: "data_usage_mb", value: "1", timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:23.994] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:02:49Z", "value" => "0"} [2026-08-21 12:03:24.057] [DEBUG] QUERY OK db=62.8ms idle=78.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "0", "mobile_data_mb", 77925, ~N[2026-08-21 12:03:23], ~N[2026-08-21 12:03:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:24.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792539, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:23], updated_at: ~N[2026-08-21 12:03:23]}} [2026-08-21 12:03:24.061] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:02:49Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ...} [2026-08-21 12:03:24.111] [DEBUG] QUERY OK db=46.8ms idle=69.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:02:49Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., "installed_apps", 77925, ~N[2026-08-21 12:03:24], ~N[2026-08-21 12:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:24.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792540, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), Employee Attendance & Salary Calculator (com.gsbusiness.employeeattendancesalarycalculator), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), Kiosk Launcher (com.frog8.kiosklauncher), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), S" <> ..., timestamp: "2026-08-21T12:02:49Z", message: nil, status_log_id: 77925, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:24], updated_at: ~N[2026-08-21 12:03:24]}} [2026-08-21 12:03:24.340] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:03:24.340] [INFO ] Incoming JSON payload: {"oid":"45f603fb-7a1b-45df-9d6f-5fd8be3b85b1","sn":"98251226730001","uploadTime":"2026-08-21T12:03:23Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"ram_free_mb","value":"918","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:03:23Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:03:24.344] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "45f603fb-7a1b-45df-9d6f-5fd8be3b85b1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:03:23Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:03:23Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:03:23Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:03:23Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:03:23Z", "value" => "918"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:03:23Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:03:23Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:03:23Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:03:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:03:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:03:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:03:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:03:23Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:03:23Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:03:23Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:03:23Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:03:23Z", "vendor" => "morefun"} [2026-08-21 12:03:24.344] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:03:24.344] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:03:24.344] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:03:24.345] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=234.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-08-21 12:03:24.347] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=209.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-08-21 12:03:24.347] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:03:24.349] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=2.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:03:24.349] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:03:24.388] [DEBUG] QUERY OK source="tms_terminals" db=38.6ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:03:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:03:24.388] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:03:24.392] [DEBUG] QUERY OK source="tms_terminals" db=3.9ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:03:24.434] [DEBUG] QUERY OK source="tms_terminals" db=41.0ms idle=4.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:03:24], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:03:24.498] [DEBUG] QUERY OK db=61.1ms queue=2.8ms idle=41.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "45f603fb-7a1b-45df-9d6f-5fd8be3b85b1", "2026-08-21T12:03:23Z", ~N[2026-08-21 12:03:24], ~N[2026-08-21 12:03:24]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:03:24.498] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77926, oid: "45f603fb-7a1b-45df-9d6f-5fd8be3b85b1", upload_time: "2026-08-21T12:03:23Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:24], updated_at: ~N[2026-08-21 12:03:24]} [2026-08-21 12:03:24.499] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:03:23Z", "value" => "morefun"} [2026-08-21 12:03:24.541] [DEBUG] QUERY OK db=41.4ms idle=65.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "morefun", "vendor", 77926, ~N[2026-08-21 12:03:24], ~N[2026-08-21 12:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:24.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792541, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:24], updated_at: ~N[2026-08-21 12:03:24]}} [2026-08-21 12:03:24.542] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:03:23Z", "value" => "kiosk_launcher"} [2026-08-21 12:03:24.594] [DEBUG] QUERY OK db=52.0ms queue=0.2ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "kiosk_launcher", "model", 77926, ~N[2026-08-21 12:03:24], ~N[2026-08-21 12:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:24.595] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792542, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:24], updated_at: ~N[2026-08-21 12:03:24]}} [2026-08-21 12:03:24.595] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:03:23Z", "value" => "1.0"} [2026-08-21 12:03:24.649] [DEBUG] QUERY OK db=54.2ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "1.0", "app_version", 77926, ~N[2026-08-21 12:03:24], ~N[2026-08-21 12:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:24.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792543, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:24], updated_at: ~N[2026-08-21 12:03:24]}} [2026-08-21 12:03:24.650] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:03:23Z", "value" => "13"} [2026-08-21 12:03:24.700] [DEBUG] QUERY OK db=50.3ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "13", "android_version", 77926, ~N[2026-08-21 12:03:24], ~N[2026-08-21 12:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:24.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792544, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:24], updated_at: ~N[2026-08-21 12:03:24]}} [2026-08-21 12:03:24.701] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:03:23Z", "value" => "918"} [2026-08-21 12:03:24.744] [DEBUG] QUERY OK db=42.5ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "918", "ram_free_mb", 77926, ~N[2026-08-21 12:03:24], ~N[2026-08-21 12:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:24.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792545, itemkey: "ram_free_mb", value: "918", timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:24], updated_at: ~N[2026-08-21 12:03:24]}} [2026-08-21 12:03:24.744] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:03:23Z", "value" => "WIFI"} [2026-08-21 12:03:24.794] [DEBUG] QUERY OK db=45.3ms queue=3.9ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "WIFI", "network_type", 77926, ~N[2026-08-21 12:03:24], ~N[2026-08-21 12:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:24.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792546, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:24], updated_at: ~N[2026-08-21 12:03:24]}} [2026-08-21 12:03:24.795] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:03:23Z", "value" => "true"} [2026-08-21 12:03:24.826] [DEBUG] QUERY OK db=28.4ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "true", "kiosk_active", 77926, ~N[2026-08-21 12:03:24], ~N[2026-08-21 12:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:24.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792547, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:24], updated_at: ~N[2026-08-21 12:03:24]}} [2026-08-21 12:03:24.826] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:03:23Z", "value" => ""} [2026-08-21 12:03:24.878] [DEBUG] QUERY OK db=51.6ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:03:23Z", "sim_operator", 77926, ~N[2026-08-21 12:03:24], ~N[2026-08-21 12:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:24.878] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792548, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:24], updated_at: ~N[2026-08-21 12:03:24]}} [2026-08-21 12:03:24.878] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:03:23Z", "value" => "UNKNOWN"} [2026-08-21 12:03:24.917] [DEBUG] QUERY OK db=38.2ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "UNKNOWN", "sim_number", 77926, ~N[2026-08-21 12:03:24], ~N[2026-08-21 12:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:24.917] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792549, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:24], updated_at: ~N[2026-08-21 12:03:24]}} [2026-08-21 12:03:24.917] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:03:23Z", "value" => "UNKNOWN"} [2026-08-21 12:03:24.960] [DEBUG] QUERY OK db=42.0ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "UNKNOWN", "sim_iccid", 77926, ~N[2026-08-21 12:03:24], ~N[2026-08-21 12:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:24.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792550, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:24], updated_at: ~N[2026-08-21 12:03:24]}} [2026-08-21 12:03:24.960] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:03:23Z", "value" => "UNKNOWN"} [2026-08-21 12:03:25.005] [DEBUG] QUERY OK db=42.3ms queue=1.4ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "UNKNOWN", "sim_imsi", 77926, ~N[2026-08-21 12:03:24], ~N[2026-08-21 12:03:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:25.006] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792551, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:24], updated_at: ~N[2026-08-21 12:03:24]}} [2026-08-21 12:03:25.006] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:03:23Z", "value" => "UNKNOWN"} [2026-08-21 12:03:25.060] [DEBUG] QUERY OK db=53.6ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "UNKNOWN", "sim_iccid2", 77926, ~N[2026-08-21 12:03:25], ~N[2026-08-21 12:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:25.060] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792552, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:25], updated_at: ~N[2026-08-21 12:03:25]}} [2026-08-21 12:03:25.060] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:03:23Z", "value" => "UNKNOWN"} [2026-08-21 12:03:25.168] [DEBUG] QUERY OK db=107.1ms queue=0.1ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "UNKNOWN", "sim_imsi2", 77926, ~N[2026-08-21 12:03:25], ~N[2026-08-21 12:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:25.168] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792553, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:25], updated_at: ~N[2026-08-21 12:03:25]}} [2026-08-21 12:03:25.168] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:03:23Z", "value" => "35"} [2026-08-21 12:03:25.202] [DEBUG] QUERY OK db=33.1ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "35", "data_usage_mb", 77926, ~N[2026-08-21 12:03:25], ~N[2026-08-21 12:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:25.202] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792554, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:25], updated_at: ~N[2026-08-21 12:03:25]}} [2026-08-21 12:03:25.202] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:03:23Z", "value" => "0"} [2026-08-21 12:03:25.226] [DEBUG] QUERY OK db=23.1ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "0", "mobile_data_mb", 77926, ~N[2026-08-21 12:03:25], ~N[2026-08-21 12:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:25.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792555, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:25], updated_at: ~N[2026-08-21 12:03:25]}} [2026-08-21 12:03:25.230] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:03:23Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:03:25.276] [DEBUG] QUERY OK db=44.6ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:03:23Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77926, ~N[2026-08-21 12:03:25], ~N[2026-08-21 12:03:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:03:25.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792556, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:03:23Z", message: nil, status_log_id: 77926, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:03:25], updated_at: ~N[2026-08-21 12:03:25]}} [2026-08-21 12:07:52.364] [INFO ] [Ysp.Scheduler] Started. SFTP in 14h 52m, MIS in 19h 52m [2026-08-21 12:07:52.399] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 12:07:52.407] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 12:07:53.982] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 12:07:53.983] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 12:07:53.983] [INFO ] Building initial filter cache... [2026-08-21 12:07:53.998] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=2.6ms idle=979.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-08-21 12:07:54.008] [DEBUG] QUERY OK source="filter_usage" db=0.4ms queue=0.5ms idle=289.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-08-21 12:07:54.009] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 12:07:54.082] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-08-21 12:07:54.099] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 12:07:54.107] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-08-21 12:07:55.605] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 12:07:55.605] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T16:07:53Z","org.device":[{"itemkey":"battery","value":48,"timestamp":"2026-08-21T16:07:53Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T16:07:53Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T16:07:53Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T16:07:53Z","message":""}]} [2026-08-21 12:07:55.615] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T16:07:53Z", "value" => 48}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T16:07:53Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T16:07:53Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T16:07:53Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T16:07:53Z"} [2026-08-21 12:07:55.615] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:07:55.638] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=3.1ms idle=1620.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:07:55.667] [INFO ] Terminal updated: 61250415798001 [2026-08-21 12:07:56.714] [DEBUG] QUERY OK source="tms_terminals" db=1038.0ms queue=2.8ms idle=648.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:07:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:07:56.715] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=689.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:07:56.781] [DEBUG] QUERY OK source="tms_terminals" db=58.3ms idle=13.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:07:56], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:07:56.868] [DEBUG] QUERY OK db=56.3ms queue=0.4ms idle=96.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T16:07:53Z", ~N[2026-08-21 12:07:56], ~N[2026-08-21 12:07:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:07:56.924] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77927, oid: "org-id-placeholder", upload_time: "2026-08-21T16:07:53Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:56], updated_at: ~N[2026-08-21 12:07:56]} [2026-08-21 12:07:56.925] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T16:07:53Z", "value" => 48} [2026-08-21 12:07:56.957] [DEBUG] QUERY OK db=27.3ms queue=2.0ms idle=144.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:07:53Z", "48", "battery", 77927, ~N[2026-08-21 12:07:56], ~N[2026-08-21 12:07:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:56.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792557, itemkey: "battery", value: "48", timestamp: "2026-08-21T16:07:53Z", message: nil, status_log_id: 77927, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:56], updated_at: ~N[2026-08-21 12:07:56]}} [2026-08-21 12:07:56.958] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T16:07:53Z", "value" => 50} [2026-08-21 12:07:56.993] [DEBUG] QUERY OK db=34.0ms queue=0.5ms idle=89.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T16:07:53Z", "50", "memory", 77927, ~N[2026-08-21 12:07:56], ~N[2026-08-21 12:07:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:56.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792558, itemkey: "memory", value: "50", timestamp: "2026-08-21T16:07:53Z", message: "Normal", status_log_id: 77927, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:56], updated_at: ~N[2026-08-21 12:07:56]}} [2026-08-21 12:07:56.994] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T16:07:53Z", "value" => 50} [2026-08-21 12:07:57.031] [DEBUG] QUERY OK db=36.5ms queue=0.1ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:07:53Z", "50", "cpu", 77927, ~N[2026-08-21 12:07:56], ~N[2026-08-21 12:07:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.031] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792559, itemkey: "cpu", value: "50", timestamp: "2026-08-21T16:07:53Z", message: nil, status_log_id: 77927, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:56], updated_at: ~N[2026-08-21 12:07:56]}} [2026-08-21 12:07:57.032] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T16:07:53Z", "value" => "online"} [2026-08-21 12:07:57.073] [DEBUG] QUERY OK db=40.3ms queue=0.2ms idle=3.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:07:53Z", "online", "network", 77927, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792560, itemkey: "network", value: "online", timestamp: "2026-08-21T16:07:53Z", message: nil, status_log_id: 77927, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.074] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 12:07:57.074] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:07:57.076] [INFO ] Incoming JSON payload: {"oid":"e422af80-bf81-40da-99f7-ec6905bf3af4","sn":"98251226730001","uploadTime":"2026-08-21T12:07:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:07:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:07:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:07:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:07:55Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T12:07:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:07:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:07:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:07:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:07:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:07:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:07:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:07:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:07:55Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:07:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:07:57.083] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e422af80-bf81-40da-99f7-ec6905bf3af4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:07:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:07:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:07:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:07:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:07:55Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:07:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:07:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:07:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:07:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:07:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:07:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:07:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:07:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:07:55Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:07:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:07:55Z", "vendor" => "morefun"} [2026-08-21 12:07:57.083] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:07:57.114] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:07:57.114] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:07:57.130] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=2.4ms idle=95.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 12:07:57.132] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=1.7ms idle=56.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-08-21 12:07:57.132] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:07:57.139] [DEBUG] QUERY OK source="tms_terminals" db=6.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:07:57.139] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:07:57.178] [DEBUG] QUERY OK source="tms_terminals" db=37.6ms queue=1.2ms idle=7.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:07:57], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:07:57.185] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:07:57.186] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=46.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:07:57.245] [DEBUG] QUERY OK source="tms_terminals" db=57.2ms idle=9.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:07:57], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:07:57.264] [DEBUG] QUERY OK db=17.3ms queue=1.3ms idle=59.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e422af80-bf81-40da-99f7-ec6905bf3af4", "2026-08-21T12:07:55Z", ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:07:57.265] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77928, oid: "e422af80-bf81-40da-99f7-ec6905bf3af4", upload_time: "2026-08-21T12:07:55Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]} [2026-08-21 12:07:57.265] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:07:55Z", "value" => "morefun"} [2026-08-21 12:07:57.324] [DEBUG] QUERY OK db=58.7ms idle=19.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07:55Z", "morefun", "vendor", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792561, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.325] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:07:55Z", "value" => "kiosk_launcher"} [2026-08-21 12:07:57.358] [DEBUG] QUERY OK db=32.3ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07:55Z", "kiosk_launcher", "model", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792562, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.358] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:07:55Z", "value" => "1.0"} [2026-08-21 12:07:57.400] [DEBUG] QUERY OK db=41.3ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07:55Z", "1.0", "app_version", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.400] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792563, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.400] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:07:55Z", "value" => "13"} [2026-08-21 12:07:57.437] [DEBUG] QUERY OK db=35.9ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07:55Z", "13", "android_version", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.437] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792564, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.437] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:07:55Z", "value" => "921"} [2026-08-21 12:07:57.512] [DEBUG] QUERY OK db=74.4ms queue=0.1ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07:55Z", "921", "ram_free_mb", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792565, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.512] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:07:55Z", "value" => "WIFI"} [2026-08-21 12:07:57.547] [DEBUG] QUERY OK db=34.1ms idle=76.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07:55Z", "WIFI", "network_type", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792566, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.547] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:07:55Z", "value" => "true"} [2026-08-21 12:07:57.590] [DEBUG] QUERY OK db=42.8ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07:55Z", "true", "kiosk_active", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792567, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.591] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:07:55Z", "value" => ""} [2026-08-21 12:07:57.622] [DEBUG] QUERY OK db=30.8ms queue=0.4ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:07:55Z", "sim_operator", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.623] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792568, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.623] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:07:55Z", "value" => "UNKNOWN"} [2026-08-21 12:07:57.654] [DEBUG] QUERY OK db=30.8ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07:55Z", "UNKNOWN", "sim_number", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792569, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.655] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:07:55Z", "value" => "UNKNOWN"} [2026-08-21 12:07:57.690] [DEBUG] QUERY OK db=35.2ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07:55Z", "UNKNOWN", "sim_iccid", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.691] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792570, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.691] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:07:55Z", "value" => "UNKNOWN"} [2026-08-21 12:07:57.740] [DEBUG] QUERY OK db=48.4ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07:55Z", "UNKNOWN", "sim_imsi", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792571, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.740] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:07:55Z", "value" => "UNKNOWN"} [2026-08-21 12:07:57.787] [DEBUG] QUERY OK db=45.7ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07:55Z", "UNKNOWN", "sim_iccid2", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792572, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.789] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:07:55Z", "value" => "UNKNOWN"} [2026-08-21 12:07:57.834] [DEBUG] QUERY OK db=45.2ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07:55Z", "UNKNOWN", "sim_imsi2", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.834] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792573, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.838] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:07:55Z", "value" => "35"} [2026-08-21 12:07:57.876] [DEBUG] QUERY OK db=38.3ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07:55Z", "35", "data_usage_mb", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792574, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.877] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:07:55Z", "value" => "0"} [2026-08-21 12:07:57.935] [DEBUG] QUERY OK db=52.6ms queue=0.1ms idle=48.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07:55Z", "0", "mobile_data_mb", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.936] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792575, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:07:57.938] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:07:57.973] [DEBUG] QUERY OK db=30.4ms idle=65.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77928, ~N[2026-08-21 12:07:57], ~N[2026-08-21 12:07:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:07:57.975] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792576, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:07:55Z", message: nil, status_log_id: 77928, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:07:57], updated_at: ~N[2026-08-21 12:07:57]}} [2026-08-21 12:08:25.546] [INFO ] GET / [2026-08-21 12:08:25.596] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-08-21 12:08:25.686] [INFO ] Sent 200 in 139ms [2026-08-21 12:08:25.870] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:08:25.870] [INFO ] Incoming JSON payload: {"oid":"0cf32e3a-c8bf-440e-944e-b21fc8243b6f","sn":"98251226730001","uploadTime":"2026-08-21T12:08:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"ram_free_mb","value":"918","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:08:25Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:08:25.871] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0cf32e3a-c8bf-440e-944e-b21fc8243b6f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:08:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:08:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:08:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:08:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:08:25Z", "value" => "918"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:08:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:08:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:08:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:08:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:08:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:08:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:08:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:08:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:08:25Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:08:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:08:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:08:25Z", "vendor" => "morefun"} [2026-08-21 12:08:25.871] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:08:25.871] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:08:25.872] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:08:25.872] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=684.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-08-21 12:08:25.873] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=137.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-08-21 12:08:25.873] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:08:25.874] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:08:25.874] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:08:25.914] [DEBUG] QUERY OK source="tms_terminals" db=38.7ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:08:25], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:08:25.914] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:08:25.915] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=39.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:08:25.973] [DEBUG] QUERY OK source="tms_terminals" db=53.4ms idle=5.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:08:25], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:08:26.000] [DEBUG] QUERY OK db=25.9ms idle=58.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0cf32e3a-c8bf-440e-944e-b21fc8243b6f", "2026-08-21T12:08:25Z", ~N[2026-08-21 12:08:25], ~N[2026-08-21 12:08:25]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:08:26.001] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77929, oid: "0cf32e3a-c8bf-440e-944e-b21fc8243b6f", upload_time: "2026-08-21T12:08:25Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:25], updated_at: ~N[2026-08-21 12:08:25]} [2026-08-21 12:08:26.001] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:08:25Z", "value" => "morefun"} [2026-08-21 12:08:26.052] [DEBUG] QUERY OK db=50.6ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "morefun", "vendor", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792577, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.053] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:08:25Z", "value" => "kiosk_launcher"} [2026-08-21 12:08:26.092] [DEBUG] QUERY OK db=39.2ms queue=0.1ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "kiosk_launcher", "model", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792578, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.093] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:08:25Z", "value" => "1.0"} [2026-08-21 12:08:26.147] [DEBUG] QUERY OK db=53.7ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "1.0", "app_version", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.150] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792579, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.150] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:08:25Z", "value" => "13"} [2026-08-21 12:08:26.188] [DEBUG] QUERY OK db=36.9ms idle=58.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "13", "android_version", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792580, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.188] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:08:25Z", "value" => "918"} [2026-08-21 12:08:26.238] [DEBUG] QUERY OK db=46.9ms idle=2.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "918", "ram_free_mb", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.239] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792581, itemkey: "ram_free_mb", value: "918", timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.239] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:08:25Z", "value" => "WIFI"} [2026-08-21 12:08:26.270] [DEBUG] QUERY OK db=30.6ms queue=0.1ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "WIFI", "network_type", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792582, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.271] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:08:25Z", "value" => "true"} [2026-08-21 12:08:26.309] [DEBUG] QUERY OK db=37.5ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "true", "kiosk_active", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792583, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.309] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:08:25Z", "value" => ""} [2026-08-21 12:08:26.380] [DEBUG] QUERY OK db=70.1ms queue=0.3ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:08:25Z", "sim_operator", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792584, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.381] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:08:25Z", "value" => "UNKNOWN"} [2026-08-21 12:08:26.418] [DEBUG] QUERY OK db=36.0ms queue=0.6ms idle=72.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "UNKNOWN", "sim_number", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792585, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.419] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:08:25Z", "value" => "UNKNOWN"} [2026-08-21 12:08:26.464] [DEBUG] QUERY OK db=45.1ms idle=38.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "UNKNOWN", "sim_iccid", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.465] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792586, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.465] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:08:25Z", "value" => "UNKNOWN"} [2026-08-21 12:08:26.498] [DEBUG] QUERY OK db=32.7ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "UNKNOWN", "sim_imsi", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792587, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.499] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:08:25Z", "value" => "UNKNOWN"} [2026-08-21 12:08:26.538] [DEBUG] QUERY OK db=37.6ms queue=0.7ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "UNKNOWN", "sim_iccid2", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792588, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.539] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:08:25Z", "value" => "UNKNOWN"} [2026-08-21 12:08:26.602] [DEBUG] QUERY OK db=62.8ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "UNKNOWN", "sim_imsi2", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.604] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792589, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.604] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:08:25Z", "value" => "35"} [2026-08-21 12:08:26.793] [DEBUG] QUERY OK db=189.2ms idle=65.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "35", "data_usage_mb", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.794] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792590, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.794] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:08:25Z", "value" => "0"} [2026-08-21 12:08:26.840] [DEBUG] QUERY OK db=45.0ms idle=192.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "0", "mobile_data_mb", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792591, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:26.844] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:08:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:08:26.891] [DEBUG] QUERY OK db=45.1ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:25Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77929, ~N[2026-08-21 12:08:26], ~N[2026-08-21 12:08:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:26.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792592, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:08:25Z", message: nil, status_log_id: 77929, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:26], updated_at: ~N[2026-08-21 12:08:26]}} [2026-08-21 12:08:28.285] [INFO ] GET /images/favicon.png [2026-08-21 12:08:28.365] [DEBUG] ** (Phoenix.Router.NoRouteError) no route found for GET /images/favicon.png (PlatformWeb.Router) (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/phoenix/lib/phoenix/router.ex:541: PlatformWeb.Router.call/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.plug_builder_call/2 (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/plug/lib/plug/debugger.ex:155: PlatformWeb.Endpoint."call (overridable 3)"/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.call/2 (phoenix 1.7.21) lib/phoenix/endpoint/sync_code_reload_plug.ex:22: Phoenix.Endpoint.SyncCodeReloadPlug.do_call/4 (bandit 1.10.2) lib/bandit/pipeline.ex:131: Bandit.Pipeline.call_plug!/2 (bandit 1.10.2) lib/bandit/pipeline.ex:42: Bandit.Pipeline.run/5 (bandit 1.10.2) lib/bandit/http1/handler.ex:13: Bandit.HTTP1.Handler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:18: Bandit.DelegatingHandler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:8: Bandit.DelegatingHandler.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 [2026-08-21 12:08:36.130] [INFO ] GET /users/log_in [2026-08-21 12:08:36.131] [DEBUG] Processing with PlatformWeb.UserLoginLive.new/2 Parameters: %{} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-08-21 12:08:36.211] [INFO ] Sent 200 in 80ms [2026-08-21 12:08:38.039] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "dzsJST8QMwsOcFslISYFFBQJJnIRAi43ZkXpjZiC7DnAkQRpMSp-Z1bg", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 12:08:38.306] [DEBUG] MOUNT PlatformWeb.UserLoginLive Parameters: %{} Session: %{"_csrf_token" => "-PQ9UJZH945dJwWdYZV_K3LP"} [2026-08-21 12:08:38.306] [DEBUG] Replied in 253µs [2026-08-21 12:08:45.629] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 12:08:45.629] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T03:18:10Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T03:18:10Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T03:18:10Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T03:18:10Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T03:18:10Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T03:18:10Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T03:18:10Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T03:18:10Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T03:18:10Z","vendor":"MoreFun"} [2026-08-21 12:08:45.630] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:18:10Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:18:10Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:18:10Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:18:10Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:18:10Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:18:10Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:18:10Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:18:10Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T03:18:10Z", "vendor" => "MoreFun"} [2026-08-21 12:08:45.630] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:08:45.630] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 12:08:45.631] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 12:08:45.632] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1365.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-08-21 12:08:45.635] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=365.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 12:08:45.656] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms queue=12.4ms idle=11.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-08-21 12:08:45.669] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=2.0ms idle=31.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-08-21 12:08:45.682] [DEBUG] QUERY OK source="pos_terminal" db=1.1ms queue=1.7ms idle=23.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:08:45.710] [DEBUG] QUERY OK source="pos_merchant" db=0.5ms queue=23.8ms idle=16.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:08:45.719] [DEBUG] QUERY OK db=1.2ms queue=0.7ms idle=1969.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 ["123451234512345"] [2026-08-21 12:08:45.720] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:08:45.731] [DEBUG] QUERY OK source="pos_terminal_data" db=1.3ms queue=5.4ms idle=42.5ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:08:45.732] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 12:08:45.741] [DEBUG] QUERY OK source="address" db=1.0ms queue=1.4ms idle=28.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` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:08:45.742] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 12:08:45.806] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 12:08:47.343] [DEBUG] QUERY OK db=1368.9ms queue=2.5ms idle=216.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", "6d55526eb539003f2e811b6903f40f41e3beb83efe46fdbaceec6f9170e4f1f4", 4738, 932, ~U[2026-08-21 12:08:45Z], "priv/ota/98250623730001/params.zip", 19, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-08-21 12:08:45], ~N[2026-08-21 12:08:45]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:08:47.344] [INFO ] AutoPushService: Created push log 49052 for MF919 params.zip [2026-08-21 12:08:47.364] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 4738, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:08:47.364] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:08:47.368] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 12:08:47.388] [DEBUG] QUERY OK source="config_file_versions" db=6.8ms queue=4.2ms idle=100.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:08:47.403] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 12:08:47.462] [DEBUG] QUERY OK db=49.9ms queue=2.8ms idle=90.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", "50dc9ab16723743d7a42d5d2309f65a99d48584b7ac7c3d3bd3d6bd36b4543e3", 4898, 17947, ~U[2026-08-21 12:08:47Z], "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-08-21 12:08:47], ~N[2026-08-21 12:08:47]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:08:47.463] [INFO ] AutoPushService: Created push log 49053 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:08:47.463] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 4898, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:08:47.463] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:08:47.463] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 12:08:47.464] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=74.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-08-21 12:08:47.474] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 12:08:47.475] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=12.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:08:47.475] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 12:08:47.607] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:08:47.607] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:08:47.607] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:08:47.609] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms idle=142.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-08-21 12:08:47.609] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:08:47.609] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 12:08:47.613] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms idle=134.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 12:08:47.617] [INFO ] Terminal updated: 98250623730001 [2026-08-21 12:08:47.681] [DEBUG] QUERY OK source="tms_terminals" db=63.9ms queue=0.3ms idle=8.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:08:47], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:08:47.683] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.7ms idle=68.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-08-21 12:08:47.684] [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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:08:47.686] [DEBUG] QUERY OK source="config_file_versions" db=2.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-08-21 12:08:47.686] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:08:47.766] [DEBUG] QUERY OK source="parameter_push_logs" db=67.0ms queue=1.0ms idle=14.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 [19, "application", ~N[2026-08-21 11:38:47]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:08:47.767] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:08:47.767] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 12:08:47.769] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=80.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:08:47.772] [DEBUG] QUERY OK source="config_file_versions" db=2.1ms idle=3.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:08:47.777] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:08:47.778] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=8.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:08:47.836] [DEBUG] QUERY OK source="tms_terminals" db=55.4ms queue=1.7ms idle=6.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:08:47], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:08:47.885] [DEBUG] QUERY OK db=48.8ms idle=57.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T03:18:10Z", ~N[2026-08-21 12:08:47], ~N[2026-08-21 12:08:47]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:08:47.885] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77930, oid: "organization_id", upload_time: "2026-08-21T03:18:10Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:47], updated_at: ~N[2026-08-21 12:08:47]} [2026-08-21 12:08:47.886] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:18:10Z", "value" => "online"} [2026-08-21 12:08:47.910] [DEBUG] QUERY OK db=22.9ms queue=0.7ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T03:18:10Z", "online", "status", 77930, ~N[2026-08-21 12:08:47], ~N[2026-08-21 12:08:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:47.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792593, itemkey: "status", value: "online", timestamp: "2026-08-21T03:18:10Z", message: "Terminal status update", status_log_id: 77930, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:47], updated_at: ~N[2026-08-21 12:08:47]}} [2026-08-21 12:08:47.910] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 12:08:47.910] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:18:10Z", "value" => "51"} [2026-08-21 12:08:47.966] [DEBUG] QUERY OK db=51.6ms queue=0.3ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T03:18:10Z", "51", "battery", 77930, ~N[2026-08-21 12:08:47], ~N[2026-08-21 12:08:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:47.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792594, itemkey: "battery", value: "51", timestamp: "2026-08-21T03:18:10Z", message: "Battery level", status_log_id: 77930, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:47], updated_at: ~N[2026-08-21 12:08:47]}} [2026-08-21 12:08:47.967] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:18:10Z", "value" => "online"} [2026-08-21 12:08:48.004] [DEBUG] QUERY OK db=36.7ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T03:18:10Z", "online", "network", 77930, ~N[2026-08-21 12:08:47], ~N[2026-08-21 12:08:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:48.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792595, itemkey: "network", value: "online", timestamp: "2026-08-21T03:18:10Z", message: "Network connectivity", status_log_id: 77930, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:47], updated_at: ~N[2026-08-21 12:08:47]}} [2026-08-21 12:08:48.004] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 12:08:48.004] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:18:10Z", "value" => "0"} [2026-08-21 12:08:48.035] [DEBUG] QUERY OK db=30.6ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T03:18:10Z", "0", "cpu", 77930, ~N[2026-08-21 12:08:48], ~N[2026-08-21 12:08:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:48.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792596, itemkey: "cpu", value: "0", timestamp: "2026-08-21T03:18:10Z", message: "CPU usage percentage", status_log_id: 77930, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:48], updated_at: ~N[2026-08-21 12:08:48]}} [2026-08-21 12:08:48.036] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:18:10Z", "value" => "1.0.0"} [2026-08-21 12:08:48.099] [DEBUG] QUERY OK db=62.9ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T03:18:10Z", "1.0.0", "parameter_config", 77930, ~N[2026-08-21 12:08:48], ~N[2026-08-21 12:08:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:48.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792597, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T03:18:10Z", message: "Current parameters version", status_log_id: 77930, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:48], updated_at: ~N[2026-08-21 12:08:48]}} [2026-08-21 12:08:48.099] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:18:10Z", "value" => "1.0.1"} [2026-08-21 12:08:48.147] [DEBUG] QUERY OK db=46.8ms idle=64.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T03:18:10Z", "1.0.1", "emv_config", 77930, ~N[2026-08-21 12:08:48], ~N[2026-08-21 12:08:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:48.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792598, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T03:18:10Z", message: "Current EMV config version", status_log_id: 77930, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:48], updated_at: ~N[2026-08-21 12:08:48]}} [2026-08-21 12:08:48.147] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:18:10Z", "value" => ""} [2026-08-21 12:08:48.205] [DEBUG] QUERY OK db=56.9ms queue=0.6ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T03:18:10Z", "keys_config", 77930, ~N[2026-08-21 12:08:48], ~N[2026-08-21 12:08:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:48.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792599, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T03:18:10Z", message: "Current keys config version", status_log_id: 77930, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:48], updated_at: ~N[2026-08-21 12:08:48]}} [2026-08-21 12:08:48.206] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:18:10Z", "value" => "3.8.7.3"} [2026-08-21 12:08:48.285] [DEBUG] QUERY OK db=77.3ms queue=0.5ms idle=60.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T03:18:10Z", "3.8.7.3", "application", 77930, ~N[2026-08-21 12:08:48], ~N[2026-08-21 12:08:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:48.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792600, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T03:18:10Z", message: "Current application version", status_log_id: 77930, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:48], updated_at: ~N[2026-08-21 12:08:48]}} [2026-08-21 12:08:48.294] [WARN ] Unexpected async result [2026-08-21 12:08:48.294] [WARN ] Unexpected async result [2026-08-21 12:08:51.707] [INFO ] POST /users/log_in [2026-08-21 12:08:51.708] [DEBUG] Processing with PlatformWeb.UserSessionController.create/2 Parameters: %{"_csrf_token" => "dzsJST8QMwsOcFslISYFFBQJJnIRAi43ZkXpjZiC7DnAkQRpMSp-Z1bg", "user" => %{"email" => "demo@mercury.com", "password" => "[FILTERED]", "remember_me" => "on"}} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-08-21 12:08:51.736] [DEBUG] QUERY OK source="users" db=0.4ms queue=2.5ms idle=1785.4ms 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-08-21 12:08:52.264] [DEBUG] QUERY OK db=59.3ms queue=1.8ms idle=466.1ms INSERT INTO `users_tokens` (`context`,`token`,`user_id`,`inserted_at`) VALUES (?,?,?,?) ["session", <<177, 107, 124, 200, 63, 188, 94, 248, 108, 187, 132, 174, 244, 239, 226, 135, 253, 25, 40, 130, 159, 192, 244, 68, 199, 33, 6, 80, 73, 11, 225, 162>>, 3, ~U[2026-08-21 12:08:52Z]] ↳ DaProductApp.Users.generate_user_session_token/1, at: lib/da_product_app/users.ex:312 [2026-08-21 12:08:52.264] [INFO ] Sent 302 in 556ms [2026-08-21 12:08:52.345] [ERROR] ** (Plug.Conn.AlreadySentError) the response was already sent (plug 1.19.1) lib/plug/conn.ex:914: Plug.Conn.put_resp_header/3 (phoenix 1.7.21) lib/phoenix/controller.ex:495: Phoenix.Controller.redirect/2 (platform_web 0.1.0) lib/platform_web/controllers/user_session_controller.ex:1: PlatformWeb.UserSessionController.action/2 (platform_web 0.1.0) lib/platform_web/controllers/user_session_controller.ex:1: PlatformWeb.UserSessionController.phoenix_controller_pipeline/2 (phoenix 1.7.21) lib/phoenix/router.ex:484: Phoenix.Router.__call__/5 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.plug_builder_call/2 (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/plug/lib/plug/debugger.ex:155: PlatformWeb.Endpoint."call (overridable 3)"/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.call/2 (phoenix 1.7.21) lib/phoenix/endpoint/sync_code_reload_plug.ex:22: Phoenix.Endpoint.SyncCodeReloadPlug.do_call/4 (bandit 1.10.2) lib/bandit/pipeline.ex:131: Bandit.Pipeline.call_plug!/2 (bandit 1.10.2) lib/bandit/pipeline.ex:42: Bandit.Pipeline.run/5 (bandit 1.10.2) lib/bandit/http1/handler.ex:13: Bandit.HTTP1.Handler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:18: Bandit.DelegatingHandler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:8: Bandit.DelegatingHandler.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 [2026-08-21 12:08:52.793] [INFO ] GET /dashboard [2026-08-21 12:08:52.793] [DEBUG] Processing with PlatformWeb.DashboardLive.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 12:08:52.803] [DEBUG] QUERY OK source="users_tokens" db=0.5ms queue=2.5ms idle=844.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)) [<<177, 107, 124, 200, 63, 188, 94, 248, 108, 187, 132, 174, 244, 239, 226, 135, 253, 25, 40, 130, 159, 192, 244, 68, 199, 33, 6, 80, 73, 11, 225, 162>>, "session", ~U[2026-08-21 12:08:52.800319Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 12:08:52.812] [DEBUG] QUERY OK source="users_tokens" db=1.8ms idle=546.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)) [<<177, 107, 124, 200, 63, 188, 94, 248, 108, 187, 132, 174, 244, 239, 226, 135, 253, 25, 40, 130, 159, 192, 244, 68, 199, 33, 6, 80, 73, 11, 225, 162>>, "session", ~U[2026-08-21 12:08:52.810455Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-08-21 12:08:52.821] [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-08-20 18:44:09Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-08-21 12:08:52.822] [DEBUG] QUERY OK source="tms_terminals" db=0.2ms queue=0.6ms idle=713.6ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-08-21 12:08:52.823] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.3ms idle=507.6ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-08-21 12:08:52.846] [DEBUG] QUERY OK source="tms_terminals" db=22.0ms queue=0.3ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 INNER JOIN `tms_terminal_status_logs` AS t1 ON t1.`terminal_id` = t0.`id` WHERE (t1.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-08-21 12:08:52.854] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=2.8ms idle=26.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-08-21 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-08-21 12:08:52.854] [DEBUG] QUERY OK source="tms_terminals" db=0.2ms queue=0.2ms idle=7.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:140 [2026-08-21 12:08:52.855] [DEBUG] QUERY OK source="tms_terminals" db=0.2ms queue=0.4ms idle=1.0ms 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-08-21 12:08:53.055] [DEBUG] QUERY OK source="tms_terminals" db=198.1ms queue=0.8ms idle=1.2ms 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-08-21 12:08:53.063] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms queue=2.6ms idle=204.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.065] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=1.1ms idle=8.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.067] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms 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-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.068] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=0.2ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.069] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms 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-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.072] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.9ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.074] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=4.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.079] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=3.9ms idle=2.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.081] [DEBUG] QUERY OK source="ota_configurations" db=1.0ms idle=5.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.082] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=3.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.083] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=2.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.084] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms queue=0.3ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.086] [DEBUG] QUERY OK source="ota_configurations" db=1.0ms 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-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.086] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.088] [DEBUG] QUERY OK source="ota_configurations" db=1.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-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.088] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.089] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms 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-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.091] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.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-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.092] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=1.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.092] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.093] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=0.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.094] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.0ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.095] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms 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-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.096] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=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-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.097] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=1.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.098] [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-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.098] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=1.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.099] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms queue=0.3ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.100] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=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-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.103] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.2ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.104] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=3.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.105] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.107] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms 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-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.107] [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-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.108] [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-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.108] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.109] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.110] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.110] [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-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.112] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.1ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.113] [DEBUG] QUERY OK source="ota_configurations" db=1.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-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.114] [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-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.115] [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-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.117] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.2ms queue=0.1ms idle=1.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.118] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms idle=2.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.120] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.7ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.123] [DEBUG] QUERY OK source="ota_configurations" db=1.7ms 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-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:53.123] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=2.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:53.225] [DEBUG] QUERY OK source="tms_terminals" db=99.8ms queue=1.1ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 12:03:53.124011Z], ~U[2026-08-21 11:38:53.124011Z], ~U[2026-08-21 11:08:53.124011Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:08:53.245] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.2ms queue=0.6ms idle=102.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-08-21 11:08:53]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-08-21 12:08:53.265] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.4ms queue=0.4ms idle=21.2ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 12:07:53]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-08-21 12:08:53.283] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.6ms queue=0.3ms idle=20.3ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 11:08:53]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-08-21 12:08:53.302] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.8ms idle=18.1ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 11:08:53]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-08-21 12:08:53.324] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.0ms queue=0.5ms idle=19.7ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 11:08:53]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-08-21 12:08:53.327] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=4.4ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-08-21 12:08:53.432] [DEBUG] QUERY OK source="tms_terminals" db=104.3ms idle=3.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-08-21 12:03:53.328041Z], ~U[2026-08-21 11:38:53.328041Z], ~U[2026-08-21 11:08:53.328041Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:08:53.529] [DEBUG] QUERY OK source="tms_terminals" db=96.4ms idle=105.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-08-21 12:03:53.432867Z], ~U[2026-08-21 11:38:53.432867Z], ~U[2026-08-21 11:08:53.432867Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:08:53.649] [DEBUG] QUERY OK source="tms_terminals" db=108.2ms idle=108.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-08-21 12:03:53.529910Z], ~U[2026-08-21 11:38:53.529910Z], ~U[2026-08-21 11:08:53.529910Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:08:53.748] [DEBUG] QUERY OK source="tms_terminals" db=97.7ms idle=121.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-08-21 12:03:53.650080Z], ~U[2026-08-21 11:38:53.650080Z], ~U[2026-08-21 11:08:53.650080Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:08:53.833] [INFO ] Sent 200 in 1039ms [2026-08-21 12:08:55.577] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "eB4LADQwcCABCkgqBwU7Jw16FRQUCSke1xT4BV8f0Ix_wfden3oNfzk3", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 12:08:55.760] [DEBUG] MOUNT PlatformWeb.DashboardLive Parameters: %{} Session: %{"_csrf_token" => "If_4vfHF1C0upc_BcIzZrsB-", "live_socket_id" => "users_sessions:sWt8yD-8Xvhsu4Su9O_ih_0ZKIKfwPRExyEGUEkL4aI=", "user_token" => <<177, 107, 124, 200, 63, 188, 94, 248, 108, 187, 132, 174, 244, 239, 226, 135, 253, 25, 40, 130, 159, 192, 244, 68, 199, 33, 6, 80, 73, 11, 225, 162>>} [2026-08-21 12:08:55.762] [DEBUG] QUERY OK source="users_tokens" db=0.7ms idle=1805.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)) [<<177, 107, 124, 200, 63, 188, 94, 248, 108, 187, 132, 174, 244, 239, 226, 135, 253, 25, 40, 130, 159, 192, 244, 68, 199, 33, 6, 80, 73, 11, 225, 162>>, "session", ~U[2026-08-21 12:08:55.761064Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 12:08:55.762] [DEBUG] QUERY OK source="users_tokens" db=0.4ms idle=1806.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)) [<<177, 107, 124, 200, 63, 188, 94, 248, 108, 187, 132, 174, 244, 239, 226, 135, 253, 25, 40, 130, 159, 192, 244, 68, 199, 33, 6, 80, 73, 11, 225, 162>>, "session", ~U[2026-08-21 12:08:55.762188Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-08-21 12:08:55.763] [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-08-20 18:44:09Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-08-21 12:08:55.763] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=433.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-08-21 12:08:55.764] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=22.4ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-08-21 12:08:55.786] [DEBUG] QUERY OK source="tms_terminals" db=22.1ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 INNER JOIN `tms_terminal_status_logs` AS t1 ON t1.`terminal_id` = t0.`id` WHERE (t1.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-08-21 12:08:55.787] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=22.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-08-21 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-08-21 12:08:55.788] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:140 [2026-08-21 12:08:55.789] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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-08-21 12:08:55.900] [DEBUG] QUERY OK source="tms_terminals" db=110.2ms idle=1.1ms 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-08-21 12:08:55.902] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms queue=0.2ms idle=111.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.904] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.4ms idle=2.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.905] [DEBUG] QUERY OK source="ota_configurations" db=0.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-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.905] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=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-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.907] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms queue=0.1ms 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-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.907] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.909] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=0.5ms idle=1.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.910] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=2.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.912] [DEBUG] QUERY OK source="ota_configurations" db=1.1ms 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-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.912] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=1.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.913] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms 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-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.914] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.914] [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-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.915] [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-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.917] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms 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-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.919] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.0ms idle=2.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.920] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=4.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.921] [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-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.926] [DEBUG] QUERY OK source="ota_configurations" db=4.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-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.930] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=3.2ms idle=5.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.934] [DEBUG] QUERY OK source="ota_configurations" db=3.1ms queue=0.1ms idle=5.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.936] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.0ms idle=5.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.938] [DEBUG] QUERY OK source="ota_configurations" db=1.5ms idle=2.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.939] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=0.1ms idle=2.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.940] [DEBUG] QUERY OK source="ota_configurations" db=1.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-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.943] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.2ms queue=0.5ms idle=1.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.946] [DEBUG] QUERY OK source="ota_configurations" db=1.8ms idle=3.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.952] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=5.7ms idle=2.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.953] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=6.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.954] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.9ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.955] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=1.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.957] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.9ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.959] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=3.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.960] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=2.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.961] [DEBUG] QUERY OK source="ota_configurations" db=1.1ms 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-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.962] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms queue=0.1ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.964] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms 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-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.965] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.1ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.967] [DEBUG] QUERY OK source="ota_configurations" db=1.2ms idle=2.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.968] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=1.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.968] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms queue=0.2ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.969] [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-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.970] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=0.5ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.971] [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-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.972] [DEBUG] QUERY OK source="ota_configurations" db=1.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-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.973] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms queue=0.1ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.974] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:08:55.974] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:08:55.986] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:08:55.986] [INFO ] Incoming JSON payload: {"oid":"3b050090-c198-4e1d-bdef-4e00229c24df","sn":"98251226730001","uploadTime":"2026-08-21T12:08:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:08:55Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:08:55.989] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3b050090-c198-4e1d-bdef-4e00229c24df", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:08:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:08:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:08:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:08:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:08:55Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:08:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:08:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:08:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:08:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:08:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:08:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:08:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:08:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:08:55Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:08:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:08:55Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:08:55Z", "vendor" => "morefun"} [2026-08-21 12:08:55.989] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:08:55.989] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:08:55.989] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:08:55.990] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=15.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 12:08:55.991] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=0.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 12:08:55.991] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:08:55.992] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=0.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:08:55.992] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:08:56.030] [DEBUG] QUERY OK source="tms_terminals" db=37.2ms idle=0.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:08:55], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:08:56.030] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:08:56.031] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=0.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:08:56.063] [DEBUG] QUERY OK source="tms_terminals" db=31.1ms idle=0.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:08:56], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:08:56.081] [DEBUG] QUERY OK source="tms_terminals" db=105.7ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 12:03:55.974989Z], ~U[2026-08-21 11:38:55.974989Z], ~U[2026-08-21 11:08:55.974989Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:08:56.115] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=34.1ms idle=0.5ms 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-08-21 11:08:56]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-08-21 12:08:56.139] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.9ms idle=0.4ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 12:07:56]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-08-21 12:08:56.165] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=25.9ms idle=0.4ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 11:08:56]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-08-21 12:08:56.188] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=23.1ms idle=0.3ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 11:08:56]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-08-21 12:08:56.206] [DEBUG] QUERY OK db=143.1ms idle=0.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "3b050090-c198-4e1d-bdef-4e00229c24df", "2026-08-21T12:08:55Z", ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:08:56.206] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77931, oid: "3b050090-c198-4e1d-bdef-4e00229c24df", upload_time: "2026-08-21T12:08:55Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]} [2026-08-21 12:08:56.207] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:08:55Z", "value" => "morefun"} [2026-08-21 12:08:56.213] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.3ms idle=0.3ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 11:08:56]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-08-21 12:08:56.216] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=0.2ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-08-21 12:08:56.271] [DEBUG] QUERY OK db=62.2ms queue=1.4ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "morefun", "vendor", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792601, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.271] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:08:55Z", "value" => "kiosk_launcher"} [2026-08-21 12:08:56.303] [DEBUG] QUERY OK db=32.0ms idle=0.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "kiosk_launcher", "model", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792602, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.304] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:08:55Z", "value" => "1.0"} [2026-08-21 12:08:56.337] [DEBUG] QUERY OK db=32.9ms idle=1.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "1.0", "app_version", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792603, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.339] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:08:55Z", "value" => "13"} [2026-08-21 12:08:56.348] [DEBUG] QUERY OK source="tms_terminals" db=131.6ms idle=0.4ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 12:03:56.216843Z], ~U[2026-08-21 11:38:56.216843Z], ~U[2026-08-21 11:08:56.216843Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:08:56.392] [DEBUG] QUERY OK db=47.7ms queue=5.8ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "13", "android_version", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792604, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.393] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:08:55Z", "value" => "917"} [2026-08-21 12:08:56.420] [DEBUG] QUERY OK db=26.7ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "917", "ram_free_mb", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792605, itemkey: "ram_free_mb", value: "917", timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.421] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:08:55Z", "value" => "WIFI"} [2026-08-21 12:08:56.457] [DEBUG] QUERY OK db=35.4ms queue=0.3ms idle=1.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "WIFI", "network_type", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792606, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.457] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:08:55Z", "value" => "true"} [2026-08-21 12:08:56.462] [DEBUG] QUERY OK source="tms_terminals" db=112.8ms idle=0.6ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 12:03:56.349136Z], ~U[2026-08-21 11:38:56.349136Z], ~U[2026-08-21 11:08:56.349136Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:08:56.499] [DEBUG] QUERY OK db=40.6ms idle=1.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "true", "kiosk_active", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792607, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.499] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:08:55Z", "value" => ""} [2026-08-21 12:08:56.525] [DEBUG] QUERY OK db=25.0ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:08:55Z", "sim_operator", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792608, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.525] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:08:55Z", "value" => "UNKNOWN"} [2026-08-21 12:08:56.567] [DEBUG] QUERY OK db=40.0ms idle=1.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "UNKNOWN", "sim_number", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.567] [DEBUG] QUERY OK source="tms_terminals" db=105.0ms idle=0.4ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 12:03:56.462483Z], ~U[2026-08-21 11:38:56.462483Z], ~U[2026-08-21 11:08:56.462483Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:08:56.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792609, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.568] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:08:55Z", "value" => "UNKNOWN"} [2026-08-21 12:08:56.631] [DEBUG] QUERY OK db=61.8ms idle=1.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "UNKNOWN", "sim_iccid", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792610, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.631] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:08:55Z", "value" => "UNKNOWN"} [2026-08-21 12:08:56.668] [DEBUG] QUERY OK source="tms_terminals" db=100.5ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 12:03:56.568039Z], ~U[2026-08-21 11:38:56.568039Z], ~U[2026-08-21 11:08:56.568039Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:08:56.669] [DEBUG] Replied in 908ms [2026-08-21 12:08:56.676] [DEBUG] QUERY OK db=43.3ms queue=0.8ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "UNKNOWN", "sim_imsi", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.676] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792611, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.676] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:08:55Z", "value" => "UNKNOWN"} [2026-08-21 12:08:56.723] [DEBUG] QUERY OK db=47.2ms idle=7.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "UNKNOWN", "sim_iccid2", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.724] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792612, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.724] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:08:55Z", "value" => "UNKNOWN"} [2026-08-21 12:08:56.783] [DEBUG] QUERY OK db=58.9ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "UNKNOWN", "sim_imsi2", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792613, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.784] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:08:55Z", "value" => "35"} [2026-08-21 12:08:56.859] [DEBUG] QUERY OK db=74.5ms idle=61.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "35", "data_usage_mb", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792614, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.860] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:08:55Z", "value" => "0"} [2026-08-21 12:08:56.886] [DEBUG] QUERY OK db=25.8ms idle=76.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "0", "mobile_data_mb", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792615, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:08:56.888] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:08:55Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:08:56.924] [DEBUG] QUERY OK db=34.5ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:08:55Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77931, ~N[2026-08-21 12:08:56], ~N[2026-08-21 12:08:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:08:56.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792616, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:08:55Z", message: nil, status_log_id: 77931, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:08:56], updated_at: ~N[2026-08-21 12:08:56]}} [2026-08-21 12:09:05.705] [WARN ] navigate event to "http://localhost:5329/admin/settlements/summary" failed because you are redirecting across live_sessions. A full page reload will be performed instead [2026-08-21 12:09:06.194] [INFO ] GET /admin/settlements/summary [2026-08-21 12:09:06.196] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 12:09:06.198] [DEBUG] QUERY OK source="users_tokens" db=0.7ms idle=1236.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)) [<<177, 107, 124, 200, 63, 188, 94, 248, 108, 187, 132, 174, 244, 239, 226, 135, 253, 25, 40, 130, 159, 192, 244, 68, 199, 33, 6, 80, 73, 11, 225, 162>>, "session", ~U[2026-08-21 12:09:06.197199Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 12:09:06.226] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=2.6ms idle=797.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:09:06.234] [DEBUG] QUERY OK source="tid_masters" db=1.2ms queue=2.7ms idle=483.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:09:06.258] [DEBUG] QUERY OK source="core_transactions" db=11.6ms queue=1.6ms idle=22.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:09:06.280] [DEBUG] QUERY OK source="core_transactions" db=21.1ms queue=0.1ms idle=24.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:09:06.299] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=15.4ms idle=25.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:09:06.309] [DEBUG] QUERY OK source="merchant_adjustments" db=1.0ms queue=2.3ms idle=25.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:09:06.321] [INFO ] Sent 200 in 126ms [2026-08-21 12:09:08.006] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "CwQrd0dROhwcDEM_KTE9FTofGyxfHwhnBbtC17rZ-OsJYRbWYVav-lJJ", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 12:09:08.188] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "If_4vfHF1C0upc_BcIzZrsB-", "live_socket_id" => "users_sessions:sWt8yD-8Xvhsu4Su9O_ih_0ZKIKfwPRExyEGUEkL4aI=", "user_token" => <<177, 107, 124, 200, 63, 188, 94, 248, 108, 187, 132, 174, 244, 239, 226, 135, 253, 25, 40, 130, 159, 192, 244, 68, 199, 33, 6, 80, 73, 11, 225, 162>>} [2026-08-21 12:09:08.189] [DEBUG] QUERY OK source="users_tokens" db=0.6ms queue=0.1ms idle=1223.7ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<177, 107, 124, 200, 63, 188, 94, 248, 108, 187, 132, 174, 244, 239, 226, 135, 253, 25, 40, 130, 159, 192, 244, 68, 199, 33, 6, 80, 73, 11, 225, 162>>, "session", ~U[2026-08-21 12:09:08.188728Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 12:09:08.192] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=0.7ms idle=761.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:09:08.194] [DEBUG] QUERY OK source="tid_masters" db=1.1ms queue=0.3ms idle=444.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:09:08.197] [DEBUG] QUERY OK source="core_transactions" db=1.2ms queue=0.8ms idle=2.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:09:08.236] [DEBUG] QUERY OK source="core_transactions" db=39.1ms idle=2.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:09:08.239] [DEBUG] QUERY OK source="tid_masters" db=2.0ms queue=0.5ms idle=40.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:09:08.243] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms queue=2.6ms idle=3.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:09:08.243] [DEBUG] Replied in 55ms [2026-08-21 12:09:26.116] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:09:26.116] [INFO ] Incoming JSON payload: {"oid":"70a024b3-1e09-46d6-a1af-b57b91805f12","sn":"98251226730001","uploadTime":"2026-08-21T12:09:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"ram_free_mb","value":"914","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:09:25Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:09:26.121] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "70a024b3-1e09-46d6-a1af-b57b91805f12", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:09:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:09:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:09:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:09:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:09:25Z", "value" => "914"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:09:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:09:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:09:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:09:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:09:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:09:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:09:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:09:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:09:25Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:09:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:09:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:09:25Z", "vendor" => "morefun"} [2026-08-21 12:09:26.121] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:09:26.121] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:09:26.121] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:09:26.125] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms idle=631.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-08-21 12:09:26.127] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.7ms idle=377.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-08-21 12:09:26.127] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:09:26.127] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:09:26.128] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:09:26.174] [DEBUG] QUERY OK source="tms_terminals" db=45.5ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:09:26], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:09:26.174] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:09:26.175] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=46.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:09:26.218] [DEBUG] QUERY OK source="tms_terminals" db=42.6ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:09:26], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:09:26.275] [DEBUG] QUERY OK db=57.1ms idle=43.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "70a024b3-1e09-46d6-a1af-b57b91805f12", "2026-08-21T12:09:25Z", ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:09:26.275] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77932, oid: "70a024b3-1e09-46d6-a1af-b57b91805f12", upload_time: "2026-08-21T12:09:25Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]} [2026-08-21 12:09:26.276] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:09:25Z", "value" => "morefun"} [2026-08-21 12:09:26.323] [DEBUG] QUERY OK db=47.5ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "morefun", "vendor", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792617, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.324] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:09:25Z", "value" => "kiosk_launcher"} [2026-08-21 12:09:26.365] [DEBUG] QUERY OK db=40.4ms idle=48.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "kiosk_launcher", "model", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792618, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.366] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:09:25Z", "value" => "1.0"} [2026-08-21 12:09:26.409] [DEBUG] QUERY OK db=42.7ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "1.0", "app_version", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792619, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.410] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:09:25Z", "value" => "13"} [2026-08-21 12:09:26.436] [DEBUG] QUERY OK db=25.6ms queue=0.1ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "13", "android_version", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.436] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792620, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.436] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:09:25Z", "value" => "914"} [2026-08-21 12:09:26.480] [DEBUG] QUERY OK db=43.7ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "914", "ram_free_mb", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.480] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792621, itemkey: "ram_free_mb", value: "914", timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.481] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:09:25Z", "value" => "WIFI"} [2026-08-21 12:09:26.505] [DEBUG] QUERY OK db=23.4ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "WIFI", "network_type", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792622, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.506] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:09:25Z", "value" => "true"} [2026-08-21 12:09:26.556] [DEBUG] QUERY OK db=49.2ms idle=13.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "true", "kiosk_active", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792623, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.556] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:09:25Z", "value" => ""} [2026-08-21 12:09:26.604] [DEBUG] QUERY OK db=47.4ms queue=0.1ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:09:25Z", "sim_operator", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.605] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792624, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.605] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:09:25Z", "value" => "UNKNOWN"} [2026-08-21 12:09:26.639] [DEBUG] QUERY OK db=33.1ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "UNKNOWN", "sim_number", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.639] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792625, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.640] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:09:25Z", "value" => "UNKNOWN"} [2026-08-21 12:09:26.680] [DEBUG] QUERY OK db=40.1ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "UNKNOWN", "sim_iccid", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792626, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.681] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:09:25Z", "value" => "UNKNOWN"} [2026-08-21 12:09:26.719] [DEBUG] QUERY OK db=37.1ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "UNKNOWN", "sim_imsi", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792627, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.719] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:09:25Z", "value" => "UNKNOWN"} [2026-08-21 12:09:26.798] [DEBUG] QUERY OK db=77.8ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "UNKNOWN", "sim_iccid2", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.798] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792628, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.798] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:09:25Z", "value" => "UNKNOWN"} [2026-08-21 12:09:26.875] [DEBUG] QUERY OK db=76.5ms idle=79.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "UNKNOWN", "sim_imsi2", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792629, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.876] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:09:25Z", "value" => "35"} [2026-08-21 12:09:26.920] [DEBUG] QUERY OK db=42.4ms idle=80.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "35", "data_usage_mb", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792630, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.921] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:09:25Z", "value" => "0"} [2026-08-21 12:09:26.955] [DEBUG] QUERY OK db=34.3ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "0", "mobile_data_mb", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:26.955] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792631, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:26.959] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:09:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:09:27.024] [DEBUG] QUERY OK db=63.3ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:25Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77932, ~N[2026-08-21 12:09:26], ~N[2026-08-21 12:09:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:27.025] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792632, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:09:25Z", message: nil, status_log_id: 77932, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:26], updated_at: ~N[2026-08-21 12:09:26]}} [2026-08-21 12:09:56.472] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:09:56.473] [INFO ] Incoming JSON payload: {"oid":"848d1cde-d25d-44f0-ba95-5acd9a52cecf","sn":"98251226730001","uploadTime":"2026-08-21T12:09:55Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:09:55Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:09:55Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:09:55Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:09:55Z"},{"itemkey":"ram_free_mb","value":"916","timestamp":"2026-08-21T12:09:55Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:09:55Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:09:55Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:09:55Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:09:55Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:09:55Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:09:55Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:09:55Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:09:55Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:09:55Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:09: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:09:56.474] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "848d1cde-d25d-44f0-ba95-5acd9a52cecf", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:09:55Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:09:55Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:09:55Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:09:55Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:09:55Z", "value" => "916"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:09:55Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:09:55Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:09:55Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:09:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:09:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:09:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:09:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:09:55Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:09:55Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:09:55Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:09: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:09:55Z", "vendor" => "morefun"} [2026-08-21 12:09:56.474] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:09:56.474] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:09:56.474] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:09:56.475] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=860.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-08-21 12:09:56.477] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=725.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-08-21 12:09:56.477] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:09:56.479] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.3ms 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-08-21 12:09:56.479] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:09:56.547] [DEBUG] QUERY OK source="tms_terminals" db=65.7ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:09:56], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:09:56.547] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:09:56.549] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:09:56.585] [DEBUG] QUERY OK source="tms_terminals" db=36.3ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:09:56], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:09:56.636] [DEBUG] QUERY OK db=48.8ms queue=0.7ms idle=37.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "848d1cde-d25d-44f0-ba95-5acd9a52cecf", "2026-08-21T12:09:55Z", ~N[2026-08-21 12:09:56], ~N[2026-08-21 12:09:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:09:56.636] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77933, oid: "848d1cde-d25d-44f0-ba95-5acd9a52cecf", upload_time: "2026-08-21T12:09:55Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:56], updated_at: ~N[2026-08-21 12:09:56]} [2026-08-21 12:09:56.636] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:09:55Z", "value" => "morefun"} [2026-08-21 12:09:56.660] [DEBUG] QUERY OK db=23.3ms idle=17.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:55Z", "morefun", "vendor", 77933, ~N[2026-08-21 12:09:56], ~N[2026-08-21 12:09:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:56.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792633, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:56], updated_at: ~N[2026-08-21 12:09:56]}} [2026-08-21 12:09:56.661] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:09:55Z", "value" => "kiosk_launcher"} [2026-08-21 12:09:56.717] [DEBUG] QUERY OK db=53.1ms queue=0.8ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:55Z", "kiosk_launcher", "model", 77933, ~N[2026-08-21 12:09:56], ~N[2026-08-21 12:09:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:56.717] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792634, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:56], updated_at: ~N[2026-08-21 12:09:56]}} [2026-08-21 12:09:56.717] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:09:55Z", "value" => "1.0"} [2026-08-21 12:09:56.824] [DEBUG] QUERY OK db=106.2ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:55Z", "1.0", "app_version", 77933, ~N[2026-08-21 12:09:56], ~N[2026-08-21 12:09:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:56.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792635, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:56], updated_at: ~N[2026-08-21 12:09:56]}} [2026-08-21 12:09:56.824] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:09:55Z", "value" => "13"} [2026-08-21 12:09:56.968] [DEBUG] QUERY OK db=143.7ms idle=107.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:55Z", "13", "android_version", 77933, ~N[2026-08-21 12:09:56], ~N[2026-08-21 12:09:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:56.968] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792636, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:56], updated_at: ~N[2026-08-21 12:09:56]}} [2026-08-21 12:09:56.969] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:09:55Z", "value" => "916"} [2026-08-21 12:09:57.018] [DEBUG] QUERY OK db=47.0ms idle=146.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:55Z", "916", "ram_free_mb", 77933, ~N[2026-08-21 12:09:56], ~N[2026-08-21 12:09:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:57.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792637, itemkey: "ram_free_mb", value: "916", timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:56], updated_at: ~N[2026-08-21 12:09:56]}} [2026-08-21 12:09:57.019] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:09:55Z", "value" => "WIFI"} [2026-08-21 12:09:57.043] [DEBUG] QUERY OK db=23.5ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:55Z", "WIFI", "network_type", 77933, ~N[2026-08-21 12:09:57], ~N[2026-08-21 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:57.044] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792638, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:57], updated_at: ~N[2026-08-21 12:09:57]}} [2026-08-21 12:09:57.044] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:09:55Z", "value" => "true"} [2026-08-21 12:09:57.118] [DEBUG] QUERY OK db=72.9ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:55Z", "true", "kiosk_active", 77933, ~N[2026-08-21 12:09:57], ~N[2026-08-21 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:57.118] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792639, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:57], updated_at: ~N[2026-08-21 12:09:57]}} [2026-08-21 12:09:57.118] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:09:55Z", "value" => ""} [2026-08-21 12:09:57.155] [DEBUG] QUERY OK db=36.6ms idle=75.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:09:55Z", "sim_operator", 77933, ~N[2026-08-21 12:09:57], ~N[2026-08-21 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:57.156] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792640, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:57], updated_at: ~N[2026-08-21 12:09:57]}} [2026-08-21 12:09:57.156] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:09:55Z", "value" => "UNKNOWN"} [2026-08-21 12:09:57.205] [DEBUG] QUERY OK db=47.4ms queue=0.1ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:55Z", "UNKNOWN", "sim_number", 77933, ~N[2026-08-21 12:09:57], ~N[2026-08-21 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:57.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792641, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:57], updated_at: ~N[2026-08-21 12:09:57]}} [2026-08-21 12:09:57.206] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:09:55Z", "value" => "UNKNOWN"} [2026-08-21 12:09:57.237] [DEBUG] QUERY OK db=31.3ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:55Z", "UNKNOWN", "sim_iccid", 77933, ~N[2026-08-21 12:09:57], ~N[2026-08-21 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:57.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792642, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:57], updated_at: ~N[2026-08-21 12:09:57]}} [2026-08-21 12:09:57.238] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:09:55Z", "value" => "UNKNOWN"} [2026-08-21 12:09:57.287] [DEBUG] QUERY OK db=49.5ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:55Z", "UNKNOWN", "sim_imsi", 77933, ~N[2026-08-21 12:09:57], ~N[2026-08-21 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:57.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792643, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:57], updated_at: ~N[2026-08-21 12:09:57]}} [2026-08-21 12:09:57.288] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:09:55Z", "value" => "UNKNOWN"} [2026-08-21 12:09:57.323] [DEBUG] QUERY OK db=34.6ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:55Z", "UNKNOWN", "sim_iccid2", 77933, ~N[2026-08-21 12:09:57], ~N[2026-08-21 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:57.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792644, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:57], updated_at: ~N[2026-08-21 12:09:57]}} [2026-08-21 12:09:57.323] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:09:55Z", "value" => "UNKNOWN"} [2026-08-21 12:09:57.371] [DEBUG] QUERY OK db=46.8ms queue=0.1ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:55Z", "UNKNOWN", "sim_imsi2", 77933, ~N[2026-08-21 12:09:57], ~N[2026-08-21 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:57.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792645, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:57], updated_at: ~N[2026-08-21 12:09:57]}} [2026-08-21 12:09:57.371] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:09:55Z", "value" => "35"} [2026-08-21 12:09:57.422] [DEBUG] QUERY OK db=49.8ms idle=48.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:55Z", "35", "data_usage_mb", 77933, ~N[2026-08-21 12:09:57], ~N[2026-08-21 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:57.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792646, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:57], updated_at: ~N[2026-08-21 12:09:57]}} [2026-08-21 12:09:57.422] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:09:55Z", "value" => "0"} [2026-08-21 12:09:57.481] [DEBUG] QUERY OK db=57.8ms queue=0.2ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09:55Z", "0", "mobile_data_mb", 77933, ~N[2026-08-21 12:09:57], ~N[2026-08-21 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:57.481] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792647, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:57], updated_at: ~N[2026-08-21 12:09:57]}} [2026-08-21 12:09:57.484] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:09: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:09:57.544] [DEBUG] QUERY OK db=58.1ms idle=63.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:09: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77933, ~N[2026-08-21 12:09:57], ~N[2026-08-21 12:09:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:09:57.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792648, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:09:55Z", message: nil, status_log_id: 77933, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:09:57], updated_at: ~N[2026-08-21 12:09:57]}} [2026-08-21 12:10:26.588] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:10:26.588] [INFO ] Incoming JSON payload: {"oid":"8f774f02-8ea9-43aa-85c9-9dd9f3780aa0","sn":"98251226730001","uploadTime":"2026-08-21T12:10:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"ram_free_mb","value":"915","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:10:26Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:10:26.589] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8f774f02-8ea9-43aa-85c9-9dd9f3780aa0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:10:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:10:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:10:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:10:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:10:26Z", "value" => "915"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:10:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:10:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:10:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:10:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:10:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:10:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:10:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:10:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:10:26Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:10:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:10:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:10:26Z", "vendor" => "morefun"} [2026-08-21 12:10:26.590] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:10:26.590] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:10:26.590] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:10:26.591] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=834.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-08-21 12:10:26.592] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=833.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-08-21 12:10:26.593] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:10:26.594] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:10:26.594] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:10:26.627] [DEBUG] QUERY OK source="tms_terminals" db=32.8ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:10:26], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:10:26.627] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:10:26.628] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=33.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:10:26.683] [DEBUG] QUERY OK source="tms_terminals" db=54.9ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:10:26], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:10:26.717] [DEBUG] QUERY OK db=33.4ms idle=55.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "8f774f02-8ea9-43aa-85c9-9dd9f3780aa0", "2026-08-21T12:10:26Z", ~N[2026-08-21 12:10:26], ~N[2026-08-21 12:10:26]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:10:26.718] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77934, oid: "8f774f02-8ea9-43aa-85c9-9dd9f3780aa0", upload_time: "2026-08-21T12:10:26Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:26], updated_at: ~N[2026-08-21 12:10:26]} [2026-08-21 12:10:26.718] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:10:26Z", "value" => "morefun"} [2026-08-21 12:10:26.769] [DEBUG] QUERY OK db=50.9ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "morefun", "vendor", 77934, ~N[2026-08-21 12:10:26], ~N[2026-08-21 12:10:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:26.769] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792649, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:26], updated_at: ~N[2026-08-21 12:10:26]}} [2026-08-21 12:10:26.770] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:10:26Z", "value" => "kiosk_launcher"} [2026-08-21 12:10:26.816] [DEBUG] QUERY OK db=45.6ms queue=0.3ms idle=9.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "kiosk_launcher", "model", 77934, ~N[2026-08-21 12:10:26], ~N[2026-08-21 12:10:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:26.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792650, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:26], updated_at: ~N[2026-08-21 12:10:26]}} [2026-08-21 12:10:26.816] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:10:26Z", "value" => "1.0"} [2026-08-21 12:10:26.849] [DEBUG] QUERY OK db=32.4ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "1.0", "app_version", 77934, ~N[2026-08-21 12:10:26], ~N[2026-08-21 12:10:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:26.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792651, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:26], updated_at: ~N[2026-08-21 12:10:26]}} [2026-08-21 12:10:26.850] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:10:26Z", "value" => "13"} [2026-08-21 12:10:26.874] [DEBUG] QUERY OK db=23.5ms queue=0.1ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "13", "android_version", 77934, ~N[2026-08-21 12:10:26], ~N[2026-08-21 12:10:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:26.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792652, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:26], updated_at: ~N[2026-08-21 12:10:26]}} [2026-08-21 12:10:26.874] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:10:26Z", "value" => "915"} [2026-08-21 12:10:26.914] [DEBUG] QUERY OK db=39.9ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "915", "ram_free_mb", 77934, ~N[2026-08-21 12:10:26], ~N[2026-08-21 12:10:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:26.915] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792653, itemkey: "ram_free_mb", value: "915", timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:26], updated_at: ~N[2026-08-21 12:10:26]}} [2026-08-21 12:10:26.915] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:10:26Z", "value" => "WIFI"} [2026-08-21 12:10:26.959] [DEBUG] QUERY OK db=42.3ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "WIFI", "network_type", 77934, ~N[2026-08-21 12:10:26], ~N[2026-08-21 12:10:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:26.959] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792654, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:26], updated_at: ~N[2026-08-21 12:10:26]}} [2026-08-21 12:10:26.959] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:10:26Z", "value" => "true"} [2026-08-21 12:10:26.984] [DEBUG] QUERY OK db=23.6ms queue=0.3ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "true", "kiosk_active", 77934, ~N[2026-08-21 12:10:26], ~N[2026-08-21 12:10:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:26.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792655, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:26], updated_at: ~N[2026-08-21 12:10:26]}} [2026-08-21 12:10:26.984] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:10:26Z", "value" => ""} [2026-08-21 12:10:27.041] [DEBUG] QUERY OK db=56.0ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:10:26Z", "sim_operator", 77934, ~N[2026-08-21 12:10:26], ~N[2026-08-21 12:10:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:27.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792656, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:26], updated_at: ~N[2026-08-21 12:10:26]}} [2026-08-21 12:10:27.042] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:10:26Z", "value" => "UNKNOWN"} [2026-08-21 12:10:27.092] [DEBUG] QUERY OK db=49.8ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "UNKNOWN", "sim_number", 77934, ~N[2026-08-21 12:10:27], ~N[2026-08-21 12:10:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:27.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792657, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:27], updated_at: ~N[2026-08-21 12:10:27]}} [2026-08-21 12:10:27.093] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:10:26Z", "value" => "UNKNOWN"} [2026-08-21 12:10:27.134] [DEBUG] QUERY OK db=40.5ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "UNKNOWN", "sim_iccid", 77934, ~N[2026-08-21 12:10:27], ~N[2026-08-21 12:10:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:27.135] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792658, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:27], updated_at: ~N[2026-08-21 12:10:27]}} [2026-08-21 12:10:27.135] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:10:26Z", "value" => "UNKNOWN"} [2026-08-21 12:10:27.185] [DEBUG] QUERY OK db=50.1ms queue=0.1ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "UNKNOWN", "sim_imsi", 77934, ~N[2026-08-21 12:10:27], ~N[2026-08-21 12:10:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:27.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792659, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:27], updated_at: ~N[2026-08-21 12:10:27]}} [2026-08-21 12:10:27.186] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:10:26Z", "value" => "UNKNOWN"} [2026-08-21 12:10:27.219] [DEBUG] QUERY OK db=33.0ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "UNKNOWN", "sim_iccid2", 77934, ~N[2026-08-21 12:10:27], ~N[2026-08-21 12:10:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:27.219] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792660, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:27], updated_at: ~N[2026-08-21 12:10:27]}} [2026-08-21 12:10:27.219] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:10:26Z", "value" => "UNKNOWN"} [2026-08-21 12:10:27.254] [DEBUG] QUERY OK db=34.6ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "UNKNOWN", "sim_imsi2", 77934, ~N[2026-08-21 12:10:27], ~N[2026-08-21 12:10:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:27.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792661, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:27], updated_at: ~N[2026-08-21 12:10:27]}} [2026-08-21 12:10:27.255] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:10:26Z", "value" => "35"} [2026-08-21 12:10:27.294] [DEBUG] QUERY OK db=38.3ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "35", "data_usage_mb", 77934, ~N[2026-08-21 12:10:27], ~N[2026-08-21 12:10:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:27.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792662, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:27], updated_at: ~N[2026-08-21 12:10:27]}} [2026-08-21 12:10:27.294] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:10:26Z", "value" => "0"} [2026-08-21 12:10:27.325] [DEBUG] QUERY OK db=30.8ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "0", "mobile_data_mb", 77934, ~N[2026-08-21 12:10:27], ~N[2026-08-21 12:10:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:27.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792663, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:27], updated_at: ~N[2026-08-21 12:10:27]}} [2026-08-21 12:10:27.326] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:10:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:10:27.367] [DEBUG] QUERY OK db=39.8ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:26Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77934, ~N[2026-08-21 12:10:27], ~N[2026-08-21 12:10:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:27.368] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792664, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:10:26Z", message: nil, status_log_id: 77934, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:27], updated_at: ~N[2026-08-21 12:10:27]}} [2026-08-21 12:10:56.694] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:10:56.695] [INFO ] Incoming JSON payload: {"oid":"ba87d780-7498-40ad-a4b7-5635c0e7cbc1","sn":"98251226730001","uploadTime":"2026-08-21T12:10:56Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:10:56Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:10:56Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:10:56Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:10:56Z"},{"itemkey":"ram_free_mb","value":"912","timestamp":"2026-08-21T12:10:56Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:10:56Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:10:56Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:10:56Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:10:56Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:10:56Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:10:56Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:10:56Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:10:56Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:10:56Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:10:56.696] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ba87d780-7498-40ad-a4b7-5635c0e7cbc1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:10:56Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:10:56Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:10:56Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:10:56Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:10:56Z", "value" => "912"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:10:56Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:10:56Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:10:56Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:10:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:10:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:10:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:10:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:10:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:10:56Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:10:56Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:10:56Z", "vendor" => "morefun"} [2026-08-21 12:10:56.696] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:10:56.696] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:10:56.696] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:10:56.697] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=931.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-08-21 12:10:56.698] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.1ms idle=808.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-08-21 12:10:56.698] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:10:56.699] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:10:56.699] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:10:56.739] [DEBUG] QUERY OK source="tms_terminals" db=38.8ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:10:56], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:10:56.741] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:10:56.742] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:10:56.795] [DEBUG] QUERY OK source="tms_terminals" db=52.4ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:10:56], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:10:56.842] [DEBUG] QUERY OK db=46.9ms idle=53.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ba87d780-7498-40ad-a4b7-5635c0e7cbc1", "2026-08-21T12:10:56Z", ~N[2026-08-21 12:10:56], ~N[2026-08-21 12:10:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:10:56.843] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77935, oid: "ba87d780-7498-40ad-a4b7-5635c0e7cbc1", upload_time: "2026-08-21T12:10:56Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:56], updated_at: ~N[2026-08-21 12:10:56]} [2026-08-21 12:10:56.843] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:10:56Z", "value" => "morefun"} [2026-08-21 12:10:56.877] [DEBUG] QUERY OK db=32.8ms queue=0.6ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:56Z", "morefun", "vendor", 77935, ~N[2026-08-21 12:10:56], ~N[2026-08-21 12:10:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:56.878] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792665, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:56], updated_at: ~N[2026-08-21 12:10:56]}} [2026-08-21 12:10:56.878] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:10:56Z", "value" => "kiosk_launcher"} [2026-08-21 12:10:56.937] [DEBUG] QUERY OK db=58.7ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:56Z", "kiosk_launcher", "model", 77935, ~N[2026-08-21 12:10:56], ~N[2026-08-21 12:10:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:56.937] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792666, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:56], updated_at: ~N[2026-08-21 12:10:56]}} [2026-08-21 12:10:56.937] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:10:56Z", "value" => "1.0"} [2026-08-21 12:10:56.973] [DEBUG] QUERY OK db=35.4ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:56Z", "1.0", "app_version", 77935, ~N[2026-08-21 12:10:56], ~N[2026-08-21 12:10:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:56.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792667, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:56], updated_at: ~N[2026-08-21 12:10:56]}} [2026-08-21 12:10:56.973] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:10:56Z", "value" => "13"} [2026-08-21 12:10:57.019] [DEBUG] QUERY OK db=45.1ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:56Z", "13", "android_version", 77935, ~N[2026-08-21 12:10:56], ~N[2026-08-21 12:10:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:57.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792668, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:56], updated_at: ~N[2026-08-21 12:10:56]}} [2026-08-21 12:10:57.019] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:10:56Z", "value" => "912"} [2026-08-21 12:10:57.081] [DEBUG] QUERY OK db=61.9ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:56Z", "912", "ram_free_mb", 77935, ~N[2026-08-21 12:10:57], ~N[2026-08-21 12:10:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:57.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792669, itemkey: "ram_free_mb", value: "912", timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:57], updated_at: ~N[2026-08-21 12:10:57]}} [2026-08-21 12:10:57.082] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:10:56Z", "value" => "WIFI"} [2026-08-21 12:10:57.158] [DEBUG] QUERY OK db=75.8ms idle=63.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:56Z", "WIFI", "network_type", 77935, ~N[2026-08-21 12:10:57], ~N[2026-08-21 12:10:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:57.158] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792670, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:57], updated_at: ~N[2026-08-21 12:10:57]}} [2026-08-21 12:10:57.158] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:10:56Z", "value" => "true"} [2026-08-21 12:10:57.242] [DEBUG] QUERY OK db=78.6ms queue=2.5ms idle=79.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:56Z", "true", "kiosk_active", 77935, ~N[2026-08-21 12:10:57], ~N[2026-08-21 12:10:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:57.243] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792671, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:57], updated_at: ~N[2026-08-21 12:10:57]}} [2026-08-21 12:10:57.243] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:10:56Z", "value" => ""} [2026-08-21 12:10:57.299] [DEBUG] QUERY OK db=55.5ms idle=85.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:10:56Z", "sim_operator", 77935, ~N[2026-08-21 12:10:57], ~N[2026-08-21 12:10:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:57.300] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792672, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:57], updated_at: ~N[2026-08-21 12:10:57]}} [2026-08-21 12:10:57.300] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:10:56Z", "value" => "UNKNOWN"} [2026-08-21 12:10:57.393] [DEBUG] QUERY OK db=92.3ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:56Z", "UNKNOWN", "sim_number", 77935, ~N[2026-08-21 12:10:57], ~N[2026-08-21 12:10:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:57.393] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792673, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:57], updated_at: ~N[2026-08-21 12:10:57]}} [2026-08-21 12:10:57.393] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:10:56Z", "value" => "UNKNOWN"} [2026-08-21 12:10:57.505] [DEBUG] QUERY OK db=111.1ms idle=94.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:56Z", "UNKNOWN", "sim_iccid", 77935, ~N[2026-08-21 12:10:57], ~N[2026-08-21 12:10:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:57.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792674, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:57], updated_at: ~N[2026-08-21 12:10:57]}} [2026-08-21 12:10:57.505] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:10:56Z", "value" => "UNKNOWN"} [2026-08-21 12:10:57.561] [DEBUG] QUERY OK db=55.3ms idle=113.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:56Z", "UNKNOWN", "sim_imsi", 77935, ~N[2026-08-21 12:10:57], ~N[2026-08-21 12:10:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:57.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792675, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:57], updated_at: ~N[2026-08-21 12:10:57]}} [2026-08-21 12:10:57.562] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:10:56Z", "value" => "UNKNOWN"} [2026-08-21 12:10:57.641] [DEBUG] QUERY OK db=78.8ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:56Z", "UNKNOWN", "sim_iccid2", 77935, ~N[2026-08-21 12:10:57], ~N[2026-08-21 12:10:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:57.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792676, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:57], updated_at: ~N[2026-08-21 12:10:57]}} [2026-08-21 12:10:57.641] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:10:56Z", "value" => "UNKNOWN"} [2026-08-21 12:10:57.698] [DEBUG] QUERY OK db=56.7ms queue=0.1ms idle=80.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:56Z", "UNKNOWN", "sim_imsi2", 77935, ~N[2026-08-21 12:10:57], ~N[2026-08-21 12:10:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:57.698] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792677, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:57], updated_at: ~N[2026-08-21 12:10:57]}} [2026-08-21 12:10:57.699] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:10:56Z", "value" => "35"} [2026-08-21 12:10:57.773] [DEBUG] QUERY OK db=74.2ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:56Z", "35", "data_usage_mb", 77935, ~N[2026-08-21 12:10:57], ~N[2026-08-21 12:10:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:57.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792678, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:57], updated_at: ~N[2026-08-21 12:10:57]}} [2026-08-21 12:10:57.774] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:10:56Z", "value" => "0"} [2026-08-21 12:10:57.813] [DEBUG] QUERY OK db=38.8ms idle=75.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10:56Z", "0", "mobile_data_mb", 77935, ~N[2026-08-21 12:10:57], ~N[2026-08-21 12:10:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:57.813] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792679, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:57], updated_at: ~N[2026-08-21 12:10:57]}} [2026-08-21 12:10:57.814] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:10:57.887] [DEBUG] QUERY OK db=72.6ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77935, ~N[2026-08-21 12:10:57], ~N[2026-08-21 12:10:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:10:57.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792680, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:10:56Z", message: nil, status_log_id: 77935, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:10:57], updated_at: ~N[2026-08-21 12:10:57]}} [2026-08-21 12:11:26.774] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:11:26.774] [INFO ] Incoming JSON payload: {"oid":"b2bfe725-0436-4443-88a3-b662b2b5a255","sn":"98251226730001","uploadTime":"2026-08-21T12:11:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"ram_free_mb","value":"915","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:11:26Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:11:26.775] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b2bfe725-0436-4443-88a3-b662b2b5a255", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:11:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:11:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:11:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:11:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:11:26Z", "value" => "915"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:11:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:11:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:11:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:11:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:11:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:11:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:11:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:11:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:11:26Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:11:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:11:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:11:26Z", "vendor" => "morefun"} [2026-08-21 12:11:26.775] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:11:26.775] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:11:26.775] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:11:26.776] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1007.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-08-21 12:11:26.777] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=764.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-08-21 12:11:26.777] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:11:26.778] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:11:26.778] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:11:26.814] [DEBUG] QUERY OK source="tms_terminals" db=35.0ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:11:26], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:11:26.814] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:11:26.816] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=36.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:11:26.861] [DEBUG] QUERY OK source="tms_terminals" db=44.3ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:11:26], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:11:26.915] [DEBUG] QUERY OK db=53.3ms idle=45.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b2bfe725-0436-4443-88a3-b662b2b5a255", "2026-08-21T12:11:26Z", ~N[2026-08-21 12:11:26], ~N[2026-08-21 12:11:26]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:11:26.917] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77936, oid: "b2bfe725-0436-4443-88a3-b662b2b5a255", upload_time: "2026-08-21T12:11:26Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:26], updated_at: ~N[2026-08-21 12:11:26]} [2026-08-21 12:11:26.917] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:11:26Z", "value" => "morefun"} [2026-08-21 12:11:26.956] [DEBUG] QUERY OK db=38.8ms idle=56.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "morefun", "vendor", 77936, ~N[2026-08-21 12:11:26], ~N[2026-08-21 12:11:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:26.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792681, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:26], updated_at: ~N[2026-08-21 12:11:26]}} [2026-08-21 12:11:26.956] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:11:26Z", "value" => "kiosk_launcher"} [2026-08-21 12:11:26.992] [DEBUG] QUERY OK db=35.6ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "kiosk_launcher", "model", 77936, ~N[2026-08-21 12:11:26], ~N[2026-08-21 12:11:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:26.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792682, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:26], updated_at: ~N[2026-08-21 12:11:26]}} [2026-08-21 12:11:26.993] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:11:26Z", "value" => "1.0"} [2026-08-21 12:11:27.024] [DEBUG] QUERY OK db=31.2ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "1.0", "app_version", 77936, ~N[2026-08-21 12:11:26], ~N[2026-08-21 12:11:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:27.025] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792683, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:26], updated_at: ~N[2026-08-21 12:11:26]}} [2026-08-21 12:11:27.025] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:11:26Z", "value" => "13"} [2026-08-21 12:11:27.111] [DEBUG] QUERY OK db=86.3ms idle=1.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "13", "android_version", 77936, ~N[2026-08-21 12:11:27], ~N[2026-08-21 12:11:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:27.112] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792684, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:27], updated_at: ~N[2026-08-21 12:11:27]}} [2026-08-21 12:11:27.112] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:11:26Z", "value" => "915"} [2026-08-21 12:11:27.262] [DEBUG] QUERY OK db=149.0ms idle=88.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "915", "ram_free_mb", 77936, ~N[2026-08-21 12:11:27], ~N[2026-08-21 12:11:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:27.262] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792685, itemkey: "ram_free_mb", value: "915", timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:27], updated_at: ~N[2026-08-21 12:11:27]}} [2026-08-21 12:11:27.262] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:11:26Z", "value" => "WIFI"} [2026-08-21 12:11:27.304] [DEBUG] QUERY OK db=41.4ms idle=150.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "WIFI", "network_type", 77936, ~N[2026-08-21 12:11:27], ~N[2026-08-21 12:11:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:27.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792686, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:27], updated_at: ~N[2026-08-21 12:11:27]}} [2026-08-21 12:11:27.304] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:11:26Z", "value" => "true"} [2026-08-21 12:11:27.329] [DEBUG] QUERY OK db=23.9ms queue=0.2ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "true", "kiosk_active", 77936, ~N[2026-08-21 12:11:27], ~N[2026-08-21 12:11:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:27.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792687, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:27], updated_at: ~N[2026-08-21 12:11:27]}} [2026-08-21 12:11:27.329] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:11:26Z", "value" => ""} [2026-08-21 12:11:27.380] [DEBUG] QUERY OK db=50.2ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:11:26Z", "sim_operator", 77936, ~N[2026-08-21 12:11:27], ~N[2026-08-21 12:11:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:27.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792688, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:27], updated_at: ~N[2026-08-21 12:11:27]}} [2026-08-21 12:11:27.381] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:11:26Z", "value" => "UNKNOWN"} [2026-08-21 12:11:27.421] [DEBUG] QUERY OK db=40.3ms idle=52.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "UNKNOWN", "sim_number", 77936, ~N[2026-08-21 12:11:27], ~N[2026-08-21 12:11:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:27.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792689, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:27], updated_at: ~N[2026-08-21 12:11:27]}} [2026-08-21 12:11:27.422] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:11:26Z", "value" => "UNKNOWN"} [2026-08-21 12:11:27.460] [DEBUG] QUERY OK db=37.7ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "UNKNOWN", "sim_iccid", 77936, ~N[2026-08-21 12:11:27], ~N[2026-08-21 12:11:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:27.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792690, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:27], updated_at: ~N[2026-08-21 12:11:27]}} [2026-08-21 12:11:27.461] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:11:26Z", "value" => "UNKNOWN"} [2026-08-21 12:11:27.499] [DEBUG] QUERY OK db=38.0ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "UNKNOWN", "sim_imsi", 77936, ~N[2026-08-21 12:11:27], ~N[2026-08-21 12:11:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:27.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792691, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:27], updated_at: ~N[2026-08-21 12:11:27]}} [2026-08-21 12:11:27.500] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:11:26Z", "value" => "UNKNOWN"} [2026-08-21 12:11:27.533] [DEBUG] QUERY OK db=33.0ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "UNKNOWN", "sim_iccid2", 77936, ~N[2026-08-21 12:11:27], ~N[2026-08-21 12:11:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:27.533] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792692, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:27], updated_at: ~N[2026-08-21 12:11:27]}} [2026-08-21 12:11:27.534] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:11:26Z", "value" => "UNKNOWN"} [2026-08-21 12:11:27.562] [DEBUG] QUERY OK db=27.7ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "UNKNOWN", "sim_imsi2", 77936, ~N[2026-08-21 12:11:27], ~N[2026-08-21 12:11:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:27.562] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792693, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:27], updated_at: ~N[2026-08-21 12:11:27]}} [2026-08-21 12:11:27.562] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:11:26Z", "value" => "35"} [2026-08-21 12:11:27.647] [DEBUG] QUERY OK db=84.1ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "35", "data_usage_mb", 77936, ~N[2026-08-21 12:11:27], ~N[2026-08-21 12:11:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:27.647] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792694, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:27], updated_at: ~N[2026-08-21 12:11:27]}} [2026-08-21 12:11:27.648] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:11:26Z", "value" => "0"} [2026-08-21 12:11:27.727] [DEBUG] QUERY OK db=78.9ms idle=1.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "0", "mobile_data_mb", 77936, ~N[2026-08-21 12:11:27], ~N[2026-08-21 12:11:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:27.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792695, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:27], updated_at: ~N[2026-08-21 12:11:27]}} [2026-08-21 12:11:27.730] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:11:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:11:27.774] [DEBUG] QUERY OK db=43.1ms idle=11.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:26Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77936, ~N[2026-08-21 12:11:27], ~N[2026-08-21 12:11:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:27.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792696, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:11:26Z", message: nil, status_log_id: 77936, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:27], updated_at: ~N[2026-08-21 12:11:27]}} [2026-08-21 12:11:56.908] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:11:56.908] [INFO ] Incoming JSON payload: {"oid":"a374e8fd-ea39-4b25-b823-f2347fe81f10","sn":"98251226730001","uploadTime":"2026-08-21T12:11:56Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:11:56Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:11:56Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:11:56Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:11:56Z"},{"itemkey":"ram_free_mb","value":"920","timestamp":"2026-08-21T12:11:56Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:11:56Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:11:56Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:11:56Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:11:56Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:11:56Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:11:56Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:11:56Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:11:56Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:11:56Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:11:56.909] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a374e8fd-ea39-4b25-b823-f2347fe81f10", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:11:56Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:11:56Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:11:56Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:11:56Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:11:56Z", "value" => "920"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:11:56Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:11:56Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:11:56Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:11:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:11:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:11:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:11:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:11:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:11:56Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:11:56Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:11:56Z", "vendor" => "morefun"} [2026-08-21 12:11:56.910] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:11:56.910] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:11:56.910] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:11:56.910] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=1138.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-08-21 12:11:56.911] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=799.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-08-21 12:11:56.911] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:11:56.912] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:11:56.912] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:11:56.958] [DEBUG] QUERY OK source="tms_terminals" db=44.9ms queue=0.5ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:11:56], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:11:56.958] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:11:56.959] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=46.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:11:57.016] [DEBUG] QUERY OK source="tms_terminals" db=56.2ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:11:56], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:11:57.072] [DEBUG] QUERY OK db=56.0ms queue=0.1ms idle=0.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a374e8fd-ea39-4b25-b823-f2347fe81f10", "2026-08-21T12:11:56Z", ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:11:57.072] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77937, oid: "a374e8fd-ea39-4b25-b823-f2347fe81f10", upload_time: "2026-08-21T12:11:56Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]} [2026-08-21 12:11:57.073] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:11:56Z", "value" => "morefun"} [2026-08-21 12:11:57.125] [DEBUG] QUERY OK db=51.9ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:56Z", "morefun", "vendor", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.125] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792697, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.125] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:11:56Z", "value" => "kiosk_launcher"} [2026-08-21 12:11:57.162] [DEBUG] QUERY OK db=36.6ms idle=11.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:56Z", "kiosk_launcher", "model", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.163] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792698, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.163] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:11:56Z", "value" => "1.0"} [2026-08-21 12:11:57.203] [DEBUG] QUERY OK db=40.1ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:56Z", "1.0", "app_version", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792699, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.205] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:11:56Z", "value" => "13"} [2026-08-21 12:11:57.237] [DEBUG] QUERY OK db=31.7ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:56Z", "13", "android_version", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792700, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.237] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:11:56Z", "value" => "920"} [2026-08-21 12:11:57.284] [DEBUG] QUERY OK db=45.9ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:56Z", "920", "ram_free_mb", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792701, itemkey: "ram_free_mb", value: "920", timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.285] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:11:56Z", "value" => "WIFI"} [2026-08-21 12:11:57.345] [DEBUG] QUERY OK db=58.9ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:56Z", "WIFI", "network_type", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792702, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.345] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:11:56Z", "value" => "true"} [2026-08-21 12:11:57.384] [DEBUG] QUERY OK db=38.5ms queue=0.5ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:56Z", "true", "kiosk_active", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792703, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.385] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:11:56Z", "value" => ""} [2026-08-21 12:11:57.426] [DEBUG] QUERY OK db=40.7ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:11:56Z", "sim_operator", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792704, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.427] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:11:56Z", "value" => "UNKNOWN"} [2026-08-21 12:11:57.451] [DEBUG] QUERY OK db=23.5ms queue=0.1ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:56Z", "UNKNOWN", "sim_number", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792705, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.454] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:11:56Z", "value" => "UNKNOWN"} [2026-08-21 12:11:57.499] [DEBUG] QUERY OK db=44.9ms idle=27.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:56Z", "UNKNOWN", "sim_iccid", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792706, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.499] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:11:56Z", "value" => "UNKNOWN"} [2026-08-21 12:11:57.529] [DEBUG] QUERY OK db=29.0ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:56Z", "UNKNOWN", "sim_imsi", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792707, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.530] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:11:56Z", "value" => "UNKNOWN"} [2026-08-21 12:11:57.564] [DEBUG] QUERY OK db=34.2ms idle=30.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:56Z", "UNKNOWN", "sim_iccid2", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792708, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.565] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:11:56Z", "value" => "UNKNOWN"} [2026-08-21 12:11:57.606] [DEBUG] QUERY OK db=41.1ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:56Z", "UNKNOWN", "sim_imsi2", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792709, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.606] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:11:56Z", "value" => "35"} [2026-08-21 12:11:57.641] [DEBUG] QUERY OK db=33.7ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:56Z", "35", "data_usage_mb", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792710, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.641] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:11:56Z", "value" => "0"} [2026-08-21 12:11:57.668] [DEBUG] QUERY OK db=26.2ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11:56Z", "0", "mobile_data_mb", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792711, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:11:57.669] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:11:57.729] [DEBUG] QUERY OK db=59.4ms idle=28.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77937, ~N[2026-08-21 12:11:57], ~N[2026-08-21 12:11:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:11:57.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792712, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:11:56Z", message: nil, status_log_id: 77937, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:11:57], updated_at: ~N[2026-08-21 12:11:57]}} [2026-08-21 12:12:27.009] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:12:27.009] [INFO ] Incoming JSON payload: {"oid":"936c0d1b-536c-44cd-a227-8ece6db13cba","sn":"98251226730001","uploadTime":"2026-08-21T12:12:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:12:26Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:12:27.010] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "936c0d1b-536c-44cd-a227-8ece6db13cba", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:12:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:12:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:12:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:12:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:12:26Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:12:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:12:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:12:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:12:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:12:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:12:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:12:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:12:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:12:26Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:12:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:12:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:12:26Z", "vendor" => "morefun"} [2026-08-21 12:12:27.010] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:12:27.010] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:12:27.010] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:12:27.012] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.1ms idle=770.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-08-21 12:12:27.013] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.5ms idle=231.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-08-21 12:12:27.016] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:12:27.017] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=4.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:12:27.018] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:12:27.060] [DEBUG] QUERY OK source="tms_terminals" db=42.0ms idle=5.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:12:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:12:27.061] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:12:27.062] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=44.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:12:27.147] [DEBUG] QUERY OK source="tms_terminals" db=85.2ms queue=0.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:12:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:12:27.196] [DEBUG] QUERY OK db=47.9ms queue=0.1ms idle=85.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "936c0d1b-536c-44cd-a227-8ece6db13cba", "2026-08-21T12:12:26Z", ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:12:27.196] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77938, oid: "936c0d1b-536c-44cd-a227-8ece6db13cba", upload_time: "2026-08-21T12:12:26Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]} [2026-08-21 12:12:27.196] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:12:26Z", "value" => "morefun"} [2026-08-21 12:12:27.261] [DEBUG] QUERY OK db=62.5ms queue=0.2ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "morefun", "vendor", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.262] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792713, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.262] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:12:26Z", "value" => "kiosk_launcher"} [2026-08-21 12:12:27.297] [DEBUG] QUERY OK db=34.8ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "kiosk_launcher", "model", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792714, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.298] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:12:26Z", "value" => "1.0"} [2026-08-21 12:12:27.324] [DEBUG] QUERY OK db=26.4ms queue=0.1ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "1.0", "app_version", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792715, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.325] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:12:26Z", "value" => "13"} [2026-08-21 12:12:27.363] [DEBUG] QUERY OK db=37.1ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "13", "android_version", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792716, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.365] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:12:26Z", "value" => "917"} [2026-08-21 12:12:27.436] [DEBUG] QUERY OK db=69.9ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "917", "ram_free_mb", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.436] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792717, itemkey: "ram_free_mb", value: "917", timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.437] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:12:26Z", "value" => "WIFI"} [2026-08-21 12:12:27.473] [DEBUG] QUERY OK db=35.8ms idle=74.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "WIFI", "network_type", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792718, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.473] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:12:26Z", "value" => "true"} [2026-08-21 12:12:27.542] [DEBUG] QUERY OK db=68.4ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "true", "kiosk_active", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792719, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.543] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:12:26Z", "value" => ""} [2026-08-21 12:12:27.613] [DEBUG] QUERY OK db=69.7ms queue=0.1ms idle=70.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:12:26Z", "sim_operator", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792720, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.613] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:12:26Z", "value" => "UNKNOWN"} [2026-08-21 12:12:27.649] [DEBUG] QUERY OK db=35.7ms idle=71.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "UNKNOWN", "sim_number", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792721, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.650] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:12:26Z", "value" => "UNKNOWN"} [2026-08-21 12:12:27.693] [DEBUG] QUERY OK db=42.6ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "UNKNOWN", "sim_iccid", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792722, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.694] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:12:26Z", "value" => "UNKNOWN"} [2026-08-21 12:12:27.733] [DEBUG] QUERY OK db=38.7ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "UNKNOWN", "sim_imsi", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792723, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.733] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:12:26Z", "value" => "UNKNOWN"} [2026-08-21 12:12:27.775] [DEBUG] QUERY OK db=41.0ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "UNKNOWN", "sim_iccid2", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792724, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.775] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:12:26Z", "value" => "UNKNOWN"} [2026-08-21 12:12:27.809] [DEBUG] QUERY OK db=33.1ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "UNKNOWN", "sim_imsi2", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792725, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.809] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:12:26Z", "value" => "35"} [2026-08-21 12:12:27.846] [DEBUG] QUERY OK db=36.0ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "35", "data_usage_mb", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792726, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.846] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:12:26Z", "value" => "0"} [2026-08-21 12:12:27.887] [DEBUG] QUERY OK db=40.0ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "0", "mobile_data_mb", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.887] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792727, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:27.887] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:12:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:12:27.952] [DEBUG] QUERY OK db=64.0ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:26Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77938, ~N[2026-08-21 12:12:27], ~N[2026-08-21 12:12:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:27.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792728, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:12:26Z", message: nil, status_log_id: 77938, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:27], updated_at: ~N[2026-08-21 12:12:27]}} [2026-08-21 12:12:53.975] [INFO ] Running offline device check... [2026-08-21 12:12:53.975] [INFO ] Starting offline device check... [2026-08-21 12:12:53.977] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.4ms idle=649.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-08-21 12:12:53.984] [INFO ] Starting scheduled rule validation [2026-08-21 12:12:53.984] [DEBUG] Validating missing assignments [2026-08-21 12:12:53.985] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.0ms queue=0.3ms idle=196.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:12:53.992] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.7ms idle=8.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:53.994] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=7.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:53.995] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:53.997] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:53.998] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:53.999] [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 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:53.999] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms queue=0.7ms idle=1.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-08-21 12:12:54.001] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=0.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-08-21 12:12:54.001] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.001] [DEBUG] Re-applied 0 rules during validation [2026-08-21 12:12:54.001] [DEBUG] Validating invalid assignments [2026-08-21 12:12:54.002] [DEBUG] Validating rule consistency [2026-08-21 12:12:54.002] [DEBUG] Updating group terminal counts [2026-08-21 12:12:54.002] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.004] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.007] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms queue=0.7ms idle=2.3ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-08-21 12:12:54.008] [DEBUG] QUERY OK source="terminal_groups" db=0.2ms queue=0.4ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:249 [2026-08-21 12:12:54.009] [DEBUG] QUERY OK source="terminal_groups" db=0.3ms queue=0.3ms idle=0.2ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-08-21 12:12:54.010] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.010] [DEBUG] QUERY OK source="terminal_group_rules" db=0.2ms queue=0.6ms 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-08-21 12:12:54.011] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.011] [DEBUG] QUERY OK source="terminal_group_rules" db=0.2ms queue=0.3ms 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-08-21 12:12:54.016] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.2ms queue=0.9ms idle=3.9ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:261 [2026-08-21 12:12:54.018] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.4ms queue=0.3ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:262 [2026-08-21 12:12:54.020] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=0.7ms idle=0.2ms SELECT t0.`assignment_type`, count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) GROUP BY t0.`assignment_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:269 [2026-08-21 12:12:54.020] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-08-21 12:12:54.020] [INFO ] Rule validation completed - applied 0 fixes [2026-08-21 12:12:54.026] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.6ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.032] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.034] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=5.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.035] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.036] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.055] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.8ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.056] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=19.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.057] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.059] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.060] [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-08-21 12:12:54.061] [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-08-21 12:12:54.099] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=37.9ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.100] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=38.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:12:54.101] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.107] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.108] [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-08-21 12:12:54.110] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.111] [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-08-21 12:12:54.112] [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-08-21 12:12:54.116] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.116] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.117] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.118] [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-08-21 12:12:54.119] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.122] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.122] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.123] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.124] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.125] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms 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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.126] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.127] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.128] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.129] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.129] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.130] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.131] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.132] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.133] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.134] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.135] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:12:54.135] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 12:12:54.135] [INFO ] Offline device check completed successfully [2026-08-21 12:12:55.642] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 12:12:55.642] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T16:12:53Z","org.device":[{"itemkey":"battery","value":48,"timestamp":"2026-08-21T16:12:53Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T16:12:53Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T16:12:53Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T16:12:53Z","message":""}]} [2026-08-21 12:12:55.643] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T16:12:53Z", "value" => 48}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T16:12:53Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T16:12:53Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T16:12:53Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T16:12:53Z"} [2026-08-21 12:12:55.643] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:12:55.646] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=1189.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:12:55.647] [INFO ] Terminal updated: 61250415798001 [2026-08-21 12:12:55.689] [DEBUG] QUERY OK source="tms_terminals" db=42.0ms idle=314.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:12:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:12:55.690] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=43.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:12:55.778] [DEBUG] QUERY OK source="tms_terminals" db=86.7ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:12:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:12:55.887] [DEBUG] QUERY OK db=107.4ms queue=0.1ms idle=89.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T16:12:53Z", ~N[2026-08-21 12:12:55], ~N[2026-08-21 12:12:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:12:55.887] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77939, oid: "org-id-placeholder", upload_time: "2026-08-21T16:12:53Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:55], updated_at: ~N[2026-08-21 12:12:55]} [2026-08-21 12:12:55.887] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T16:12:53Z", "value" => 48} [2026-08-21 12:12:55.923] [DEBUG] QUERY OK db=34.4ms queue=0.3ms idle=110.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:12:53Z", "48", "battery", 77939, ~N[2026-08-21 12:12:55], ~N[2026-08-21 12:12:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:55.923] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792729, itemkey: "battery", value: "48", timestamp: "2026-08-21T16:12:53Z", message: nil, status_log_id: 77939, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:55], updated_at: ~N[2026-08-21 12:12:55]}} [2026-08-21 12:12:55.923] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T16:12:53Z", "value" => 50} [2026-08-21 12:12:55.967] [DEBUG] QUERY OK db=41.8ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T16:12:53Z", "50", "memory", 77939, ~N[2026-08-21 12:12:55], ~N[2026-08-21 12:12:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:55.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792730, itemkey: "memory", value: "50", timestamp: "2026-08-21T16:12:53Z", message: "Normal", status_log_id: 77939, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:55], updated_at: ~N[2026-08-21 12:12:55]}} [2026-08-21 12:12:55.967] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T16:12:53Z", "value" => 50} [2026-08-21 12:12:55.990] [DEBUG] QUERY OK db=22.5ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:12:53Z", "50", "cpu", 77939, ~N[2026-08-21 12:12:55], ~N[2026-08-21 12:12:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:55.990] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792731, itemkey: "cpu", value: "50", timestamp: "2026-08-21T16:12:53Z", message: nil, status_log_id: 77939, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:55], updated_at: ~N[2026-08-21 12:12:55]}} [2026-08-21 12:12:55.991] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T16:12:53Z", "value" => "online"} [2026-08-21 12:12:56.024] [DEBUG] QUERY OK db=32.6ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:12:53Z", "online", "network", 77939, ~N[2026-08-21 12:12:55], ~N[2026-08-21 12:12:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:56.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792732, itemkey: "network", value: "online", timestamp: "2026-08-21T16:12:53Z", message: nil, status_log_id: 77939, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:55], updated_at: ~N[2026-08-21 12:12:55]}} [2026-08-21 12:12:56.024] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 12:12:57.101] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:12:57.101] [INFO ] Incoming JSON payload: {"oid":"a1433d73-8fdc-42bd-98b9-3c0adb92f06a","sn":"98251226730001","uploadTime":"2026-08-21T12:12:56Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:12:56Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:12:56Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:12:56Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:12:56Z"},{"itemkey":"ram_free_mb","value":"916","timestamp":"2026-08-21T12:12:56Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:12:56Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:12:56Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:12:56Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:12:56Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:12:56Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:12:56Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:12:56Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:12:56Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:12:56Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:12:57.103] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a1433d73-8fdc-42bd-98b9-3c0adb92f06a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:12:56Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:12:56Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:12:56Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:12:56Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:12:56Z", "value" => "916"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:12:56Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:12:56Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:12:56Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:12:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:12:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:12:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:12:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:12:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:12:56Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:12:56Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:12:56Z", "vendor" => "morefun"} [2026-08-21 12:12:57.103] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:12:57.103] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:12:57.103] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:12:57.105] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1079.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-08-21 12:12:57.106] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=770.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-08-21 12:12:57.106] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:12:57.107] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.6ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:12:57.107] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:12:57.148] [DEBUG] QUERY OK source="tms_terminals" db=40.0ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:12:57], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:12:57.148] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:12:57.149] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=40.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:12:57.195] [DEBUG] QUERY OK source="tms_terminals" db=45.7ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:12:57], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:12:57.219] [DEBUG] QUERY OK db=23.5ms idle=46.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a1433d73-8fdc-42bd-98b9-3c0adb92f06a", "2026-08-21T12:12:56Z", ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:12:57.219] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77940, oid: "a1433d73-8fdc-42bd-98b9-3c0adb92f06a", upload_time: "2026-08-21T12:12:56Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]} [2026-08-21 12:12:57.219] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:12:56Z", "value" => "morefun"} [2026-08-21 12:12:57.256] [DEBUG] QUERY OK db=36.2ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:56Z", "morefun", "vendor", 77940, ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:57.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792733, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]}} [2026-08-21 12:12:57.256] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:12:56Z", "value" => "kiosk_launcher"} [2026-08-21 12:12:57.314] [DEBUG] QUERY OK db=57.2ms queue=0.1ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:56Z", "kiosk_launcher", "model", 77940, ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:57.315] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792734, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]}} [2026-08-21 12:12:57.315] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:12:56Z", "value" => "1.0"} [2026-08-21 12:12:57.339] [DEBUG] QUERY OK db=23.5ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:56Z", "1.0", "app_version", 77940, ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:57.339] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792735, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]}} [2026-08-21 12:12:57.339] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:12:56Z", "value" => "13"} [2026-08-21 12:12:57.388] [DEBUG] QUERY OK db=48.0ms idle=1.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:56Z", "13", "android_version", 77940, ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:57.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792736, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]}} [2026-08-21 12:12:57.388] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:12:56Z", "value" => "916"} [2026-08-21 12:12:57.475] [DEBUG] QUERY OK db=86.8ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:56Z", "916", "ram_free_mb", 77940, ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:57.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792737, itemkey: "ram_free_mb", value: "916", timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]}} [2026-08-21 12:12:57.476] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:12:56Z", "value" => "WIFI"} [2026-08-21 12:12:57.535] [DEBUG] QUERY OK db=58.6ms idle=88.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:56Z", "WIFI", "network_type", 77940, ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:57.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792738, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]}} [2026-08-21 12:12:57.535] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:12:56Z", "value" => "true"} [2026-08-21 12:12:57.559] [DEBUG] QUERY OK db=23.1ms idle=60.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:56Z", "true", "kiosk_active", 77940, ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:57.560] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792739, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]}} [2026-08-21 12:12:57.560] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:12:56Z", "value" => ""} [2026-08-21 12:12:57.617] [DEBUG] QUERY OK db=56.5ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:12:56Z", "sim_operator", 77940, ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:57.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792740, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]}} [2026-08-21 12:12:57.617] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:12:56Z", "value" => "UNKNOWN"} [2026-08-21 12:12:57.698] [DEBUG] QUERY OK db=80.2ms idle=58.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:56Z", "UNKNOWN", "sim_number", 77940, ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:57.698] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792741, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]}} [2026-08-21 12:12:57.698] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:12:56Z", "value" => "UNKNOWN"} [2026-08-21 12:12:57.816] [DEBUG] QUERY OK db=117.4ms idle=81.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:56Z", "UNKNOWN", "sim_iccid", 77940, ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:57.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792742, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]}} [2026-08-21 12:12:57.817] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:12:56Z", "value" => "UNKNOWN"} [2026-08-21 12:12:57.861] [DEBUG] QUERY OK db=42.8ms queue=0.6ms idle=119.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:56Z", "UNKNOWN", "sim_imsi", 77940, ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:57.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792743, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]}} [2026-08-21 12:12:57.861] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:12:56Z", "value" => "UNKNOWN"} [2026-08-21 12:12:57.901] [DEBUG] QUERY OK db=39.9ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:56Z", "UNKNOWN", "sim_iccid2", 77940, ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:57.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792744, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]}} [2026-08-21 12:12:57.902] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:12:56Z", "value" => "UNKNOWN"} [2026-08-21 12:12:57.967] [DEBUG] QUERY OK db=64.8ms queue=0.1ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:56Z", "UNKNOWN", "sim_imsi2", 77940, ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:57.968] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792745, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]}} [2026-08-21 12:12:57.968] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:12:56Z", "value" => "35"} [2026-08-21 12:12:58.027] [DEBUG] QUERY OK db=58.9ms idle=66.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:56Z", "35", "data_usage_mb", 77940, ~N[2026-08-21 12:12:57], ~N[2026-08-21 12:12:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:58.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792746, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:57], updated_at: ~N[2026-08-21 12:12:57]}} [2026-08-21 12:12:58.028] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:12:56Z", "value" => "0"} [2026-08-21 12:12:58.098] [DEBUG] QUERY OK db=70.4ms idle=61.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12:56Z", "0", "mobile_data_mb", 77940, ~N[2026-08-21 12:12:58], ~N[2026-08-21 12:12:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:58.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792747, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:58], updated_at: ~N[2026-08-21 12:12:58]}} [2026-08-21 12:12:58.099] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:12:58.355] [DEBUG] QUERY OK db=255.3ms idle=72.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77940, ~N[2026-08-21 12:12:58], ~N[2026-08-21 12:12:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:12:58.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792748, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:12:56Z", message: nil, status_log_id: 77940, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:12:58], updated_at: ~N[2026-08-21 12:12:58]}} [2026-08-21 12:13:05.877] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:13:05.877] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:13:05Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:13:05Z","value":"52"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:13:05Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:13:05Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:13:05Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:13:05Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:13:05Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:13:05Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:13:05Z","vendor":"MoreFun"} [2026-08-21 12:13:05.878] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:13:05Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:13:05Z", "value" => "52"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:13:05Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:13:05Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:13:05Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:13:05Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:13:05Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:13:05Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:13:05Z", "vendor" => "MoreFun"} [2026-08-21 12:13:05.878] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:13:05.878] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:13:05.878] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:13:05.881] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms idle=500.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-08-21 12:13:05.881] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=92.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:13:05.884] [DEBUG] QUERY OK source="parameter_template_values" db=2.6ms idle=0.9ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:13:05.887] [DEBUG] QUERY OK source="parameter_definitions" db=1.2ms queue=0.5ms idle=4.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-08-21 12:13:05.889] [DEBUG] QUERY OK source="pos_terminal" db=0.6ms idle=3.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:13:05.929] [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` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:13:05.930] [DEBUG] QUERY OK db=0.6ms queue=0.9ms idle=1087.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 ["626165170000000"] [2026-08-21 12:13:05.931] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:13:05.932] [DEBUG] QUERY OK source="pos_terminal_data" db=1.4ms idle=42.1ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:13:05.932] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 12:13:05.933] [DEBUG] QUERY OK source="address" db=0.8ms idle=3.9ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:13:05.934] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:13:05.938] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:13:06.003] [DEBUG] QUERY OK db=62.4ms idle=8.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", "28f9c56a406b34896b1b9aa8d71dcd5a16365864eff50dbcd348e2046ba4a71b", 516, 936, ~U[2026-08-21 12:13: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-08-21 12:13:05], ~N[2026-08-21 12:13:05]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:13:06.003] [INFO ] AutoPushService: Created push log 49054 for MF919 params.zip [2026-08-21 12:13:06.004] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 516, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:13:06.004] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:13:06.004] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:13:06.006] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=71.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-08-21 12:13:06.014] [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-08-21 12:13:06.093] [DEBUG] QUERY OK db=75.7ms queue=0.4ms idle=13.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "20cd8dec2ab800ef4a2d9699b378f58bb36c9bd209f13e90373031bf8c31627a", 580, 17947, ~U[2026-08-21 12:13:06Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-08-21 12:13:06], ~N[2026-08-21 12:13:06]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:13:06.093] [INFO ] AutoPushService: Created push log 49055 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:13:06.093] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 580, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:13:06.093] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:13:06.094] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:13:06.096] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms queue=0.1ms idle=88.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-08-21 12:13:06.096] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:13:06.097] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:13:06.097] [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-08-21 12:13:06.100] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:13:06.101] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:13:06.101] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:13:06.104] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms queue=1.9ms idle=4.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:13:06.111] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:13:06.111] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:13:06.118] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=16.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:13:06.198] [DEBUG] QUERY OK source="tms_terminals" db=38.5ms queue=41.2ms idle=13.7ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:13:06], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:13:06.198] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:13:06.198] [INFO ] Event published: terminal_updated [2026-08-21 12:13:06.198] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:13:06.198] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:13:06.199] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:13:06.200] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms queue=1.5ms idle=81.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:13:06], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:13:06.204] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=1.5ms 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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:13:06.205] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:13:06.205] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:13:06.286] [DEBUG] QUERY OK source="tms_terminals" db=43.7ms queue=41.6ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:13:06], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:13:06.288] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=81.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-08-21 12:13:06.289] [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-08-21 12:13:06.290] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=1.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:13:06.290] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:13:06.356] [DEBUG] QUERY OK source="parameter_push_logs" db=66.2ms 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-08-21 11:43:06]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:13:06.356] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:13:06.357] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:13:06.358] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=67.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:13:06.359] [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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:13:06.359] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:13:06.360] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:13:06.453] [DEBUG] QUERY OK source="tms_terminals" db=52.0ms queue=41.4ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:13:06], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:13:06.483] [DEBUG] QUERY OK db=29.2ms queue=0.1ms idle=70.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:13:05Z", ~N[2026-08-21 12:13:06], ~N[2026-08-21 12:13:06]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:13:06.483] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77941, oid: "organization_id", upload_time: "2026-08-21T12:13:05Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:06], updated_at: ~N[2026-08-21 12:13:06]} [2026-08-21 12:13:06.484] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:13:05Z", "value" => "online"} [2026-08-21 12:13:06.546] [DEBUG] QUERY OK db=62.1ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:13:05Z", "online", "status", 77941, ~N[2026-08-21 12:13:06], ~N[2026-08-21 12:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:06.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792749, itemkey: "status", value: "online", timestamp: "2026-08-21T12:13:05Z", message: "Terminal status update", status_log_id: 77941, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:06], updated_at: ~N[2026-08-21 12:13:06]}} [2026-08-21 12:13:06.546] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:13:06.547] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:13:05Z", "value" => "52"} [2026-08-21 12:13:06.587] [DEBUG] QUERY OK db=40.1ms idle=63.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:13:05Z", "52", "battery", 77941, ~N[2026-08-21 12:13:06], ~N[2026-08-21 12:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:06.587] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792750, itemkey: "battery", value: "52", timestamp: "2026-08-21T12:13:05Z", message: "Battery level", status_log_id: 77941, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:06], updated_at: ~N[2026-08-21 12:13:06]}} [2026-08-21 12:13:06.588] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:13:05Z", "value" => "online"} [2026-08-21 12:13:06.649] [DEBUG] QUERY OK db=60.8ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:13:05Z", "online", "network", 77941, ~N[2026-08-21 12:13:06], ~N[2026-08-21 12:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:06.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792751, itemkey: "network", value: "online", timestamp: "2026-08-21T12:13:05Z", message: "Network connectivity", status_log_id: 77941, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:06], updated_at: ~N[2026-08-21 12:13:06]}} [2026-08-21 12:13:06.649] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:13:06.650] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:13:05Z", "value" => "0"} [2026-08-21 12:13:06.692] [DEBUG] QUERY OK db=41.2ms idle=63.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:13:05Z", "0", "cpu", 77941, ~N[2026-08-21 12:13:06], ~N[2026-08-21 12:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:06.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792752, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:13:05Z", message: "CPU usage percentage", status_log_id: 77941, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:06], updated_at: ~N[2026-08-21 12:13:06]}} [2026-08-21 12:13:06.692] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:13:05Z", "value" => "1.0.0"} [2026-08-21 12:13:06.737] [DEBUG] QUERY OK db=45.0ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:13:05Z", "1.0.0", "parameter_config", 77941, ~N[2026-08-21 12:13:06], ~N[2026-08-21 12:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:06.738] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792753, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:13:05Z", message: "Current parameters version", status_log_id: 77941, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:06], updated_at: ~N[2026-08-21 12:13:06]}} [2026-08-21 12:13:06.738] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:13:05Z", "value" => "1.0.1"} [2026-08-21 12:13:06.780] [DEBUG] QUERY OK db=41.6ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:13:05Z", "1.0.1", "emv_config", 77941, ~N[2026-08-21 12:13:06], ~N[2026-08-21 12:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:06.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792754, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:13:05Z", message: "Current EMV config version", status_log_id: 77941, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:06], updated_at: ~N[2026-08-21 12:13:06]}} [2026-08-21 12:13:06.780] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:13:05Z", "value" => ""} [2026-08-21 12:13:06.815] [DEBUG] QUERY OK db=33.6ms queue=0.5ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:13:05Z", "keys_config", 77941, ~N[2026-08-21 12:13:06], ~N[2026-08-21 12:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:06.815] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792755, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:13:05Z", message: "Current keys config version", status_log_id: 77941, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:06], updated_at: ~N[2026-08-21 12:13:06]}} [2026-08-21 12:13:06.815] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:13:05Z", "value" => "3.8.7.3"} [2026-08-21 12:13:06.854] [DEBUG] QUERY OK db=37.2ms queue=0.4ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:13:05Z", "3.8.7.3", "application", 77941, ~N[2026-08-21 12:13:06], ~N[2026-08-21 12:13:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:06.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792756, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:13:05Z", message: "Current application version", status_log_id: 77941, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:06], updated_at: ~N[2026-08-21 12:13:06]}} [2026-08-21 12:13:06.854] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:13:06Z"} [2026-08-21 12:13:06.861] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:13:06Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 14, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:13:12.446] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 12:13:12.447] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T03:22:37Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T03:22:37Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T03:22:37Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T03:22:37Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T03:22:37Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T03:22:37Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T03:22:37Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T03:22:37Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T03:22:37Z","vendor":"MoreFun"} [2026-08-21 12:13:12.448] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:22:37Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:22:37Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:22:37Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:22:37Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:22:37Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:22:37Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:22:37Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:22:37Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T03:22:37Z", "vendor" => "MoreFun"} [2026-08-21 12:13:12.448] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:13:12.448] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 12:13:12.448] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 12:13:12.449] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=658.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-08-21 12:13:12.450] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=15.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 12:13:12.452] [DEBUG] QUERY OK source="parameter_template_values" db=1.1ms 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-08-21 12:13:12.454] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=1.3ms 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-08-21 12:13:12.458] [DEBUG] QUERY OK source="pos_terminal" db=2.5ms idle=3.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:13:12.496] [DEBUG] QUERY OK source="pos_merchant" db=37.5ms idle=3.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:13:12.497] [DEBUG] QUERY OK db=0.5ms queue=0.7ms idle=658.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 ["123451234512345"] [2026-08-21 12:13:12.498] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:13:12.499] [DEBUG] QUERY OK source="pos_terminal_data" db=0.8ms idle=39.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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:13:12.499] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 12:13:12.501] [DEBUG] QUERY OK source="address" db=2.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` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:13:12.501] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 12:13:12.503] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 12:13:12.544] [DEBUG] QUERY OK db=39.5ms queue=0.8ms idle=5.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", "f8a86a28d292b43015e0722e002dc86c3afeab684f65ff209fc3bdaaf35bb150", 2531, 932, ~U[2026-08-21 12:13:12Z], "priv/ota/98250623730001/params.zip", 19, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-08-21 12:13:12], ~N[2026-08-21 12:13:12]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:13:12.545] [INFO ] AutoPushService: Created push log 49056 for MF919 params.zip [2026-08-21 12:13:12.546] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 2531, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:13:12.546] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:13:12.546] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 12:13:12.548] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms queue=0.2ms idle=45.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-08-21 12:13:12.550] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 12:13:12.594] [DEBUG] QUERY OK db=41.5ms queue=0.7ms idle=7.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`push_type`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "75d0e3e5bbd3b2e7403b0ea8c9c092e450819c8056b296d9619c5c1b7f5f684f", 2627, 17947, ~U[2026-08-21 12:13:12Z], "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-08-21 12:13:12], ~N[2026-08-21 12:13:12]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:13:12.594] [INFO ] AutoPushService: Created push log 49057 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:13:12.594] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 2627, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:13:12.594] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:13:12.595] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 12:13:12.598] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=48.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-08-21 12:13:12.598] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 12:13:12.602] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.1ms idle=6.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:13:12.602] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 12:13:12.604] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:13:12.604] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:13:12.604] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:13:12.605] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-08-21 12:13:12.606] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:13:12.606] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 12:13:12.607] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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-08-21 12:13:12.607] [INFO ] Terminal updated: 98250623730001 [2026-08-21 12:13:12.666] [DEBUG] QUERY OK source="tms_terminals" db=58.9ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:13:12], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:13:12.667] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=59.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-08-21 12:13:12.668] [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-08-21 12:13:12.669] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms 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-08-21 12:13:12.669] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:13:12.695] [DEBUG] QUERY OK source="parameter_push_logs" db=24.7ms 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 [19, "application", ~N[2026-08-21 11:43:12]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:13:12.695] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:13:12.696] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 12:13:12.696] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=26.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:13:12.697] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=2.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:13:12.698] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:13:12.699] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.1ms idle=2.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:13:12.733] [DEBUG] QUERY OK source="tms_terminals" db=31.2ms queue=0.1ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:13:12], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:13:12.766] [DEBUG] QUERY OK db=32.9ms idle=33.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T03:22:37Z", ~N[2026-08-21 12:13:12], ~N[2026-08-21 12:13:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:13:12.766] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77942, oid: "organization_id", upload_time: "2026-08-21T03:22:37Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:12], updated_at: ~N[2026-08-21 12:13:12]} [2026-08-21 12:13:12.767] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:22:37Z", "value" => "online"} [2026-08-21 12:13:12.803] [DEBUG] QUERY OK db=35.6ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T03:22:37Z", "online", "status", 77942, ~N[2026-08-21 12:13:12], ~N[2026-08-21 12:13:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:12.804] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792757, itemkey: "status", value: "online", timestamp: "2026-08-21T03:22:37Z", message: "Terminal status update", status_log_id: 77942, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:12], updated_at: ~N[2026-08-21 12:13:12]}} [2026-08-21 12:13:12.804] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 12:13:12.805] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:22:37Z", "value" => "51"} [2026-08-21 12:13:12.846] [DEBUG] QUERY OK db=40.5ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T03:22:37Z", "51", "battery", 77942, ~N[2026-08-21 12:13:12], ~N[2026-08-21 12:13:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:12.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792758, itemkey: "battery", value: "51", timestamp: "2026-08-21T03:22:37Z", message: "Battery level", status_log_id: 77942, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:12], updated_at: ~N[2026-08-21 12:13:12]}} [2026-08-21 12:13:12.847] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:22:37Z", "value" => "online"} [2026-08-21 12:13:12.884] [DEBUG] QUERY OK db=36.4ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T03:22:37Z", "online", "network", 77942, ~N[2026-08-21 12:13:12], ~N[2026-08-21 12:13:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:12.884] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792759, itemkey: "network", value: "online", timestamp: "2026-08-21T03:22:37Z", message: "Network connectivity", status_log_id: 77942, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:12], updated_at: ~N[2026-08-21 12:13:12]}} [2026-08-21 12:13:12.884] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 12:13:12.885] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:22:37Z", "value" => "0"} [2026-08-21 12:13:12.917] [DEBUG] QUERY OK db=32.5ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T03:22:37Z", "0", "cpu", 77942, ~N[2026-08-21 12:13:12], ~N[2026-08-21 12:13:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:12.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792760, itemkey: "cpu", value: "0", timestamp: "2026-08-21T03:22:37Z", message: "CPU usage percentage", status_log_id: 77942, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:12], updated_at: ~N[2026-08-21 12:13:12]}} [2026-08-21 12:13:12.918] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:22:37Z", "value" => "1.0.0"} [2026-08-21 12:13:12.964] [DEBUG] QUERY OK db=45.3ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T03:22:37Z", "1.0.0", "parameter_config", 77942, ~N[2026-08-21 12:13:12], ~N[2026-08-21 12:13:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:12.964] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792761, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T03:22:37Z", message: "Current parameters version", status_log_id: 77942, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:12], updated_at: ~N[2026-08-21 12:13:12]}} [2026-08-21 12:13:12.964] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:22:37Z", "value" => "1.0.1"} [2026-08-21 12:13:12.990] [DEBUG] QUERY OK db=25.0ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T03:22:37Z", "1.0.1", "emv_config", 77942, ~N[2026-08-21 12:13:12], ~N[2026-08-21 12:13:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:12.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792762, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T03:22:37Z", message: "Current EMV config version", status_log_id: 77942, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:12], updated_at: ~N[2026-08-21 12:13:12]}} [2026-08-21 12:13:12.991] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:22:37Z", "value" => ""} [2026-08-21 12:13:13.053] [DEBUG] QUERY OK db=62.0ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T03:22:37Z", "keys_config", 77942, ~N[2026-08-21 12:13:12], ~N[2026-08-21 12:13:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:13.054] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792763, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T03:22:37Z", message: "Current keys config version", status_log_id: 77942, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:12], updated_at: ~N[2026-08-21 12:13:12]}} [2026-08-21 12:13:13.054] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:22:37Z", "value" => "3.8.7.3"} [2026-08-21 12:13:13.140] [DEBUG] QUERY OK db=85.6ms idle=64.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T03:22:37Z", "3.8.7.3", "application", 77942, ~N[2026-08-21 12:13:13], ~N[2026-08-21 12:13:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:13.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792764, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T03:22:37Z", message: "Current application version", status_log_id: 77942, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:13], updated_at: ~N[2026-08-21 12:13:13]}} [2026-08-21 12:13:13.140] [WARN ] Unexpected async result [2026-08-21 12:13:13.140] [WARN ] Unexpected async result [2026-08-21 12:13:26.550] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:13:06Z"} [2026-08-21 12:13:26.551] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:13:06Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 15, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:13:27.215] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:13:27.215] [INFO ] Incoming JSON payload: {"oid":"23771746-d622-4a1f-8a32-a90f44659d2d","sn":"98251226730001","uploadTime":"2026-08-21T12:13:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"ram_free_mb","value":"922","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:13:26Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:13:27.216] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "23771746-d622-4a1f-8a32-a90f44659d2d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:13:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:13:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:13:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:13:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:13:26Z", "value" => "922"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:13:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:13:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:13:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:13:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:13:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:13:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:13:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:13:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:13:26Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:13:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:13:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:13:26Z", "vendor" => "morefun"} [2026-08-21 12:13:27.216] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:13:27.216] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:13:27.216] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:13:27.217] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=738.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 12:13:27.218] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=427.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-08-21 12:13:27.218] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:13:27.219] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:13:27.246] [DEBUG] QUERY OK source="tms_terminals" db=26.4ms idle=1.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 12:13:27], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:13:27.246] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:13:27.246] [INFO ] Event published: terminal_updated [2026-08-21 12:13:27.246] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:13:27.247] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:13:27.247] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:13:27.248] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.8ms idle=27.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:13:27], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:13:27.248] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:13:27.250] [DEBUG] QUERY OK source="terminal_group_rules" db=1.3ms idle=0.1ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:13:27.250] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:13:27.304] [DEBUG] QUERY OK source="tms_terminals" db=14.6ms queue=41.6ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 12:13:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:13:27.304] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:13:27.305] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=54.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:13:27.383] [DEBUG] QUERY OK source="tms_terminals" db=34.9ms queue=41.4ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:13:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:13:27.431] [DEBUG] QUERY OK db=47.2ms idle=78.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "23771746-d622-4a1f-8a32-a90f44659d2d", "2026-08-21T12:13:26Z", ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:13:27.431] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77943, oid: "23771746-d622-4a1f-8a32-a90f44659d2d", upload_time: "2026-08-21T12:13:26Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]} [2026-08-21 12:13:27.432] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:13:26Z", "value" => "morefun"} [2026-08-21 12:13:27.513] [DEBUG] QUERY OK db=39.8ms queue=41.0ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "morefun", "vendor", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.514] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792765, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.514] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:13:26Z", "value" => "kiosk_launcher"} [2026-08-21 12:13:27.542] [DEBUG] QUERY OK db=27.5ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "kiosk_launcher", "model", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792766, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.542] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:13:26Z", "value" => "1.0"} [2026-08-21 12:13:27.589] [DEBUG] QUERY OK db=46.2ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "1.0", "app_version", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792767, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.590] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:13:26Z", "value" => "13"} [2026-08-21 12:13:27.629] [DEBUG] QUERY OK db=37.8ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "13", "android_version", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.629] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792768, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.629] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:13:26Z", "value" => "922"} [2026-08-21 12:13:27.662] [DEBUG] QUERY OK db=32.3ms queue=0.1ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "922", "ram_free_mb", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792769, itemkey: "ram_free_mb", value: "922", timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.662] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:13:26Z", "value" => "WIFI"} [2026-08-21 12:13:27.682] [DEBUG] QUERY OK db=18.4ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "WIFI", "network_type", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792770, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.682] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:13:26Z", "value" => "true"} [2026-08-21 12:13:27.710] [DEBUG] QUERY OK db=27.2ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "true", "kiosk_active", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.710] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792771, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.710] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:13:26Z", "value" => ""} [2026-08-21 12:13:27.747] [DEBUG] QUERY OK db=36.4ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:13:26Z", "sim_operator", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792772, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.747] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:13:26Z", "value" => "UNKNOWN"} [2026-08-21 12:13:27.782] [DEBUG] QUERY OK db=34.6ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "UNKNOWN", "sim_number", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792773, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.783] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:13:26Z", "value" => "UNKNOWN"} [2026-08-21 12:13:27.828] [DEBUG] QUERY OK db=44.1ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "UNKNOWN", "sim_iccid", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792774, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.828] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:13:26Z", "value" => "UNKNOWN"} [2026-08-21 12:13:27.855] [DEBUG] QUERY OK db=26.7ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "UNKNOWN", "sim_imsi", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792775, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.856] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:13:26Z", "value" => "UNKNOWN"} [2026-08-21 12:13:27.899] [DEBUG] QUERY OK db=41.4ms queue=1.0ms idle=28.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "UNKNOWN", "sim_iccid2", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792776, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.900] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:13:26Z", "value" => "UNKNOWN"} [2026-08-21 12:13:27.915] [DEBUG] QUERY OK db=14.8ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "UNKNOWN", "sim_imsi2", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.915] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792777, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.915] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:13:26Z", "value" => "35"} [2026-08-21 12:13:27.948] [DEBUG] QUERY OK db=32.2ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "35", "data_usage_mb", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.948] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792778, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.948] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:13:26Z", "value" => "0"} [2026-08-21 12:13:27.985] [DEBUG] QUERY OK db=36.1ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "0", "mobile_data_mb", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:27.985] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792779, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:27.987] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:13:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:13:28.029] [DEBUG] QUERY OK db=40.8ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:26Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77943, ~N[2026-08-21 12:13:27], ~N[2026-08-21 12:13:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:28.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792780, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:13:26Z", message: nil, status_log_id: 77943, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:27], updated_at: ~N[2026-08-21 12:13:27]}} [2026-08-21 12:13:57.552] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:13:57.552] [INFO ] Incoming JSON payload: {"oid":"209e6bde-0176-4a41-9e80-3bc47305b66f","sn":"98251226730001","uploadTime":"2026-08-21T12:13:56Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:13:56Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:13:56Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:13:56Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:13:56Z"},{"itemkey":"ram_free_mb","value":"921","timestamp":"2026-08-21T12:13:56Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:13:56Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:13:56Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:13:56Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:13:56Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:13:56Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:13:56Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:13:56Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:13:56Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:13:56Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:13: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:13:57.554] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "209e6bde-0176-4a41-9e80-3bc47305b66f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:13:56Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:13:56Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:13:56Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:13:56Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:13:56Z", "value" => "921"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:13:56Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:13:56Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:13:56Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:13:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:13:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:13:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:13:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:13:56Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:13:56Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:13:56Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:13: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:13:56Z", "vendor" => "morefun"} [2026-08-21 12:13:57.554] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:13:57.554] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:13:57.554] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:13:57.556] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms queue=0.1ms idle=1759.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-08-21 12:13:57.558] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms idle=988.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-08-21 12:13:57.558] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:13:57.560] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=2.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:13:57.560] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:13:57.651] [DEBUG] QUERY OK source="tms_terminals" db=48.1ms queue=41.6ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:13:57], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:13:57.651] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:13:57.653] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=80.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-08-21 12:13:57.694] [DEBUG] QUERY OK source="tms_terminals" db=40.9ms queue=0.1ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:13:57], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:13:57.715] [DEBUG] QUERY OK db=20.0ms idle=41.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "209e6bde-0176-4a41-9e80-3bc47305b66f", "2026-08-21T12:13:56Z", ~N[2026-08-21 12:13:57], ~N[2026-08-21 12:13:57]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:13:57.715] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77944, oid: "209e6bde-0176-4a41-9e80-3bc47305b66f", upload_time: "2026-08-21T12:13:56Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:57], updated_at: ~N[2026-08-21 12:13:57]} [2026-08-21 12:13:57.715] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:13:56Z", "value" => "morefun"} [2026-08-21 12:13:57.777] [DEBUG] QUERY OK db=58.5ms queue=1.4ms idle=22.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:56Z", "morefun", "vendor", 77944, ~N[2026-08-21 12:13:57], ~N[2026-08-21 12:13:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:57.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792781, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:57], updated_at: ~N[2026-08-21 12:13:57]}} [2026-08-21 12:13:57.777] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:13:56Z", "value" => "kiosk_launcher"} [2026-08-21 12:13:57.812] [DEBUG] QUERY OK db=35.0ms idle=62.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:56Z", "kiosk_launcher", "model", 77944, ~N[2026-08-21 12:13:57], ~N[2026-08-21 12:13:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:57.812] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792782, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:57], updated_at: ~N[2026-08-21 12:13:57]}} [2026-08-21 12:13:57.813] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:13:56Z", "value" => "1.0"} [2026-08-21 12:13:57.853] [DEBUG] QUERY OK db=40.2ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:56Z", "1.0", "app_version", 77944, ~N[2026-08-21 12:13:57], ~N[2026-08-21 12:13:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:57.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792783, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:57], updated_at: ~N[2026-08-21 12:13:57]}} [2026-08-21 12:13:57.854] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:13:56Z", "value" => "13"} [2026-08-21 12:13:57.890] [DEBUG] QUERY OK db=35.3ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:56Z", "13", "android_version", 77944, ~N[2026-08-21 12:13:57], ~N[2026-08-21 12:13:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:57.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792784, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:57], updated_at: ~N[2026-08-21 12:13:57]}} [2026-08-21 12:13:57.890] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:13:56Z", "value" => "921"} [2026-08-21 12:13:57.939] [DEBUG] QUERY OK db=47.3ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:56Z", "921", "ram_free_mb", 77944, ~N[2026-08-21 12:13:57], ~N[2026-08-21 12:13:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:57.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792785, itemkey: "ram_free_mb", value: "921", timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:57], updated_at: ~N[2026-08-21 12:13:57]}} [2026-08-21 12:13:57.939] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:13:56Z", "value" => "WIFI"} [2026-08-21 12:13:57.979] [DEBUG] QUERY OK db=39.7ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:56Z", "WIFI", "network_type", 77944, ~N[2026-08-21 12:13:57], ~N[2026-08-21 12:13:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:57.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792786, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:57], updated_at: ~N[2026-08-21 12:13:57]}} [2026-08-21 12:13:57.979] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:13:56Z", "value" => "true"} [2026-08-21 12:13:58.016] [DEBUG] QUERY OK db=36.5ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:56Z", "true", "kiosk_active", 77944, ~N[2026-08-21 12:13:57], ~N[2026-08-21 12:13:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:58.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792787, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:57], updated_at: ~N[2026-08-21 12:13:57]}} [2026-08-21 12:13:58.017] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:13:56Z", "value" => ""} [2026-08-21 12:13:58.067] [DEBUG] QUERY OK db=49.9ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:13:56Z", "sim_operator", 77944, ~N[2026-08-21 12:13:58], ~N[2026-08-21 12:13:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:58.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792788, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:58], updated_at: ~N[2026-08-21 12:13:58]}} [2026-08-21 12:13:58.067] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:13:56Z", "value" => "UNKNOWN"} [2026-08-21 12:13:58.121] [DEBUG] QUERY OK db=53.0ms idle=51.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:56Z", "UNKNOWN", "sim_number", 77944, ~N[2026-08-21 12:13:58], ~N[2026-08-21 12:13:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:58.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792789, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:58], updated_at: ~N[2026-08-21 12:13:58]}} [2026-08-21 12:13:58.121] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:13:56Z", "value" => "UNKNOWN"} [2026-08-21 12:13:58.193] [DEBUG] QUERY OK db=72.0ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:56Z", "UNKNOWN", "sim_iccid", 77944, ~N[2026-08-21 12:13:58], ~N[2026-08-21 12:13:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:58.194] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792790, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:58], updated_at: ~N[2026-08-21 12:13:58]}} [2026-08-21 12:13:58.194] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:13:56Z", "value" => "UNKNOWN"} [2026-08-21 12:13:58.218] [DEBUG] QUERY OK db=24.1ms idle=73.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:56Z", "UNKNOWN", "sim_imsi", 77944, ~N[2026-08-21 12:13:58], ~N[2026-08-21 12:13:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:58.219] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792791, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:58], updated_at: ~N[2026-08-21 12:13:58]}} [2026-08-21 12:13:58.219] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:13:56Z", "value" => "UNKNOWN"} [2026-08-21 12:13:58.299] [DEBUG] QUERY OK db=79.9ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:56Z", "UNKNOWN", "sim_iccid2", 77944, ~N[2026-08-21 12:13:58], ~N[2026-08-21 12:13:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:58.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792792, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:58], updated_at: ~N[2026-08-21 12:13:58]}} [2026-08-21 12:13:58.299] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:13:56Z", "value" => "UNKNOWN"} [2026-08-21 12:13:58.375] [DEBUG] QUERY OK db=75.6ms idle=81.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:56Z", "UNKNOWN", "sim_imsi2", 77944, ~N[2026-08-21 12:13:58], ~N[2026-08-21 12:13:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:58.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792793, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:58], updated_at: ~N[2026-08-21 12:13:58]}} [2026-08-21 12:13:58.376] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:13:56Z", "value" => "35"} [2026-08-21 12:13:58.427] [DEBUG] QUERY OK db=50.4ms idle=77.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:56Z", "35", "data_usage_mb", 77944, ~N[2026-08-21 12:13:58], ~N[2026-08-21 12:13:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:58.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792794, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:58], updated_at: ~N[2026-08-21 12:13:58]}} [2026-08-21 12:13:58.427] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:13:56Z", "value" => "0"} [2026-08-21 12:13:58.467] [DEBUG] QUERY OK db=37.6ms queue=0.1ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13:56Z", "0", "mobile_data_mb", 77944, ~N[2026-08-21 12:13:58], ~N[2026-08-21 12:13:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:58.467] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792795, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:58], updated_at: ~N[2026-08-21 12:13:58]}} [2026-08-21 12:13:58.469] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:13: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:13:58.524] [DEBUG] QUERY OK db=52.2ms queue=1.0ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:13: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77944, ~N[2026-08-21 12:13:58], ~N[2026-08-21 12:13:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:13:58.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792796, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:13:56Z", message: nil, status_log_id: 77944, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:13:58], updated_at: ~N[2026-08-21 12:13:58]}} [2026-08-21 12:14:27.669] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:14:27.669] [INFO ] Incoming JSON payload: {"oid":"61307d38-e5c3-4a3d-9030-9a1550e582e9","sn":"98251226730001","uploadTime":"2026-08-21T12:14:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:14:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:14:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:14:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:14:27Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-08-21T12:14:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:14:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:14:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:14:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:14:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:14:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:14:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:14:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:14:27Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:14:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:14:27.670] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "61307d38-e5c3-4a3d-9030-9a1550e582e9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:14:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:14:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:14:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:14:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:14:27Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:14:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:14:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:14:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:14:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:14:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:14:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:14:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:14:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:14:27Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:14:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:14:27Z", "vendor" => "morefun"} [2026-08-21 12:14:27.670] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:14:27.670] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:14:27.670] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:14:27.671] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1870.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-08-21 12:14:27.672] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=970.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-08-21 12:14:27.672] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:14:27.673] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:14:27.673] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:14:27.726] [DEBUG] QUERY OK source="tms_terminals" db=52.7ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:14:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:14:27.726] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:14:27.727] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=24.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:14:27.768] [DEBUG] QUERY OK source="tms_terminals" db=40.5ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:14:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:14:27.807] [DEBUG] QUERY OK db=38.0ms idle=41.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "61307d38-e5c3-4a3d-9030-9a1550e582e9", "2026-08-21T12:14:27Z", ~N[2026-08-21 12:14:27], ~N[2026-08-21 12:14:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:14:27.807] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77945, oid: "61307d38-e5c3-4a3d-9030-9a1550e582e9", upload_time: "2026-08-21T12:14:27Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:27], updated_at: ~N[2026-08-21 12:14:27]} [2026-08-21 12:14:27.807] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:14:27Z", "value" => "morefun"} [2026-08-21 12:14:27.839] [DEBUG] QUERY OK db=31.4ms idle=39.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:27Z", "morefun", "vendor", 77945, ~N[2026-08-21 12:14:27], ~N[2026-08-21 12:14:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:27.839] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792797, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:27], updated_at: ~N[2026-08-21 12:14:27]}} [2026-08-21 12:14:27.839] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:14:27Z", "value" => "kiosk_launcher"} [2026-08-21 12:14:27.873] [DEBUG] QUERY OK db=32.7ms idle=33.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:27Z", "kiosk_launcher", "model", 77945, ~N[2026-08-21 12:14:27], ~N[2026-08-21 12:14:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:27.873] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792798, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:27], updated_at: ~N[2026-08-21 12:14:27]}} [2026-08-21 12:14:27.873] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:14:27Z", "value" => "1.0"} [2026-08-21 12:14:27.906] [DEBUG] QUERY OK db=32.6ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:27Z", "1.0", "app_version", 77945, ~N[2026-08-21 12:14:27], ~N[2026-08-21 12:14:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:27.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792799, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:27], updated_at: ~N[2026-08-21 12:14:27]}} [2026-08-21 12:14:27.906] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:14:27Z", "value" => "13"} [2026-08-21 12:14:27.952] [DEBUG] QUERY OK db=44.2ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:27Z", "13", "android_version", 77945, ~N[2026-08-21 12:14:27], ~N[2026-08-21 12:14:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:27.952] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792800, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:27], updated_at: ~N[2026-08-21 12:14:27]}} [2026-08-21 12:14:27.952] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:14:27Z", "value" => "917"} [2026-08-21 12:14:28.014] [DEBUG] QUERY OK db=61.5ms queue=0.1ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:27Z", "917", "ram_free_mb", 77945, ~N[2026-08-21 12:14:27], ~N[2026-08-21 12:14:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:28.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792801, itemkey: "ram_free_mb", value: "917", timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:27], updated_at: ~N[2026-08-21 12:14:27]}} [2026-08-21 12:14:28.015] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:14:27Z", "value" => "WIFI"} [2026-08-21 12:14:28.062] [DEBUG] QUERY OK db=47.3ms idle=63.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:27Z", "WIFI", "network_type", 77945, ~N[2026-08-21 12:14:28], ~N[2026-08-21 12:14:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:28.062] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792802, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:28], updated_at: ~N[2026-08-21 12:14:28]}} [2026-08-21 12:14:28.063] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:14:27Z", "value" => "true"} [2026-08-21 12:14:28.104] [DEBUG] QUERY OK db=40.1ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:27Z", "true", "kiosk_active", 77945, ~N[2026-08-21 12:14:28], ~N[2026-08-21 12:14:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:28.104] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792803, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:28], updated_at: ~N[2026-08-21 12:14:28]}} [2026-08-21 12:14:28.104] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:14:27Z", "value" => ""} [2026-08-21 12:14:28.135] [DEBUG] QUERY OK db=30.9ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:14:27Z", "sim_operator", 77945, ~N[2026-08-21 12:14:28], ~N[2026-08-21 12:14:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:28.136] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792804, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:28], updated_at: ~N[2026-08-21 12:14:28]}} [2026-08-21 12:14:28.136] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:14:27Z", "value" => "UNKNOWN"} [2026-08-21 12:14:28.173] [DEBUG] QUERY OK db=36.8ms idle=32.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:27Z", "UNKNOWN", "sim_number", 77945, ~N[2026-08-21 12:14:28], ~N[2026-08-21 12:14:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:28.173] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792805, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:28], updated_at: ~N[2026-08-21 12:14:28]}} [2026-08-21 12:14:28.173] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:14:27Z", "value" => "UNKNOWN"} [2026-08-21 12:14:28.236] [DEBUG] QUERY OK db=62.0ms queue=0.1ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:27Z", "UNKNOWN", "sim_iccid", 77945, ~N[2026-08-21 12:14:28], ~N[2026-08-21 12:14:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:28.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792806, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:28], updated_at: ~N[2026-08-21 12:14:28]}} [2026-08-21 12:14:28.237] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:14:27Z", "value" => "UNKNOWN"} [2026-08-21 12:14:28.294] [DEBUG] QUERY OK db=56.8ms idle=64.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:27Z", "UNKNOWN", "sim_imsi", 77945, ~N[2026-08-21 12:14:28], ~N[2026-08-21 12:14:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:28.295] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792807, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:28], updated_at: ~N[2026-08-21 12:14:28]}} [2026-08-21 12:14:28.295] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:14:27Z", "value" => "UNKNOWN"} [2026-08-21 12:14:28.365] [DEBUG] QUERY OK db=69.6ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:27Z", "UNKNOWN", "sim_iccid2", 77945, ~N[2026-08-21 12:14:28], ~N[2026-08-21 12:14:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:28.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792808, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:28], updated_at: ~N[2026-08-21 12:14:28]}} [2026-08-21 12:14:28.365] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:14:27Z", "value" => "UNKNOWN"} [2026-08-21 12:14:28.433] [DEBUG] QUERY OK db=67.5ms idle=70.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:27Z", "UNKNOWN", "sim_imsi2", 77945, ~N[2026-08-21 12:14:28], ~N[2026-08-21 12:14:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:28.433] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792809, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:28], updated_at: ~N[2026-08-21 12:14:28]}} [2026-08-21 12:14:28.433] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:14:27Z", "value" => "35"} [2026-08-21 12:14:28.520] [DEBUG] QUERY OK db=86.4ms idle=69.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:27Z", "35", "data_usage_mb", 77945, ~N[2026-08-21 12:14:28], ~N[2026-08-21 12:14:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:28.520] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792810, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:28], updated_at: ~N[2026-08-21 12:14:28]}} [2026-08-21 12:14:28.521] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:14:27Z", "value" => "0"} [2026-08-21 12:14:28.622] [DEBUG] QUERY OK db=100.7ms idle=87.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:27Z", "0", "mobile_data_mb", 77945, ~N[2026-08-21 12:14:28], ~N[2026-08-21 12:14:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:28.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792811, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:28], updated_at: ~N[2026-08-21 12:14:28]}} [2026-08-21 12:14:28.622] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:14:28.692] [DEBUG] QUERY OK db=68.6ms idle=102.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77945, ~N[2026-08-21 12:14:28], ~N[2026-08-21 12:14:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:28.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792812, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:14:27Z", message: nil, status_log_id: 77945, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:28], updated_at: ~N[2026-08-21 12:14:28]}} [2026-08-21 12:14:57.766] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:14:57.766] [INFO ] Incoming JSON payload: {"oid":"4314971f-498e-45ad-9b4c-1d7f0a4e1b77","sn":"98251226730001","uploadTime":"2026-08-21T12:14:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:14:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:14:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:14:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:14:57Z"},{"itemkey":"ram_free_mb","value":"914","timestamp":"2026-08-21T12:14:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:14:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:14:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:14:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:14:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:14:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:14:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:14:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:14:57Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:14:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:14:57.768] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4314971f-498e-45ad-9b4c-1d7f0a4e1b77", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:14:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:14:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:14:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:14:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:14:57Z", "value" => "914"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:14:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:14:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:14:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:14:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:14:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:14:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:14:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:14:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:14:57Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:14:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:14:57Z", "vendor" => "morefun"} [2026-08-21 12:14:57.768] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:14:57.768] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:14:57.768] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:14:57.769] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1967.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-08-21 12:14:57.770] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=982.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-08-21 12:14:57.770] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:14:57.771] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:14:57.771] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:14:57.801] [DEBUG] QUERY OK source="tms_terminals" db=29.7ms queue=0.1ms idle=1.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:14:57], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:14:57.801] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:14:57.802] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=12.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:14:57.835] [DEBUG] QUERY OK source="tms_terminals" db=32.4ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:14:57], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:14:57.871] [DEBUG] QUERY OK db=35.9ms idle=33.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "4314971f-498e-45ad-9b4c-1d7f0a4e1b77", "2026-08-21T12:14:57Z", ~N[2026-08-21 12:14:57], ~N[2026-08-21 12:14:57]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:14:57.872] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77946, oid: "4314971f-498e-45ad-9b4c-1d7f0a4e1b77", upload_time: "2026-08-21T12:14:57Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:57], updated_at: ~N[2026-08-21 12:14:57]} [2026-08-21 12:14:57.872] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:14:57Z", "value" => "morefun"} [2026-08-21 12:14:57.919] [DEBUG] QUERY OK db=46.4ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:57Z", "morefun", "vendor", 77946, ~N[2026-08-21 12:14:57], ~N[2026-08-21 12:14:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:57.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792813, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:57], updated_at: ~N[2026-08-21 12:14:57]}} [2026-08-21 12:14:57.919] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:14:57Z", "value" => "kiosk_launcher"} [2026-08-21 12:14:57.967] [DEBUG] QUERY OK db=47.0ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:57Z", "kiosk_launcher", "model", 77946, ~N[2026-08-21 12:14:57], ~N[2026-08-21 12:14:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:57.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792814, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:57], updated_at: ~N[2026-08-21 12:14:57]}} [2026-08-21 12:14:57.967] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:14:57Z", "value" => "1.0"} [2026-08-21 12:14:58.001] [DEBUG] QUERY OK db=33.5ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:57Z", "1.0", "app_version", 77946, ~N[2026-08-21 12:14:57], ~N[2026-08-21 12:14:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:58.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792815, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:57], updated_at: ~N[2026-08-21 12:14:57]}} [2026-08-21 12:14:58.001] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:14:57Z", "value" => "13"} [2026-08-21 12:14:58.051] [DEBUG] QUERY OK db=49.4ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:57Z", "13", "android_version", 77946, ~N[2026-08-21 12:14:58], ~N[2026-08-21 12:14:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:58.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792816, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:58], updated_at: ~N[2026-08-21 12:14:58]}} [2026-08-21 12:14:58.055] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:14:57Z", "value" => "914"} [2026-08-21 12:14:58.090] [DEBUG] QUERY OK db=32.3ms idle=57.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:57Z", "914", "ram_free_mb", 77946, ~N[2026-08-21 12:14:58], ~N[2026-08-21 12:14:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:58.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792817, itemkey: "ram_free_mb", value: "914", timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:58], updated_at: ~N[2026-08-21 12:14:58]}} [2026-08-21 12:14:58.091] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:14:57Z", "value" => "WIFI"} [2026-08-21 12:14:58.141] [DEBUG] QUERY OK db=48.2ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:57Z", "WIFI", "network_type", 77946, ~N[2026-08-21 12:14:58], ~N[2026-08-21 12:14:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:58.141] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792818, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:58], updated_at: ~N[2026-08-21 12:14:58]}} [2026-08-21 12:14:58.141] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:14:57Z", "value" => "true"} [2026-08-21 12:14:58.178] [DEBUG] QUERY OK db=36.8ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:57Z", "true", "kiosk_active", 77946, ~N[2026-08-21 12:14:58], ~N[2026-08-21 12:14:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:58.179] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792819, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:58], updated_at: ~N[2026-08-21 12:14:58]}} [2026-08-21 12:14:58.179] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:14:57Z", "value" => ""} [2026-08-21 12:14:58.216] [DEBUG] QUERY OK db=37.3ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:14:57Z", "sim_operator", 77946, ~N[2026-08-21 12:14:58], ~N[2026-08-21 12:14:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:58.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792820, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:58], updated_at: ~N[2026-08-21 12:14:58]}} [2026-08-21 12:14:58.217] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:14:57Z", "value" => "UNKNOWN"} [2026-08-21 12:14:58.252] [DEBUG] QUERY OK db=34.2ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:57Z", "UNKNOWN", "sim_number", 77946, ~N[2026-08-21 12:14:58], ~N[2026-08-21 12:14:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:58.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792821, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:58], updated_at: ~N[2026-08-21 12:14:58]}} [2026-08-21 12:14:58.253] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:14:57Z", "value" => "UNKNOWN"} [2026-08-21 12:14:58.285] [DEBUG] QUERY OK db=32.3ms queue=0.1ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:57Z", "UNKNOWN", "sim_iccid", 77946, ~N[2026-08-21 12:14:58], ~N[2026-08-21 12:14:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:58.286] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792822, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:58], updated_at: ~N[2026-08-21 12:14:58]}} [2026-08-21 12:14:58.286] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:14:57Z", "value" => "UNKNOWN"} [2026-08-21 12:14:58.338] [DEBUG] QUERY OK db=51.0ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:57Z", "UNKNOWN", "sim_imsi", 77946, ~N[2026-08-21 12:14:58], ~N[2026-08-21 12:14:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:58.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792823, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:58], updated_at: ~N[2026-08-21 12:14:58]}} [2026-08-21 12:14:58.339] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:14:57Z", "value" => "UNKNOWN"} [2026-08-21 12:14:58.373] [DEBUG] QUERY OK db=33.8ms idle=53.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:57Z", "UNKNOWN", "sim_iccid2", 77946, ~N[2026-08-21 12:14:58], ~N[2026-08-21 12:14:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:58.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792824, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:58], updated_at: ~N[2026-08-21 12:14:58]}} [2026-08-21 12:14:58.373] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:14:57Z", "value" => "UNKNOWN"} [2026-08-21 12:14:58.418] [DEBUG] QUERY OK db=43.2ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:57Z", "UNKNOWN", "sim_imsi2", 77946, ~N[2026-08-21 12:14:58], ~N[2026-08-21 12:14:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:58.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792825, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:58], updated_at: ~N[2026-08-21 12:14:58]}} [2026-08-21 12:14:58.418] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:14:57Z", "value" => "35"} [2026-08-21 12:14:58.443] [DEBUG] QUERY OK db=24.8ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:57Z", "35", "data_usage_mb", 77946, ~N[2026-08-21 12:14:58], ~N[2026-08-21 12:14:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:58.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792826, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:58], updated_at: ~N[2026-08-21 12:14:58]}} [2026-08-21 12:14:58.444] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:14:57Z", "value" => "0"} [2026-08-21 12:14:58.498] [DEBUG] QUERY OK db=53.8ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:14:57Z", "0", "mobile_data_mb", 77946, ~N[2026-08-21 12:14:58], ~N[2026-08-21 12:14:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:58.498] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792827, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:58], updated_at: ~N[2026-08-21 12:14:58]}} [2026-08-21 12:14:58.499] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:14:58.533] [DEBUG] QUERY OK db=33.5ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77946, ~N[2026-08-21 12:14:58], ~N[2026-08-21 12:14:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:14:58.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792828, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:14:57Z", message: nil, status_log_id: 77946, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:14:58], updated_at: ~N[2026-08-21 12:14:58]}} [2026-08-21 12:15:27.890] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:15:27.891] [INFO ] Incoming JSON payload: {"oid":"928a532f-e217-45a7-a588-1ee091a61cf7","sn":"98251226730001","uploadTime":"2026-08-21T12:15:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:15:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:15:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:15:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:15:27Z"},{"itemkey":"ram_free_mb","value":"912","timestamp":"2026-08-21T12:15:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:15:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:15:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:15:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:15:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:15:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:15:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:15:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:15:27Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:15:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:15:27.892] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "928a532f-e217-45a7-a588-1ee091a61cf7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:15:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:15:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:15:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:15:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:15:27Z", "value" => "912"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:15:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:15:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:15:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:15:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:15:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:15:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:15:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:15:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:15:27Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:15:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:15:27Z", "vendor" => "morefun"} [2026-08-21 12:15:27.892] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:15:27.893] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:15:27.893] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:15:27.894] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.2ms idle=974.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-08-21 12:15:27.895] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=90.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-08-21 12:15:27.895] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:15:27.897] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:15:27.897] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:15:27.944] [DEBUG] QUERY OK source="tms_terminals" db=46.3ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:15:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:15:27.944] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:15:27.945] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=24.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:15:27.999] [DEBUG] QUERY OK source="tms_terminals" db=52.4ms queue=0.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:15:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:15:28.053] [DEBUG] QUERY OK db=53.3ms queue=0.1ms idle=54.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "928a532f-e217-45a7-a588-1ee091a61cf7", "2026-08-21T12:15:27Z", ~N[2026-08-21 12:15:27], ~N[2026-08-21 12:15:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:15:28.053] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77947, oid: "928a532f-e217-45a7-a588-1ee091a61cf7", upload_time: "2026-08-21T12:15:27Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:27], updated_at: ~N[2026-08-21 12:15:27]} [2026-08-21 12:15:28.053] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:15:27Z", "value" => "morefun"} [2026-08-21 12:15:28.103] [DEBUG] QUERY OK db=49.3ms queue=0.1ms idle=55.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:27Z", "morefun", "vendor", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.103] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792829, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.103] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:15:27Z", "value" => "kiosk_launcher"} [2026-08-21 12:15:28.127] [DEBUG] QUERY OK db=23.5ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:27Z", "kiosk_launcher", "model", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792830, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.128] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:15:27Z", "value" => "1.0"} [2026-08-21 12:15:28.180] [DEBUG] QUERY OK db=52.5ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:27Z", "1.0", "app_version", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.181] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792831, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.181] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:15:27Z", "value" => "13"} [2026-08-21 12:15:28.238] [DEBUG] QUERY OK db=56.7ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:27Z", "13", "android_version", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792832, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.238] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:15:27Z", "value" => "912"} [2026-08-21 12:15:28.273] [DEBUG] QUERY OK db=34.0ms idle=58.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:27Z", "912", "ram_free_mb", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792833, itemkey: "ram_free_mb", value: "912", timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.273] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:15:27Z", "value" => "WIFI"} [2026-08-21 12:15:28.305] [DEBUG] QUERY OK db=31.9ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:27Z", "WIFI", "network_type", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792834, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.306] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:15:27Z", "value" => "true"} [2026-08-21 12:15:28.356] [DEBUG] QUERY OK db=49.1ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:27Z", "true", "kiosk_active", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792835, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.357] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:15:27Z", "value" => ""} [2026-08-21 12:15:28.384] [DEBUG] QUERY OK db=27.2ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:15:27Z", "sim_operator", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.385] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792836, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.385] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:15:27Z", "value" => "UNKNOWN"} [2026-08-21 12:15:28.437] [DEBUG] QUERY OK db=51.9ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:27Z", "UNKNOWN", "sim_number", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792837, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.438] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:15:27Z", "value" => "UNKNOWN"} [2026-08-21 12:15:28.501] [DEBUG] QUERY OK db=61.9ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:27Z", "UNKNOWN", "sim_iccid", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.502] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792838, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.502] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:15:27Z", "value" => "UNKNOWN"} [2026-08-21 12:15:28.552] [DEBUG] QUERY OK db=50.0ms idle=64.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:27Z", "UNKNOWN", "sim_imsi", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792839, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.553] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:15:27Z", "value" => "UNKNOWN"} [2026-08-21 12:15:28.592] [DEBUG] QUERY OK db=38.1ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:27Z", "UNKNOWN", "sim_iccid2", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.592] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792840, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.592] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:15:27Z", "value" => "UNKNOWN"} [2026-08-21 12:15:28.619] [DEBUG] QUERY OK db=26.0ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:27Z", "UNKNOWN", "sim_imsi2", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792841, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.619] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:15:27Z", "value" => "35"} [2026-08-21 12:15:28.669] [DEBUG] QUERY OK db=48.8ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:27Z", "35", "data_usage_mb", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.669] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792842, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.669] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:15:27Z", "value" => "0"} [2026-08-21 12:15:28.693] [DEBUG] QUERY OK db=22.9ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:27Z", "0", "mobile_data_mb", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792843, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:28.694] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:15:28.724] [DEBUG] QUERY OK db=29.3ms idle=25.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77947, ~N[2026-08-21 12:15:28], ~N[2026-08-21 12:15:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:28.725] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792844, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:15:27Z", message: nil, status_log_id: 77947, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:28], updated_at: ~N[2026-08-21 12:15:28]}} [2026-08-21 12:15:57.986] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:15:57.986] [INFO ] Incoming JSON payload: {"oid":"5058f730-1169-4811-8563-4dea91fdadea","sn":"98251226730001","uploadTime":"2026-08-21T12:15:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:15:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:15:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:15:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:15:57Z"},{"itemkey":"ram_free_mb","value":"919","timestamp":"2026-08-21T12:15:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:15:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:15:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:15:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:15:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:15:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:15:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:15:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:15:57Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:15:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:15:57.989] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5058f730-1169-4811-8563-4dea91fdadea", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:15:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:15:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:15:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:15:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:15:57Z", "value" => "919"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:15:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:15:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:15:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:15:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:15:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:15:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:15:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:15:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:15:57Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:15:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:15:57Z", "vendor" => "morefun"} [2026-08-21 12:15:57.989] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:15:57.989] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:15:57.989] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:15:57.990] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1184.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-08-21 12:15:57.991] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=882.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-08-21 12:15:57.991] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:15:57.992] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.2ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:15:57.993] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:15:58.034] [DEBUG] QUERY OK source="tms_terminals" db=41.1ms queue=0.1ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:15:57], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:15:58.035] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:15:58.036] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=42.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:15:58.081] [DEBUG] QUERY OK source="tms_terminals" db=44.8ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:15:58], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:15:58.128] [DEBUG] QUERY OK db=46.3ms idle=45.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "5058f730-1169-4811-8563-4dea91fdadea", "2026-08-21T12:15:57Z", ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:15:58.128] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77948, oid: "5058f730-1169-4811-8563-4dea91fdadea", upload_time: "2026-08-21T12:15:57Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]} [2026-08-21 12:15:58.128] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:15:57Z", "value" => "morefun"} [2026-08-21 12:15:58.182] [DEBUG] QUERY OK db=52.6ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:57Z", "morefun", "vendor", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792845, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.182] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:15:57Z", "value" => "kiosk_launcher"} [2026-08-21 12:15:58.223] [DEBUG] QUERY OK db=40.7ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:57Z", "kiosk_launcher", "model", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792846, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.224] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:15:57Z", "value" => "1.0"} [2026-08-21 12:15:58.252] [DEBUG] QUERY OK db=28.0ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:57Z", "1.0", "app_version", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792847, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.253] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:15:57Z", "value" => "13"} [2026-08-21 12:15:58.303] [DEBUG] QUERY OK db=49.9ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:57Z", "13", "android_version", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.303] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792848, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.303] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:15:57Z", "value" => "919"} [2026-08-21 12:15:58.327] [DEBUG] QUERY OK db=23.6ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:57Z", "919", "ram_free_mb", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.328] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792849, itemkey: "ram_free_mb", value: "919", timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.328] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:15:57Z", "value" => "WIFI"} [2026-08-21 12:15:58.378] [DEBUG] QUERY OK db=49.6ms idle=25.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:57Z", "WIFI", "network_type", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792850, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.379] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:15:57Z", "value" => "true"} [2026-08-21 12:15:58.418] [DEBUG] QUERY OK db=39.3ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:57Z", "true", "kiosk_active", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792851, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.419] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:15:57Z", "value" => ""} [2026-08-21 12:15:58.465] [DEBUG] QUERY OK db=45.5ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:15:57Z", "sim_operator", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.465] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792852, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.465] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:15:57Z", "value" => "UNKNOWN"} [2026-08-21 12:15:58.501] [DEBUG] QUERY OK db=35.5ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:57Z", "UNKNOWN", "sim_number", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.502] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792853, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.502] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:15:57Z", "value" => "UNKNOWN"} [2026-08-21 12:15:58.534] [DEBUG] QUERY OK db=31.5ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:57Z", "UNKNOWN", "sim_iccid", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792854, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.534] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:15:57Z", "value" => "UNKNOWN"} [2026-08-21 12:15:58.584] [DEBUG] QUERY OK db=48.7ms queue=0.5ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:57Z", "UNKNOWN", "sim_imsi", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792855, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.585] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:15:57Z", "value" => "UNKNOWN"} [2026-08-21 12:15:58.615] [DEBUG] QUERY OK db=30.2ms idle=51.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:57Z", "UNKNOWN", "sim_iccid2", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792856, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.616] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:15:57Z", "value" => "UNKNOWN"} [2026-08-21 12:15:58.682] [DEBUG] QUERY OK db=63.6ms queue=1.0ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:57Z", "UNKNOWN", "sim_imsi2", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.683] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792857, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.683] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:15:57Z", "value" => "35"} [2026-08-21 12:15:58.739] [DEBUG] QUERY OK db=56.1ms idle=67.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:57Z", "35", "data_usage_mb", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792858, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.739] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:15:57Z", "value" => "0"} [2026-08-21 12:15:58.799] [DEBUG] QUERY OK db=59.1ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15:57Z", "0", "mobile_data_mb", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792859, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.800] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:15:58.868] [DEBUG] QUERY OK db=67.5ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:15: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77948, ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:58.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792860, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:15:57Z", message: nil, status_log_id: 77948, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:58], updated_at: ~N[2026-08-21 12:15:58]}} [2026-08-21 12:15:58.870] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 12:15:58.870] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T03:25:23Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T03:25:23Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T03:25:23Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T03:25:23Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T03:25:23Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T03:25:23Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T03:25:23Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T03:25:23Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T03:25:23Z","vendor":"MoreFun"} [2026-08-21 12:15:58.870] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:25:23Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:25:23Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:25:23Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:25:23Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:25:23Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:25:23Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:25:23Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:25:23Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T03:25:23Z", "vendor" => "MoreFun"} [2026-08-21 12:15:58.870] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:15:58.870] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 12:15:58.870] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 12:15:58.871] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=71.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 12:15:58.872] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=3.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 12:15:58.873] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms 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-08-21 12:15:58.875] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=0.3ms idle=1.2ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:15:58.877] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms idle=3.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:15:58.915] [DEBUG] QUERY OK source="pos_merchant" db=38.1ms idle=2.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:15:58.917] [DEBUG] QUERY OK db=0.6ms queue=0.7ms idle=1051.8ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["123451234512345"] [2026-08-21 12:15:58.917] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:15:58.918] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=40.4ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:15:58.918] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 12:15:58.919] [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` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:15:58.919] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 12:15:58.921] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 12:15:58.954] [DEBUG] QUERY OK db=32.2ms 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", "5495298717119f73192ede8393f24eece0a91abb1a234ccf6cab4997fef01db5", 2979, 932, ~U[2026-08-21 12:15:58Z], "priv/ota/98250623730001/params.zip", 19, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:15:58.954] [INFO ] AutoPushService: Created push log 49058 for MF919 params.zip [2026-08-21 12:15:58.954] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 2979, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:15:58.954] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:15:58.954] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 12:15:58.955] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.2ms idle=35.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:15:58.960] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 12:15:59.021] [DEBUG] QUERY OK db=60.4ms 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", "71bb3dd3852d4a8d62593f538cf0333134a765dd46d4c03183ffa9be7b99bb43", 3075, 17947, ~U[2026-08-21 12:15:58Z], "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-08-21 12:15:58], ~N[2026-08-21 12:15:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:15:59.022] [INFO ] AutoPushService: Created push log 49059 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:15:59.023] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 3075, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:15:59.023] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:15:59.023] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 12:15:59.028] [DEBUG] QUERY OK source="config_file_versions" db=4.3ms idle=67.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-08-21 12:15:59.028] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 12:15:59.031] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:15:59.032] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 12:15:59.037] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:15:59.037] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:15:59.038] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:15:59.041] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms idle=11.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:15:59.042] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:15:59.042] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 12:15:59.047] [DEBUG] QUERY OK source="tms_terminals" db=4.5ms idle=10.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-08-21 12:15:59.050] [INFO ] Terminal updated: 98250623730001 [2026-08-21 12:15:59.095] [DEBUG] QUERY OK source="tms_terminals" db=45.5ms idle=8.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:15:59], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:15:59.101] [DEBUG] QUERY OK source="parameter_templates" db=3.3ms idle=50.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-08-21 12:15:59.105] [DEBUG] QUERY OK source="config_file_versions" db=3.9ms idle=5.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-08-21 12:15:59.112] [DEBUG] QUERY OK source="config_file_versions" db=4.1ms queue=0.1ms 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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:15:59.112] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:15:59.202] [DEBUG] QUERY OK source="parameter_push_logs" db=88.3ms idle=2.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 [19, "application", ~N[2026-08-21 11:45:59]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:15:59.202] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:15:59.202] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 12:15:59.204] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=73.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.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:15:59.207] [DEBUG] QUERY OK source="config_file_versions" db=2.3ms idle=2.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:15:59.207] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:15:59.209] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=3.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:15:59.259] [DEBUG] QUERY OK source="tms_terminals" db=49.6ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:15:59], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:15:59.299] [DEBUG] QUERY OK db=39.0ms idle=50.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T03:25:23Z", ~N[2026-08-21 12:15:59], ~N[2026-08-21 12:15:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:15:59.299] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77949, oid: "organization_id", upload_time: "2026-08-21T03:25:23Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:59], updated_at: ~N[2026-08-21 12:15:59]} [2026-08-21 12:15:59.300] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:25:23Z", "value" => "online"} [2026-08-21 12:15:59.348] [DEBUG] QUERY OK db=47.7ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T03:25:23Z", "online", "status", 77949, ~N[2026-08-21 12:15:59], ~N[2026-08-21 12:15:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:59.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792861, itemkey: "status", value: "online", timestamp: "2026-08-21T03:25:23Z", message: "Terminal status update", status_log_id: 77949, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:59], updated_at: ~N[2026-08-21 12:15:59]}} [2026-08-21 12:15:59.348] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 12:15:59.351] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:25:23Z", "value" => "51"} [2026-08-21 12:15:59.407] [DEBUG] QUERY OK db=56.2ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T03:25:23Z", "51", "battery", 77949, ~N[2026-08-21 12:15:59], ~N[2026-08-21 12:15:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:59.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792862, itemkey: "battery", value: "51", timestamp: "2026-08-21T03:25:23Z", message: "Battery level", status_log_id: 77949, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:59], updated_at: ~N[2026-08-21 12:15:59]}} [2026-08-21 12:15:59.408] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:25:23Z", "value" => "online"} [2026-08-21 12:15:59.459] [DEBUG] QUERY OK db=50.3ms idle=60.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T03:25:23Z", "online", "network", 77949, ~N[2026-08-21 12:15:59], ~N[2026-08-21 12:15:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:59.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792863, itemkey: "network", value: "online", timestamp: "2026-08-21T03:25:23Z", message: "Network connectivity", status_log_id: 77949, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:59], updated_at: ~N[2026-08-21 12:15:59]}} [2026-08-21 12:15:59.459] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 12:15:59.460] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:25:23Z", "value" => "0"} [2026-08-21 12:15:59.491] [DEBUG] QUERY OK db=30.7ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T03:25:23Z", "0", "cpu", 77949, ~N[2026-08-21 12:15:59], ~N[2026-08-21 12:15:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:59.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792864, itemkey: "cpu", value: "0", timestamp: "2026-08-21T03:25:23Z", message: "CPU usage percentage", status_log_id: 77949, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:59], updated_at: ~N[2026-08-21 12:15:59]}} [2026-08-21 12:15:59.491] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:25:23Z", "value" => "1.0.0"} [2026-08-21 12:15:59.536] [DEBUG] QUERY OK db=44.2ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T03:25:23Z", "1.0.0", "parameter_config", 77949, ~N[2026-08-21 12:15:59], ~N[2026-08-21 12:15:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:59.536] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792865, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T03:25:23Z", message: "Current parameters version", status_log_id: 77949, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:59], updated_at: ~N[2026-08-21 12:15:59]}} [2026-08-21 12:15:59.537] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:25:23Z", "value" => "1.0.1"} [2026-08-21 12:15:59.579] [DEBUG] QUERY OK db=42.3ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T03:25:23Z", "1.0.1", "emv_config", 77949, ~N[2026-08-21 12:15:59], ~N[2026-08-21 12:15:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:59.579] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792866, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T03:25:23Z", message: "Current EMV config version", status_log_id: 77949, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:59], updated_at: ~N[2026-08-21 12:15:59]}} [2026-08-21 12:15:59.580] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:25:23Z", "value" => ""} [2026-08-21 12:15:59.636] [DEBUG] QUERY OK db=54.1ms queue=0.9ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T03:25:23Z", "keys_config", 77949, ~N[2026-08-21 12:15:59], ~N[2026-08-21 12:15:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:59.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792867, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T03:25:23Z", message: "Current keys config version", status_log_id: 77949, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:59], updated_at: ~N[2026-08-21 12:15:59]}} [2026-08-21 12:15:59.637] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:25:23Z", "value" => "3.8.7.3"} [2026-08-21 12:15:59.700] [DEBUG] QUERY OK db=62.3ms idle=57.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T03:25:23Z", "3.8.7.3", "application", 77949, ~N[2026-08-21 12:15:59], ~N[2026-08-21 12:15:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:15:59.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792868, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T03:25:23Z", message: "Current application version", status_log_id: 77949, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:15:59], updated_at: ~N[2026-08-21 12:15:59]}} [2026-08-21 12:15:59.700] [WARN ] Unexpected async result [2026-08-21 12:15:59.700] [WARN ] Unexpected async result [2026-08-21 12:16:28.097] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:16:28.097] [INFO ] Incoming JSON payload: {"oid":"2393d621-173f-40f8-b9cc-4921de1a2697","sn":"98251226730001","uploadTime":"2026-08-21T12:16:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:16:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:16:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:16:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:16:27Z"},{"itemkey":"ram_free_mb","value":"917","timestamp":"2026-08-21T12:16:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:16:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:16:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:16:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:16:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:16:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:16:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:16:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:16:27Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:16:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:16:28.098] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2393d621-173f-40f8-b9cc-4921de1a2697", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:16:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:16:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:16:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:16:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:16:27Z", "value" => "917"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:16:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:16:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:16:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:16:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:16:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:16:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:16:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:16:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:16:27Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:16:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:16:27Z", "vendor" => "morefun"} [2026-08-21 12:16:28.099] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:16:28.099] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:16:28.099] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:16:28.100] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1295.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-08-21 12:16:28.101] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=850.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-08-21 12:16:28.101] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:16:28.102] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.2ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:16:28.102] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:16:28.138] [DEBUG] QUERY OK source="tms_terminals" db=35.6ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:16:28], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:16:28.138] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:16:28.140] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.8ms idle=36.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:16:28.180] [DEBUG] QUERY OK source="tms_terminals" db=39.8ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:16:28], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:16:28.214] [DEBUG] QUERY OK db=33.7ms idle=40.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2393d621-173f-40f8-b9cc-4921de1a2697", "2026-08-21T12:16:27Z", ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:16:28.215] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77950, oid: "2393d621-173f-40f8-b9cc-4921de1a2697", upload_time: "2026-08-21T12:16:27Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]} [2026-08-21 12:16:28.215] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:16:27Z", "value" => "morefun"} [2026-08-21 12:16:28.288] [DEBUG] QUERY OK db=31.5ms queue=41.3ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:27Z", "morefun", "vendor", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792869, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.289] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:16:27Z", "value" => "kiosk_launcher"} [2026-08-21 12:16:28.320] [DEBUG] QUERY OK db=30.7ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:27Z", "kiosk_launcher", "model", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792870, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.321] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:16:27Z", "value" => "1.0"} [2026-08-21 12:16:28.358] [DEBUG] QUERY OK db=36.9ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:27Z", "1.0", "app_version", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792871, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.358] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:16:27Z", "value" => "13"} [2026-08-21 12:16:28.401] [DEBUG] QUERY OK db=42.0ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:27Z", "13", "android_version", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792872, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.402] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:16:27Z", "value" => "917"} [2026-08-21 12:16:28.425] [DEBUG] QUERY OK db=22.7ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:27Z", "917", "ram_free_mb", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792873, itemkey: "ram_free_mb", value: "917", timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.425] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:16:27Z", "value" => "WIFI"} [2026-08-21 12:16:28.473] [DEBUG] QUERY OK db=47.0ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:27Z", "WIFI", "network_type", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792874, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.474] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:16:27Z", "value" => "true"} [2026-08-21 12:16:28.510] [DEBUG] QUERY OK db=35.6ms queue=0.1ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:27Z", "true", "kiosk_active", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792875, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.510] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:16:27Z", "value" => ""} [2026-08-21 12:16:28.540] [DEBUG] QUERY OK db=29.5ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:16:27Z", "sim_operator", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792876, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.541] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:16:27Z", "value" => "UNKNOWN"} [2026-08-21 12:16:28.582] [DEBUG] QUERY OK db=40.8ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:27Z", "UNKNOWN", "sim_number", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792877, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.583] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:16:27Z", "value" => "UNKNOWN"} [2026-08-21 12:16:28.624] [DEBUG] QUERY OK db=40.1ms queue=0.1ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:27Z", "UNKNOWN", "sim_iccid", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792878, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.625] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:16:27Z", "value" => "UNKNOWN"} [2026-08-21 12:16:28.692] [DEBUG] QUERY OK db=67.2ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:27Z", "UNKNOWN", "sim_imsi", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792879, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.693] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:16:27Z", "value" => "UNKNOWN"} [2026-08-21 12:16:28.731] [DEBUG] QUERY OK db=37.5ms idle=41.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:27Z", "UNKNOWN", "sim_iccid2", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.731] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792880, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.731] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:16:27Z", "value" => "UNKNOWN"} [2026-08-21 12:16:28.762] [DEBUG] QUERY OK db=30.9ms queue=0.1ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:27Z", "UNKNOWN", "sim_imsi2", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792881, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.763] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:16:27Z", "value" => "35"} [2026-08-21 12:16:28.822] [DEBUG] QUERY OK db=58.6ms idle=32.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:27Z", "35", "data_usage_mb", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.822] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792882, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.822] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:16:27Z", "value" => "0"} [2026-08-21 12:16:28.846] [DEBUG] QUERY OK db=23.5ms idle=60.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:27Z", "0", "mobile_data_mb", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792883, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:28.847] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:16:28.893] [DEBUG] QUERY OK db=44.8ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77950, ~N[2026-08-21 12:16:28], ~N[2026-08-21 12:16:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:28.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792884, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:16:27Z", message: nil, status_log_id: 77950, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:28], updated_at: ~N[2026-08-21 12:16:28]}} [2026-08-21 12:16:58.209] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:16:58.209] [INFO ] Incoming JSON payload: {"oid":"f89504b1-e28a-4dd1-b30d-8639433227b3","sn":"98251226730001","uploadTime":"2026-08-21T12:16:57Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:16:57Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:16:57Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:16:57Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:16:57Z"},{"itemkey":"ram_free_mb","value":"914","timestamp":"2026-08-21T12:16:57Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:16:57Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:16:57Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:16:57Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:16:57Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:16:57Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:16:57Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:16:57Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:16:57Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:16:57Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:16:58.210] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f89504b1-e28a-4dd1-b30d-8639433227b3", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:16:57Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:16:57Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:16:57Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:16:57Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:16:57Z", "value" => "914"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:16:57Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:16:57Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:16:57Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:16:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:16:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:16:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:16:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:16:57Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:16:57Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:16:57Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:16:57Z", "vendor" => "morefun"} [2026-08-21 12:16:58.210] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:16:58.210] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:16:58.211] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:16:58.211] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1404.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-08-21 12:16:58.212] [DEBUG] QUERY OK source="parameter_templates" db=0.2ms idle=866.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-08-21 12:16:58.212] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:16:58.214] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:16:58.214] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:16:58.241] [DEBUG] QUERY OK source="tms_terminals" db=26.3ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:16:58], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:16:58.241] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:16:58.244] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=29.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:16:58.287] [DEBUG] QUERY OK source="tms_terminals" db=42.4ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:16:58], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:16:58.359] [DEBUG] QUERY OK db=71.8ms queue=0.1ms idle=0.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "f89504b1-e28a-4dd1-b30d-8639433227b3", "2026-08-21T12:16:57Z", ~N[2026-08-21 12:16:58], ~N[2026-08-21 12:16:58]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:16:58.359] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77951, oid: "f89504b1-e28a-4dd1-b30d-8639433227b3", upload_time: "2026-08-21T12:16:57Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:58], updated_at: ~N[2026-08-21 12:16:58]} [2026-08-21 12:16:58.359] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:16:57Z", "value" => "morefun"} [2026-08-21 12:16:58.401] [DEBUG] QUERY OK db=41.0ms idle=11.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:57Z", "morefun", "vendor", 77951, ~N[2026-08-21 12:16:58], ~N[2026-08-21 12:16:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:58.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792885, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:58], updated_at: ~N[2026-08-21 12:16:58]}} [2026-08-21 12:16:58.401] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:16:57Z", "value" => "kiosk_launcher"} [2026-08-21 12:16:58.435] [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-08-21T12:16:57Z", "kiosk_launcher", "model", 77951, ~N[2026-08-21 12:16:58], ~N[2026-08-21 12:16:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:58.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792886, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:58], updated_at: ~N[2026-08-21 12:16:58]}} [2026-08-21 12:16:58.435] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:16:57Z", "value" => "1.0"} [2026-08-21 12:16:58.486] [DEBUG] QUERY OK db=50.6ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:57Z", "1.0", "app_version", 77951, ~N[2026-08-21 12:16:58], ~N[2026-08-21 12:16:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:58.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792887, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:58], updated_at: ~N[2026-08-21 12:16:58]}} [2026-08-21 12:16:58.486] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:16:57Z", "value" => "13"} [2026-08-21 12:16:58.512] [DEBUG] QUERY OK db=25.5ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:57Z", "13", "android_version", 77951, ~N[2026-08-21 12:16:58], ~N[2026-08-21 12:16:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:58.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792888, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:58], updated_at: ~N[2026-08-21 12:16:58]}} [2026-08-21 12:16:58.513] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:16:57Z", "value" => "914"} [2026-08-21 12:16:58.546] [DEBUG] QUERY OK db=32.9ms idle=27.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:57Z", "914", "ram_free_mb", 77951, ~N[2026-08-21 12:16:58], ~N[2026-08-21 12:16:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:58.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792889, itemkey: "ram_free_mb", value: "914", timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:58], updated_at: ~N[2026-08-21 12:16:58]}} [2026-08-21 12:16:58.548] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:16:57Z", "value" => "WIFI"} [2026-08-21 12:16:58.596] [DEBUG] QUERY OK db=47.6ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:57Z", "WIFI", "network_type", 77951, ~N[2026-08-21 12:16:58], ~N[2026-08-21 12:16:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:58.596] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792890, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:58], updated_at: ~N[2026-08-21 12:16:58]}} [2026-08-21 12:16:58.596] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:16:57Z", "value" => "true"} [2026-08-21 12:16:58.637] [DEBUG] QUERY OK db=40.0ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:57Z", "true", "kiosk_active", 77951, ~N[2026-08-21 12:16:58], ~N[2026-08-21 12:16:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:58.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792891, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:58], updated_at: ~N[2026-08-21 12:16:58]}} [2026-08-21 12:16:58.638] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:16:57Z", "value" => ""} [2026-08-21 12:16:58.690] [DEBUG] QUERY OK db=51.2ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:16:57Z", "sim_operator", 77951, ~N[2026-08-21 12:16:58], ~N[2026-08-21 12:16:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:58.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792892, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:58], updated_at: ~N[2026-08-21 12:16:58]}} [2026-08-21 12:16:58.691] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:16:57Z", "value" => "UNKNOWN"} [2026-08-21 12:16:58.775] [DEBUG] QUERY OK db=83.2ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:57Z", "UNKNOWN", "sim_number", 77951, ~N[2026-08-21 12:16:58], ~N[2026-08-21 12:16:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:58.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792893, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:58], updated_at: ~N[2026-08-21 12:16:58]}} [2026-08-21 12:16:58.775] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:16:57Z", "value" => "UNKNOWN"} [2026-08-21 12:16:58.833] [DEBUG] QUERY OK db=57.8ms idle=85.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:57Z", "UNKNOWN", "sim_iccid", 77951, ~N[2026-08-21 12:16:58], ~N[2026-08-21 12:16:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:58.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792894, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:58], updated_at: ~N[2026-08-21 12:16:58]}} [2026-08-21 12:16:58.834] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:16:57Z", "value" => "UNKNOWN"} [2026-08-21 12:16:58.905] [DEBUG] QUERY OK db=70.9ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:57Z", "UNKNOWN", "sim_imsi", 77951, ~N[2026-08-21 12:16:58], ~N[2026-08-21 12:16:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:58.905] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792895, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:58], updated_at: ~N[2026-08-21 12:16:58]}} [2026-08-21 12:16:58.905] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:16:57Z", "value" => "UNKNOWN"} [2026-08-21 12:16:58.984] [DEBUG] QUERY OK db=78.0ms idle=72.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:57Z", "UNKNOWN", "sim_iccid2", 77951, ~N[2026-08-21 12:16:58], ~N[2026-08-21 12:16:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:58.984] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792896, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:58], updated_at: ~N[2026-08-21 12:16:58]}} [2026-08-21 12:16:58.984] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:16:57Z", "value" => "UNKNOWN"} [2026-08-21 12:16:59.052] [DEBUG] QUERY OK db=67.2ms idle=79.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:57Z", "UNKNOWN", "sim_imsi2", 77951, ~N[2026-08-21 12:16:58], ~N[2026-08-21 12:16:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:59.052] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792897, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:58], updated_at: ~N[2026-08-21 12:16:58]}} [2026-08-21 12:16:59.052] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:16:57Z", "value" => "35"} [2026-08-21 12:16:59.115] [DEBUG] QUERY OK db=62.5ms idle=68.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:57Z", "35", "data_usage_mb", 77951, ~N[2026-08-21 12:16:59], ~N[2026-08-21 12:16:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:59.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792898, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:59], updated_at: ~N[2026-08-21 12:16:59]}} [2026-08-21 12:16:59.116] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:16:57Z", "value" => "0"} [2026-08-21 12:16:59.183] [DEBUG] QUERY OK db=66.0ms queue=0.6ms idle=64.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16:57Z", "0", "mobile_data_mb", 77951, ~N[2026-08-21 12:16:59], ~N[2026-08-21 12:16:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:59.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792899, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:59], updated_at: ~N[2026-08-21 12:16:59]}} [2026-08-21 12:16:59.184] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:16:59.233] [DEBUG] QUERY OK db=47.2ms idle=69.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77951, ~N[2026-08-21 12:16:59], ~N[2026-08-21 12:16:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:16:59.234] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792900, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:16:57Z", message: nil, status_log_id: 77951, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:16:59], updated_at: ~N[2026-08-21 12:16:59]}} [2026-08-21 12:17:28.312] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:17:28.312] [INFO ] Incoming JSON payload: {"oid":"0247c849-a340-4748-a71d-8fb00b74ca60","sn":"98251226730001","uploadTime":"2026-08-21T12:17:27Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:17:27Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:17:27Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:17:27Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:17:27Z"},{"itemkey":"ram_free_mb","value":"918","timestamp":"2026-08-21T12:17:27Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:17:27Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:17:27Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:17:27Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:17:27Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:17:27Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:17:27Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:17:27Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:17:27Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:17:27Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:17: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:17:28.314] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0247c849-a340-4748-a71d-8fb00b74ca60", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:17:27Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:17:27Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:17:27Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:17:27Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:17:27Z", "value" => "918"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:17:27Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:17:27Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:17:27Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:17:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:17:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:17:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:17:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:17:27Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:17:27Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:17:27Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:17: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:17:27Z", "vendor" => "morefun"} [2026-08-21 12:17:28.314] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:17:28.314] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:17:28.314] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:17:28.315] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=852.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-08-21 12:17:28.315] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=522.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-08-21 12:17:28.316] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:17:28.316] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:17:28.316] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:17:28.363] [DEBUG] QUERY OK source="tms_terminals" db=45.9ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:17:28], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:17:28.363] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:17:28.364] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:17:28.412] [DEBUG] QUERY OK source="tms_terminals" db=47.9ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:17:28], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:17:28.469] [DEBUG] QUERY OK db=56.4ms idle=48.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0247c849-a340-4748-a71d-8fb00b74ca60", "2026-08-21T12:17:27Z", ~N[2026-08-21 12:17:28], ~N[2026-08-21 12:17:28]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:17:28.470] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77952, oid: "0247c849-a340-4748-a71d-8fb00b74ca60", upload_time: "2026-08-21T12:17:27Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:28], updated_at: ~N[2026-08-21 12:17:28]} [2026-08-21 12:17:28.470] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:17:27Z", "value" => "morefun"} [2026-08-21 12:17:28.511] [DEBUG] QUERY OK db=40.9ms idle=5.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:27Z", "morefun", "vendor", 77952, ~N[2026-08-21 12:17:28], ~N[2026-08-21 12:17:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:28.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792901, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:28], updated_at: ~N[2026-08-21 12:17:28]}} [2026-08-21 12:17:28.512] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:17:27Z", "value" => "kiosk_launcher"} [2026-08-21 12:17:28.544] [DEBUG] QUERY OK db=31.9ms queue=0.1ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:27Z", "kiosk_launcher", "model", 77952, ~N[2026-08-21 12:17:28], ~N[2026-08-21 12:17:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:28.545] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792902, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:28], updated_at: ~N[2026-08-21 12:17:28]}} [2026-08-21 12:17:28.545] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:17:27Z", "value" => "1.0"} [2026-08-21 12:17:28.732] [DEBUG] QUERY OK db=187.0ms idle=33.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:27Z", "1.0", "app_version", 77952, ~N[2026-08-21 12:17:28], ~N[2026-08-21 12:17:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:28.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792903, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:28], updated_at: ~N[2026-08-21 12:17:28]}} [2026-08-21 12:17:28.733] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:17:27Z", "value" => "13"} [2026-08-21 12:17:28.807] [DEBUG] QUERY OK db=73.5ms idle=188.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:27Z", "13", "android_version", 77952, ~N[2026-08-21 12:17:28], ~N[2026-08-21 12:17:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:28.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792904, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:28], updated_at: ~N[2026-08-21 12:17:28]}} [2026-08-21 12:17:28.807] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:17:27Z", "value" => "918"} [2026-08-21 12:17:28.842] [DEBUG] QUERY OK db=34.3ms idle=75.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:27Z", "918", "ram_free_mb", 77952, ~N[2026-08-21 12:17:28], ~N[2026-08-21 12:17:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:28.842] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792905, itemkey: "ram_free_mb", value: "918", timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:28], updated_at: ~N[2026-08-21 12:17:28]}} [2026-08-21 12:17:28.842] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:17:27Z", "value" => "WIFI"} [2026-08-21 12:17:28.880] [DEBUG] QUERY OK db=36.8ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:27Z", "WIFI", "network_type", 77952, ~N[2026-08-21 12:17:28], ~N[2026-08-21 12:17:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:28.880] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792906, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:28], updated_at: ~N[2026-08-21 12:17:28]}} [2026-08-21 12:17:28.880] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:17:27Z", "value" => "true"} [2026-08-21 12:17:28.930] [DEBUG] QUERY OK db=49.8ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:27Z", "true", "kiosk_active", 77952, ~N[2026-08-21 12:17:28], ~N[2026-08-21 12:17:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:28.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792907, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:28], updated_at: ~N[2026-08-21 12:17:28]}} [2026-08-21 12:17:28.930] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:17:27Z", "value" => ""} [2026-08-21 12:17:28.974] [DEBUG] QUERY OK db=43.1ms idle=51.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:17:27Z", "sim_operator", 77952, ~N[2026-08-21 12:17:28], ~N[2026-08-21 12:17:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:28.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792908, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:28], updated_at: ~N[2026-08-21 12:17:28]}} [2026-08-21 12:17:28.974] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:17:27Z", "value" => "UNKNOWN"} [2026-08-21 12:17:29.016] [DEBUG] QUERY OK db=41.0ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:27Z", "UNKNOWN", "sim_number", 77952, ~N[2026-08-21 12:17:28], ~N[2026-08-21 12:17:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:29.016] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792909, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:28], updated_at: ~N[2026-08-21 12:17:28]}} [2026-08-21 12:17:29.016] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:17:27Z", "value" => "UNKNOWN"} [2026-08-21 12:17:29.049] [DEBUG] QUERY OK db=31.7ms queue=0.3ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:27Z", "UNKNOWN", "sim_iccid", 77952, ~N[2026-08-21 12:17:29], ~N[2026-08-21 12:17:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:29.049] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792910, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:29], updated_at: ~N[2026-08-21 12:17:29]}} [2026-08-21 12:17:29.049] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:17:27Z", "value" => "UNKNOWN"} [2026-08-21 12:17:29.092] [DEBUG] QUERY OK db=42.0ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:27Z", "UNKNOWN", "sim_imsi", 77952, ~N[2026-08-21 12:17:29], ~N[2026-08-21 12:17:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:29.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792911, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:29], updated_at: ~N[2026-08-21 12:17:29]}} [2026-08-21 12:17:29.092] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:17:27Z", "value" => "UNKNOWN"} [2026-08-21 12:17:29.138] [DEBUG] QUERY OK db=45.7ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:27Z", "UNKNOWN", "sim_iccid2", 77952, ~N[2026-08-21 12:17:29], ~N[2026-08-21 12:17:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:29.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792912, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:29], updated_at: ~N[2026-08-21 12:17:29]}} [2026-08-21 12:17:29.138] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:17:27Z", "value" => "UNKNOWN"} [2026-08-21 12:17:29.208] [DEBUG] QUERY OK db=69.4ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:27Z", "UNKNOWN", "sim_imsi2", 77952, ~N[2026-08-21 12:17:29], ~N[2026-08-21 12:17:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:29.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792913, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:29], updated_at: ~N[2026-08-21 12:17:29]}} [2026-08-21 12:17:29.208] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:17:27Z", "value" => "35"} [2026-08-21 12:17:29.261] [DEBUG] QUERY OK db=52.2ms idle=70.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:27Z", "35", "data_usage_mb", 77952, ~N[2026-08-21 12:17:29], ~N[2026-08-21 12:17:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:29.261] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792914, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:29], updated_at: ~N[2026-08-21 12:17:29]}} [2026-08-21 12:17:29.261] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:17:27Z", "value" => "0"} [2026-08-21 12:17:29.340] [DEBUG] QUERY OK db=78.7ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:27Z", "0", "mobile_data_mb", 77952, ~N[2026-08-21 12:17:29], ~N[2026-08-21 12:17:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:29.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792915, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:29], updated_at: ~N[2026-08-21 12:17:29]}} [2026-08-21 12:17:29.341] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:17: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:17:29.367] [DEBUG] QUERY OK db=25.2ms idle=80.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77952, ~N[2026-08-21 12:17:29], ~N[2026-08-21 12:17:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:29.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792916, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:17:27Z", message: nil, status_log_id: 77952, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:29], updated_at: ~N[2026-08-21 12:17:29]}} [2026-08-21 12:17:54.137] [INFO ] Running offline device check... [2026-08-21 12:17:54.137] [INFO ] Starting offline device check... [2026-08-21 12:17:54.139] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=1137.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 12:17:54.147] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.9ms idle=599.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:17:54.154] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms 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 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.156] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=7.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.157] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.158] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.158] [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-08-21 12:17:54.159] [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-08-21 12:17:54.159] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.160] [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-08-21 12:17:54.162] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.168] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms queue=0.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.169] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) 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-08-21 12:17:54.184] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.8ms queue=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.190] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=15.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.192] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.193] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.194] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.213] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.6ms 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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.214] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=19.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.216] [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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.218] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.219] [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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.219] [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-08-21 12:17:54.262] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=42.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.263] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=42.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:17:54.264] [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-08-21 12:17:54.271] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.272] [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 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.274] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.276] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.277] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.281] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.282] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.282] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.283] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.284] [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-08-21 12:17:54.286] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.286] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.288] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.289] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.290] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.291] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.292] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.293] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.294] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.294] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.295] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.296] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.296] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.297] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.298] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.299] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:17:54.299] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 12:17:54.299] [INFO ] Offline device check completed successfully [2026-08-21 12:17:55.600] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 12:17:55.600] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T16:17:53Z","org.device":[{"itemkey":"battery","value":48,"timestamp":"2026-08-21T16:17:53Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T16:17:53Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T16:17:53Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T16:17:53Z","message":""}]} [2026-08-21 12:17:55.601] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T16:17:53Z", "value" => 48}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T16:17:53Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T16:17:53Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T16:17:53Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T16:17:53Z"} [2026-08-21 12:17:55.602] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:17:55.602] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1057.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:17:55.603] [INFO ] Terminal updated: 61250415798001 [2026-08-21 12:17:55.643] [DEBUG] QUERY OK source="tms_terminals" db=39.3ms idle=55.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:17:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:17:55.644] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:17:55.685] [DEBUG] QUERY OK source="tms_terminals" db=40.8ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:17:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:17:55.786] [DEBUG] QUERY OK db=100.8ms idle=41.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T16:17:53Z", ~N[2026-08-21 12:17:55], ~N[2026-08-21 12:17:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:17:55.787] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77953, oid: "org-id-placeholder", upload_time: "2026-08-21T16:17:53Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:55], updated_at: ~N[2026-08-21 12:17:55]} [2026-08-21 12:17:55.787] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T16:17:53Z", "value" => 48} [2026-08-21 12:17:55.892] [DEBUG] QUERY OK db=105.3ms idle=102.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:17:53Z", "48", "battery", 77953, ~N[2026-08-21 12:17:55], ~N[2026-08-21 12:17:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:55.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792917, itemkey: "battery", value: "48", timestamp: "2026-08-21T16:17:53Z", message: nil, status_log_id: 77953, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:55], updated_at: ~N[2026-08-21 12:17:55]}} [2026-08-21 12:17:55.893] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T16:17:53Z", "value" => 50} [2026-08-21 12:17:55.915] [DEBUG] QUERY OK db=21.6ms idle=106.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T16:17:53Z", "50", "memory", 77953, ~N[2026-08-21 12:17:55], ~N[2026-08-21 12:17:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:55.915] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792918, itemkey: "memory", value: "50", timestamp: "2026-08-21T16:17:53Z", message: "Normal", status_log_id: 77953, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:55], updated_at: ~N[2026-08-21 12:17:55]}} [2026-08-21 12:17:55.915] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T16:17:53Z", "value" => 50} [2026-08-21 12:17:55.957] [DEBUG] QUERY OK db=41.0ms queue=0.2ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:17:53Z", "50", "cpu", 77953, ~N[2026-08-21 12:17:55], ~N[2026-08-21 12:17:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:55.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792919, itemkey: "cpu", value: "50", timestamp: "2026-08-21T16:17:53Z", message: nil, status_log_id: 77953, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:55], updated_at: ~N[2026-08-21 12:17:55]}} [2026-08-21 12:17:55.957] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T16:17:53Z", "value" => "online"} [2026-08-21 12:17:56.003] [DEBUG] QUERY OK db=44.9ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:17:53Z", "online", "network", 77953, ~N[2026-08-21 12:17:55], ~N[2026-08-21 12:17:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:56.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792920, itemkey: "network", value: "online", timestamp: "2026-08-21T16:17:53Z", message: nil, status_log_id: 77953, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:55], updated_at: ~N[2026-08-21 12:17:55]}} [2026-08-21 12:17:56.003] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 12:17:58.678] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:17:58.678] [INFO ] Incoming JSON payload: {"oid":"47ec0e13-8627-4e6a-8d0d-562bbc5dab54","sn":"98251226730001","uploadTime":"2026-08-21T12:17:58Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:17:58Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:17:58Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:17:58Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:17:58Z"},{"itemkey":"ram_free_mb","value":"916","timestamp":"2026-08-21T12:17:58Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:17:58Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:17:58Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:17:58Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:17:58Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:17:58Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:17:58Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:17:58Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:17:58Z"},{"itemkey":"data_usage_mb","value":"35","timestamp":"2026-08-21T12:17:58Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:17: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:17:58.680] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "47ec0e13-8627-4e6a-8d0d-562bbc5dab54", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:17:58Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:17:58Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:17:58Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:17:58Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:17:58Z", "value" => "916"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:17:58Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:17:58Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:17:58Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:17:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:17:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:17:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:17:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:17:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:17:58Z", "value" => "35"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:17:58Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:17: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:17:58Z", "vendor" => "morefun"} [2026-08-21 12:17:58.680] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:17:58.680] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:17:58.680] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:17:58.682] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=871.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-08-21 12:17:58.683] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=124.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-08-21 12:17:58.683] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:17:58.684] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:17:58.684] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:17:58.731] [DEBUG] QUERY OK source="tms_terminals" db=46.3ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:17:58], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:17:58.731] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:17:58.732] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=47.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:17:58.773] [DEBUG] QUERY OK source="tms_terminals" db=40.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:17:58], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:17:58.790] [DEBUG] QUERY OK db=17.0ms queue=0.1ms idle=40.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "47ec0e13-8627-4e6a-8d0d-562bbc5dab54", "2026-08-21T12:17:58Z", ~N[2026-08-21 12:17:58], ~N[2026-08-21 12:17:58]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:17:58.790] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77954, oid: "47ec0e13-8627-4e6a-8d0d-562bbc5dab54", upload_time: "2026-08-21T12:17:58Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:58], updated_at: ~N[2026-08-21 12:17:58]} [2026-08-21 12:17:58.790] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:17:58Z", "value" => "morefun"} [2026-08-21 12:17:58.828] [DEBUG] QUERY OK db=37.0ms idle=18.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:58Z", "morefun", "vendor", 77954, ~N[2026-08-21 12:17:58], ~N[2026-08-21 12:17:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:58.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792921, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:58], updated_at: ~N[2026-08-21 12:17:58]}} [2026-08-21 12:17:58.830] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:17:58Z", "value" => "kiosk_launcher"} [2026-08-21 12:17:58.882] [DEBUG] QUERY OK db=52.2ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:58Z", "kiosk_launcher", "model", 77954, ~N[2026-08-21 12:17:58], ~N[2026-08-21 12:17:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:58.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792922, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:58], updated_at: ~N[2026-08-21 12:17:58]}} [2026-08-21 12:17:58.883] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:17:58Z", "value" => "1.0"} [2026-08-21 12:17:58.938] [DEBUG] QUERY OK db=54.5ms queue=0.1ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:58Z", "1.0", "app_version", 77954, ~N[2026-08-21 12:17:58], ~N[2026-08-21 12:17:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:58.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792923, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:58], updated_at: ~N[2026-08-21 12:17:58]}} [2026-08-21 12:17:58.939] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:17:58Z", "value" => "13"} [2026-08-21 12:17:58.982] [DEBUG] QUERY OK db=43.1ms idle=56.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:58Z", "13", "android_version", 77954, ~N[2026-08-21 12:17:58], ~N[2026-08-21 12:17:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:58.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792924, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:58], updated_at: ~N[2026-08-21 12:17:58]}} [2026-08-21 12:17:58.982] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:17:58Z", "value" => "916"} [2026-08-21 12:17:59.020] [DEBUG] QUERY OK db=37.0ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:58Z", "916", "ram_free_mb", 77954, ~N[2026-08-21 12:17:58], ~N[2026-08-21 12:17:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:59.020] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792925, itemkey: "ram_free_mb", value: "916", timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:58], updated_at: ~N[2026-08-21 12:17:58]}} [2026-08-21 12:17:59.020] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:17:58Z", "value" => "WIFI"} [2026-08-21 12:17:59.055] [DEBUG] QUERY OK db=34.7ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:58Z", "WIFI", "network_type", 77954, ~N[2026-08-21 12:17:59], ~N[2026-08-21 12:17:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:59.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792926, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:59], updated_at: ~N[2026-08-21 12:17:59]}} [2026-08-21 12:17:59.056] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:17:58Z", "value" => "true"} [2026-08-21 12:17:59.101] [DEBUG] QUERY OK db=44.4ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:58Z", "true", "kiosk_active", 77954, ~N[2026-08-21 12:17:59], ~N[2026-08-21 12:17:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:59.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792927, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:59], updated_at: ~N[2026-08-21 12:17:59]}} [2026-08-21 12:17:59.102] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:17:58Z", "value" => ""} [2026-08-21 12:17:59.145] [DEBUG] QUERY OK db=43.0ms queue=0.2ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:17:58Z", "sim_operator", 77954, ~N[2026-08-21 12:17:59], ~N[2026-08-21 12:17:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:59.146] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792928, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:59], updated_at: ~N[2026-08-21 12:17:59]}} [2026-08-21 12:17:59.146] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:17:58Z", "value" => "UNKNOWN"} [2026-08-21 12:17:59.199] [DEBUG] QUERY OK db=52.0ms queue=0.2ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:58Z", "UNKNOWN", "sim_number", 77954, ~N[2026-08-21 12:17:59], ~N[2026-08-21 12:17:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:59.199] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792929, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:59], updated_at: ~N[2026-08-21 12:17:59]}} [2026-08-21 12:17:59.199] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:17:58Z", "value" => "UNKNOWN"} [2026-08-21 12:17:59.260] [DEBUG] QUERY OK db=59.6ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:58Z", "UNKNOWN", "sim_iccid", 77954, ~N[2026-08-21 12:17:59], ~N[2026-08-21 12:17:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:59.260] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792930, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:59], updated_at: ~N[2026-08-21 12:17:59]}} [2026-08-21 12:17:59.260] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:17:58Z", "value" => "UNKNOWN"} [2026-08-21 12:17:59.294] [DEBUG] QUERY OK db=33.4ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:58Z", "UNKNOWN", "sim_imsi", 77954, ~N[2026-08-21 12:17:59], ~N[2026-08-21 12:17:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:59.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792931, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:59], updated_at: ~N[2026-08-21 12:17:59]}} [2026-08-21 12:17:59.294] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:17:58Z", "value" => "UNKNOWN"} [2026-08-21 12:17:59.321] [DEBUG] QUERY OK db=26.5ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:58Z", "UNKNOWN", "sim_iccid2", 77954, ~N[2026-08-21 12:17:59], ~N[2026-08-21 12:17:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:59.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792932, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:59], updated_at: ~N[2026-08-21 12:17:59]}} [2026-08-21 12:17:59.322] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:17:58Z", "value" => "UNKNOWN"} [2026-08-21 12:17:59.362] [DEBUG] QUERY OK db=39.6ms idle=28.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:58Z", "UNKNOWN", "sim_imsi2", 77954, ~N[2026-08-21 12:17:59], ~N[2026-08-21 12:17:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:59.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792933, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:59], updated_at: ~N[2026-08-21 12:17:59]}} [2026-08-21 12:17:59.362] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:17:58Z", "value" => "35"} [2026-08-21 12:17:59.398] [DEBUG] QUERY OK db=34.9ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:58Z", "35", "data_usage_mb", 77954, ~N[2026-08-21 12:17:59], ~N[2026-08-21 12:17:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:59.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792934, itemkey: "data_usage_mb", value: "35", timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:59], updated_at: ~N[2026-08-21 12:17:59]}} [2026-08-21 12:17:59.398] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:17:58Z", "value" => "0"} [2026-08-21 12:17:59.427] [DEBUG] QUERY OK db=29.1ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17:58Z", "0", "mobile_data_mb", 77954, ~N[2026-08-21 12:17:59], ~N[2026-08-21 12:17:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:59.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792935, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:59], updated_at: ~N[2026-08-21 12:17:59]}} [2026-08-21 12:17:59.428] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:17: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:17:59.484] [DEBUG] QUERY OK db=54.7ms idle=31.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:17: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77954, ~N[2026-08-21 12:17:59], ~N[2026-08-21 12:17:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:17:59.485] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792936, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:17:58Z", message: nil, status_log_id: 77954, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:17:59], updated_at: ~N[2026-08-21 12:17:59]}} [2026-08-21 12:18:22.902] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:18:22.902] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:18:22Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:18:22Z","value":"52"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:18:22Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:18:22Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:18:22Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:18:22Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:18:22Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:18:22Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:18:22Z","vendor":"MoreFun"} [2026-08-21 12:18:22.902] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:18:22Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:18:22Z", "value" => "52"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:18:22Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:18:22Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:18:22Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:18:22Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:18:22Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:18:22Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:18:22Z", "vendor" => "MoreFun"} [2026-08-21 12:18:22.903] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:18:22.904] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:18:22.904] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:18:22.905] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1090.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-08-21 12:18:22.907] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=250.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-08-21 12:18:22.907] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms idle=2.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-08-21 12:18:22.909] [DEBUG] QUERY OK source="parameter_definitions" db=0.6ms queue=0.5ms idle=0.9ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:18:22.909] [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-08-21 12:18:22.950] [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` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:18:22.951] [DEBUG] QUERY OK db=0.6ms queue=0.6ms idle=1082.8ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["626165170000000"] [2026-08-21 12:18:22.951] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:18:22.952] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms queue=0.1ms 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 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:18:22.952] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 12:18:22.953] [DEBUG] QUERY OK source="address" db=0.4ms queue=0.1ms idle=2.8ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:18:22.953] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:18:22.954] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:18:23.026] [DEBUG] QUERY OK db=70.1ms idle=3.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`parameters_sent`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "7ef2a04b91897c91b2e9dd493b77c141a8415d0c192e65c6d27070d7e933d2c9", 6082, 936, ~U[2026-08-21 12:18: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-08-21 12:18:22], ~N[2026-08-21 12:18:22]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:18:23.026] [INFO ] AutoPushService: Created push log 49060 for MF919 params.zip [2026-08-21 12:18:23.026] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 6082, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:18:23.026] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:18:23.027] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:18:23.027] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=1.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:18:23.030] [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-08-21 12:18:23.077] [DEBUG] QUERY OK db=45.2ms queue=0.1ms idle=4.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", "c117a1435bce9f7ad1597bd43f6c6622dca528b733a066ee6f1dfcd6864235e1", 3331, 17947, ~U[2026-08-21 12:18:23Z], "priv/ota/98251226730001/l3config.zip", 33, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-08-21 12:18:23], ~N[2026-08-21 12:18:23]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:18:23.077] [INFO ] AutoPushService: Created push log 49061 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:18:23.077] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 3331, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:18:23.077] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:18:23.077] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:18:23.079] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=33.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 12:18:23.079] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:18:23.081] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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-08-21 12:18:23.081] [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-08-21 12:18:23.085] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:18:23.085] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:18:23.086] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:18:23.087] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=6.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:18:23.087] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:18:23.087] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:18:23.088] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=6.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:18:23.164] [DEBUG] QUERY OK source="tms_terminals" db=34.3ms queue=41.3ms idle=1.5ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:18:23], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:18:23.164] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:18:23.164] [INFO ] Event published: terminal_updated [2026-08-21 12:18:23.164] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:18:23.165] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:18:23.165] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:18:23.165] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms idle=76.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:18:23], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:18:23.166] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:18:23.167] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:18:23.167] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:18:23.255] [DEBUG] QUERY OK source="tms_terminals" db=48.9ms queue=40.8ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:18:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:18:23.256] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=88.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-08-21 12:18:23.257] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:18:23.258] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=0.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:18:23.258] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:18:23.279] [DEBUG] QUERY OK source="parameter_push_logs" db=20.1ms queue=0.1ms 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-08-21 11:48:23]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:18:23.279] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:18:23.279] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:18:23.280] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:18:23.281] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-08-21 12:18:23.282] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:18:23.283] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:18:23.358] [DEBUG] QUERY OK source="tms_terminals" db=32.7ms queue=42.4ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:18:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:18:23.421] [DEBUG] QUERY OK db=61.9ms queue=0.1ms idle=76.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:18:22Z", ~N[2026-08-21 12:18:23], ~N[2026-08-21 12:18:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:18:23.421] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77955, oid: "organization_id", upload_time: "2026-08-21T12:18:22Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:23], updated_at: ~N[2026-08-21 12:18:23]} [2026-08-21 12:18:23.421] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:18:22Z", "value" => "online"} [2026-08-21 12:18:23.456] [DEBUG] QUERY OK db=34.1ms idle=63.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:18:22Z", "online", "status", 77955, ~N[2026-08-21 12:18:23], ~N[2026-08-21 12:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:23.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792937, itemkey: "status", value: "online", timestamp: "2026-08-21T12:18:22Z", message: "Terminal status update", status_log_id: 77955, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:23], updated_at: ~N[2026-08-21 12:18:23]}} [2026-08-21 12:18:23.456] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:18:23.457] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:18:22Z", "value" => "52"} [2026-08-21 12:18:23.485] [DEBUG] QUERY OK db=27.6ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:18:22Z", "52", "battery", 77955, ~N[2026-08-21 12:18:23], ~N[2026-08-21 12:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:23.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792938, itemkey: "battery", value: "52", timestamp: "2026-08-21T12:18:22Z", message: "Battery level", status_log_id: 77955, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:23], updated_at: ~N[2026-08-21 12:18:23]}} [2026-08-21 12:18:23.486] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:18:22Z", "value" => "online"} [2026-08-21 12:18:23.548] [DEBUG] QUERY OK db=61.7ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:18:22Z", "online", "network", 77955, ~N[2026-08-21 12:18:23], ~N[2026-08-21 12:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:23.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792939, itemkey: "network", value: "online", timestamp: "2026-08-21T12:18:22Z", message: "Network connectivity", status_log_id: 77955, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:23], updated_at: ~N[2026-08-21 12:18:23]}} [2026-08-21 12:18:23.549] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:18:23.549] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:18:22Z", "value" => "0"} [2026-08-21 12:18:23.574] [DEBUG] QUERY OK db=24.4ms idle=64.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:18:22Z", "0", "cpu", 77955, ~N[2026-08-21 12:18:23], ~N[2026-08-21 12:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:23.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792940, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:18:22Z", message: "CPU usage percentage", status_log_id: 77955, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:23], updated_at: ~N[2026-08-21 12:18:23]}} [2026-08-21 12:18:23.576] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:18:22Z", "value" => "1.0.0"} [2026-08-21 12:18:23.609] [DEBUG] QUERY OK db=30.9ms queue=0.1ms idle=29.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:18:22Z", "1.0.0", "parameter_config", 77955, ~N[2026-08-21 12:18:23], ~N[2026-08-21 12:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:23.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792941, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:18:22Z", message: "Current parameters version", status_log_id: 77955, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:23], updated_at: ~N[2026-08-21 12:18:23]}} [2026-08-21 12:18:23.609] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:18:22Z", "value" => "1.0.1"} [2026-08-21 12:18:23.653] [DEBUG] QUERY OK db=43.9ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:18:22Z", "1.0.1", "emv_config", 77955, ~N[2026-08-21 12:18:23], ~N[2026-08-21 12:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:23.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792942, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:18:22Z", message: "Current EMV config version", status_log_id: 77955, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:23], updated_at: ~N[2026-08-21 12:18:23]}} [2026-08-21 12:18:23.654] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:18:22Z", "value" => ""} [2026-08-21 12:18:23.759] [DEBUG] QUERY OK db=61.4ms queue=43.2ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:18:22Z", "keys_config", 77955, ~N[2026-08-21 12:18:23], ~N[2026-08-21 12:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:23.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792943, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:18:22Z", message: "Current keys config version", status_log_id: 77955, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:23], updated_at: ~N[2026-08-21 12:18:23]}} [2026-08-21 12:18:23.760] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:18:22Z", "value" => "3.8.7.3"} [2026-08-21 12:18:23.795] [DEBUG] QUERY OK db=34.6ms queue=0.3ms idle=101.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:18:22Z", "3.8.7.3", "application", 77955, ~N[2026-08-21 12:18:23], ~N[2026-08-21 12:18:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:23.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792944, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:18:22Z", message: "Current application version", status_log_id: 77955, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:23], updated_at: ~N[2026-08-21 12:18:23]}} [2026-08-21 12:18:23.796] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:18:23Z"} [2026-08-21 12:18:23.796] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:18:23Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 29, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:18:27.331] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 12:18:27.331] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T03:27:52Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T03:27:52Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T03:27:52Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T03:27:52Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T03:27:52Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T03:27:52Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T03:27:52Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T03:27:52Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T03:27:52Z","vendor":"MoreFun"} [2026-08-21 12:18:27.332] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:27:52Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:27:52Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:27:52Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:27:52Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:27:52Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:27:52Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:27:52Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:27:52Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T03:27:52Z", "vendor" => "MoreFun"} [2026-08-21 12:18:27.332] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:18:27.332] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 12:18:27.332] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 12:18:27.333] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=663.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-08-21 12:18:27.334] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=519.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 12:18:27.335] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms idle=1.6ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:18:27.337] [DEBUG] QUERY OK source="parameter_definitions" db=0.6ms queue=0.3ms idle=1.3ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:18:27.338] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms 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 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:18:27.378] [DEBUG] QUERY OK source="pos_merchant" db=39.7ms idle=1.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:18:27.380] [DEBUG] QUERY OK db=1.7ms queue=0.5ms idle=511.1ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["123451234512345"] [2026-08-21 12:18:27.381] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:18:27.381] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=43.1ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:18:27.381] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 12:18:27.383] [DEBUG] QUERY OK source="address" db=1.0ms idle=4.1ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:18:27.383] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 12:18:27.385] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 12:18:27.427] [DEBUG] QUERY OK db=40.6ms idle=5.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", "467ebf5c2338dfe45f95f9c6e6b9dc2eeacbff3cbd16aca11ba4d835b65c1bf4", 3491, 932, ~U[2026-08-21 12:18:27Z], "priv/ota/98250623730001/params.zip", 19, %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", "EXTERNAL_PINPAD" => "0", ...}, "full", 10, "MoreFun", "MF919", "parameter", "missing_version", "1.0.0", ~N[2026-08-21 12:18:27], ~N[2026-08-21 12:18:27]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:18:27.428] [INFO ] AutoPushService: Created push log 49062 for MF919 params.zip [2026-08-21 12:18:27.428] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 3491, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:18:27.428] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:18:27.429] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 12:18:27.431] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=46.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-08-21 12:18:27.434] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 12:18:27.478] [DEBUG] QUERY OK db=42.6ms queue=0.5ms 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", "89182f8db8b4574654d63b9dc65528b39081fec5142f8e1b5bf45afded404b76", 3587, 17947, ~U[2026-08-21 12:18:27Z], "priv/ota/98250623730001/l3config.zip", 19, "full", "MoreFun", "MF919", "emv_config", "missing_version", "1.0.1", ~N[2026-08-21 12:18:27], ~N[2026-08-21 12:18:27]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:18:27.479] [INFO ] AutoPushService: Created push log 49063 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:18:27.479] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 3587, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:18:27.479] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:18:27.480] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 12:18:27.482] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=50.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 12:18:27.483] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 12:18:27.484] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.2ms idle=5.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:18:27.486] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 12:18:27.489] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:18:27.489] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:18:27.492] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:18:27.497] [DEBUG] QUERY OK source="config_file_versions" db=4.1ms idle=10.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-08-21 12:18:27.498] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:18:27.499] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 12:18:27.502] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=15.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:18:27.502] [INFO ] Terminal updated: 98250623730001 [2026-08-21 12:18:27.527] [DEBUG] QUERY OK source="tms_terminals" db=24.5ms idle=5.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:18:27], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:18:27.528] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.1ms idle=26.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 12:18:27.530] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms 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-08-21 12:18:27.530] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=1.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:18:27.531] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:18:27.551] [DEBUG] QUERY OK source="parameter_push_logs" db=19.7ms queue=0.1ms 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 [19, "application", ~N[2026-08-21 11:48:27]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:18:27.551] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:18:27.551] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 12:18:27.552] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=21.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:18:27.554] [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-08-21 12:18:27.555] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:18:27.556] [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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:18:27.593] [DEBUG] QUERY OK source="tms_terminals" db=37.5ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:18:27], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:18:27.638] [DEBUG] QUERY OK db=44.2ms queue=0.2ms idle=38.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T03:27:52Z", ~N[2026-08-21 12:18:27], ~N[2026-08-21 12:18:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:18:27.639] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77956, oid: "organization_id", upload_time: "2026-08-21T03:27:52Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:27], updated_at: ~N[2026-08-21 12:18:27]} [2026-08-21 12:18:27.639] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:27:52Z", "value" => "online"} [2026-08-21 12:18:27.675] [DEBUG] QUERY OK db=34.9ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T03:27:52Z", "online", "status", 77956, ~N[2026-08-21 12:18:27], ~N[2026-08-21 12:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:27.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792945, itemkey: "status", value: "online", timestamp: "2026-08-21T03:27:52Z", message: "Terminal status update", status_log_id: 77956, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:27], updated_at: ~N[2026-08-21 12:18:27]}} [2026-08-21 12:18:27.675] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 12:18:27.675] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:27:52Z", "value" => "51"} [2026-08-21 12:18:27.742] [DEBUG] QUERY OK db=66.2ms idle=2.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T03:27:52Z", "51", "battery", 77956, ~N[2026-08-21 12:18:27], ~N[2026-08-21 12:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:27.742] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792946, itemkey: "battery", value: "51", timestamp: "2026-08-21T03:27:52Z", message: "Battery level", status_log_id: 77956, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:27], updated_at: ~N[2026-08-21 12:18:27]}} [2026-08-21 12:18:27.742] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:27:52Z", "value" => "online"} [2026-08-21 12:18:27.817] [DEBUG] QUERY OK db=74.1ms idle=68.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T03:27:52Z", "online", "network", 77956, ~N[2026-08-21 12:18:27], ~N[2026-08-21 12:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:27.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792947, itemkey: "network", value: "online", timestamp: "2026-08-21T03:27:52Z", message: "Network connectivity", status_log_id: 77956, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:27], updated_at: ~N[2026-08-21 12:18:27]}} [2026-08-21 12:18:27.817] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 12:18:27.818] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:27:52Z", "value" => "0"} [2026-08-21 12:18:27.882] [DEBUG] QUERY OK db=63.4ms idle=76.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T03:27:52Z", "0", "cpu", 77956, ~N[2026-08-21 12:18:27], ~N[2026-08-21 12:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:27.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792948, itemkey: "cpu", value: "0", timestamp: "2026-08-21T03:27:52Z", message: "CPU usage percentage", status_log_id: 77956, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:27], updated_at: ~N[2026-08-21 12:18:27]}} [2026-08-21 12:18:27.882] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:27:52Z", "value" => "1.0.0"} [2026-08-21 12:18:28.060] [DEBUG] QUERY OK db=177.1ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T03:27:52Z", "1.0.0", "parameter_config", 77956, ~N[2026-08-21 12:18:27], ~N[2026-08-21 12:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:28.060] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792949, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T03:27:52Z", message: "Current parameters version", status_log_id: 77956, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:27], updated_at: ~N[2026-08-21 12:18:27]}} [2026-08-21 12:18:28.061] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:27:52Z", "value" => "1.0.1"} [2026-08-21 12:18:28.149] [DEBUG] QUERY OK db=87.4ms idle=179.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T03:27:52Z", "1.0.1", "emv_config", 77956, ~N[2026-08-21 12:18:28], ~N[2026-08-21 12:18:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:28.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792950, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T03:27:52Z", message: "Current EMV config version", status_log_id: 77956, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:28], updated_at: ~N[2026-08-21 12:18:28]}} [2026-08-21 12:18:28.149] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:27:52Z", "value" => ""} [2026-08-21 12:18:28.249] [DEBUG] QUERY OK db=99.9ms idle=89.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T03:27:52Z", "keys_config", 77956, ~N[2026-08-21 12:18:28], ~N[2026-08-21 12:18:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:28.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792951, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T03:27:52Z", message: "Current keys config version", status_log_id: 77956, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:28], updated_at: ~N[2026-08-21 12:18:28]}} [2026-08-21 12:18:28.251] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:27:52Z", "value" => "3.8.7.3"} [2026-08-21 12:18:28.339] [DEBUG] QUERY OK db=88.3ms idle=102.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T03:27:52Z", "3.8.7.3", "application", 77956, ~N[2026-08-21 12:18:28], ~N[2026-08-21 12:18:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:28.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792952, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T03:27:52Z", message: "Current application version", status_log_id: 77956, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:28], updated_at: ~N[2026-08-21 12:18:28]}} [2026-08-21 12:18:28.340] [WARN ] Unexpected async result [2026-08-21 12:18:28.340] [WARN ] Unexpected async result [2026-08-21 12:18:28.949] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:18:28.949] [INFO ] Incoming JSON payload: {"oid":"61316548-0007-44de-b086-a6e7bcd60d45","sn":"98251226730001","uploadTime":"2026-08-21T12:18:28Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:18:28Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:18:28Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:18:28Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:18:28Z"},{"itemkey":"ram_free_mb","value":"910","timestamp":"2026-08-21T12:18:28Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:18:28Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:18:28Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:18:28Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:18:28Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:18:28Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:18:28Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:18:28Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:18:28Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:18:28Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:18: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:18:28.952] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "61316548-0007-44de-b086-a6e7bcd60d45", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:18:28Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:18:28Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:18:28Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:18:28Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:18:28Z", "value" => "910"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:18:28Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:18:28Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:18:28Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:18:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:18:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:18:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:18:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:18:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:18:28Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:18:28Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:18: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:18:28Z", "vendor" => "morefun"} [2026-08-21 12:18:28.954] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:18:28.954] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:18:28.954] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:18:28.955] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=614.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-08-21 12:18:28.956] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=278.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-08-21 12:18:28.956] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:18:28.958] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:18:29.043] [DEBUG] QUERY OK source="tms_terminals" db=41.5ms queue=40.8ms idle=4.8ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 12:18:28], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:18:29.043] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:18:29.043] [INFO ] Event published: terminal_updated [2026-08-21 12:18:29.044] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:18:29.044] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:18:29.044] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:18:29.045] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.9ms idle=85.3ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:18:29], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:18:29.048] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms queue=0.1ms idle=2.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:18:29.052] [DEBUG] QUERY OK source="terminal_group_rules" db=2.5ms queue=0.5ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:18:29.052] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:18:29.137] [DEBUG] QUERY OK source="tms_terminals" db=49.2ms queue=41.6ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 12:18:29], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:18:29.137] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:18:29.143] [DEBUG] QUERY OK source="tms_terminals" db=4.9ms idle=86.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:18:29.192] [DEBUG] QUERY OK source="tms_terminals" db=42.9ms queue=5.6ms idle=6.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:18:29], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:18:29.250] [DEBUG] QUERY OK db=57.6ms idle=50.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "61316548-0007-44de-b086-a6e7bcd60d45", "2026-08-21T12:18:28Z", ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:18:29.251] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77957, oid: "61316548-0007-44de-b086-a6e7bcd60d45", upload_time: "2026-08-21T12:18:28Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]} [2026-08-21 12:18:29.251] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:18:28Z", "value" => "morefun"} [2026-08-21 12:18:29.304] [DEBUG] QUERY OK db=52.5ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:28Z", "morefun", "vendor", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:29.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792953, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:29.304] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:18:28Z", "value" => "kiosk_launcher"} [2026-08-21 12:18:29.354] [DEBUG] QUERY OK db=48.6ms queue=1.3ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:28Z", "kiosk_launcher", "model", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:29.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792954, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:29.356] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:18:28Z", "value" => "1.0"} [2026-08-21 12:18:29.406] [DEBUG] QUERY OK db=48.8ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:28Z", "1.0", "app_version", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:29.406] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792955, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:29.406] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:18:28Z", "value" => "13"} [2026-08-21 12:18:29.470] [DEBUG] QUERY OK db=63.0ms idle=52.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:28Z", "13", "android_version", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:29.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792956, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:29.470] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:18:28Z", "value" => "910"} [2026-08-21 12:18:29.524] [DEBUG] QUERY OK db=52.4ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:28Z", "910", "ram_free_mb", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:29.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792957, itemkey: "ram_free_mb", value: "910", timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:29.525] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:18:28Z", "value" => "WIFI"} [2026-08-21 12:18:29.556] [DEBUG] QUERY OK db=31.3ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:28Z", "WIFI", "network_type", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:29.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792958, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:29.557] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:18:28Z", "value" => "true"} [2026-08-21 12:18:29.598] [DEBUG] QUERY OK db=40.7ms idle=32.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:28Z", "true", "kiosk_active", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:29.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792959, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:29.598] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:18:28Z", "value" => ""} [2026-08-21 12:18:29.652] [DEBUG] QUERY OK db=51.3ms queue=0.9ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:18:28Z", "sim_operator", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:29.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792960, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:29.653] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:18:28Z", "value" => "UNKNOWN"} [2026-08-21 12:18:29.712] [DEBUG] QUERY OK db=58.7ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:28Z", "UNKNOWN", "sim_number", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:29.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792961, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:29.712] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:18:28Z", "value" => "UNKNOWN"} [2026-08-21 12:18:29.756] [DEBUG] QUERY OK db=44.0ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:28Z", "UNKNOWN", "sim_iccid", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:29.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792962, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:29.757] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:18:28Z", "value" => "UNKNOWN"} [2026-08-21 12:18:29.799] [DEBUG] QUERY OK db=40.7ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:28Z", "UNKNOWN", "sim_imsi", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:29.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792963, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:29.799] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:18:28Z", "value" => "UNKNOWN"} [2026-08-21 12:18:29.843] [DEBUG] QUERY OK db=44.0ms queue=0.1ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:28Z", "UNKNOWN", "sim_iccid2", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:29.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792964, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:29.844] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:18:28Z", "value" => "UNKNOWN"} [2026-08-21 12:18:29.893] [DEBUG] QUERY OK db=49.1ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:28Z", "UNKNOWN", "sim_imsi2", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:29.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792965, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:29.894] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:18:28Z", "value" => "36"} [2026-08-21 12:18:29.947] [DEBUG] QUERY OK db=52.7ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:28Z", "36", "data_usage_mb", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:29.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792966, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:29.947] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:18:28Z", "value" => "0"} [2026-08-21 12:18:30.022] [DEBUG] QUERY OK db=74.0ms idle=54.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:28Z", "0", "mobile_data_mb", 77957, ~N[2026-08-21 12:18:29], ~N[2026-08-21 12:18:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:30.022] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792967, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:29], updated_at: ~N[2026-08-21 12:18:29]}} [2026-08-21 12:18:30.023] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:18: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:18:30.141] [DEBUG] QUERY OK db=118.1ms idle=75.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77957, ~N[2026-08-21 12:18:30], ~N[2026-08-21 12:18:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:30.143] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792968, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:18:28Z", message: nil, status_log_id: 77957, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:30], updated_at: ~N[2026-08-21 12:18:30]}} [2026-08-21 12:18:43.392] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:18:23Z"} [2026-08-21 12:18:43.392] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:18:23Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 30, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:18:58.855] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:18:58.855] [INFO ] Incoming JSON payload: {"oid":"a6b55578-d6b5-4000-952b-93b669fc0e75","sn":"98251226730001","uploadTime":"2026-08-21T12:18:58Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:18:58Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:18:58Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:18:58Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:18:58Z"},{"itemkey":"ram_free_mb","value":"915","timestamp":"2026-08-21T12:18:58Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:18:58Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:18:58Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:18:58Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:18:58Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:18:58Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:18:58Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:18:58Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:18:58Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:18:58Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:18: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:18:58.859] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a6b55578-d6b5-4000-952b-93b669fc0e75", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:18:58Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:18:58Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:18:58Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:18:58Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:18:58Z", "value" => "915"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:18:58Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:18:58Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:18:58Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:18:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:18:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:18:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:18:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:18:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:18:58Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:18:58Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:18: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:18:58Z", "vendor" => "morefun"} [2026-08-21 12:18:58.862] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:18:58.862] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:18:58.862] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:18:58.867] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=3.7ms idle=1044.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-08-21 12:18:58.868] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=70.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 12:18:58.868] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:18:58.871] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms queue=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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:18:58.872] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:18:58.896] [DEBUG] QUERY OK source="tms_terminals" db=23.8ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:18:58], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:18:58.896] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:18:58.897] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:18:58.945] [DEBUG] QUERY OK source="tms_terminals" db=47.4ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:18:58], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:18:58.991] [DEBUG] QUERY OK db=45.5ms idle=48.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a6b55578-d6b5-4000-952b-93b669fc0e75", "2026-08-21T12:18:58Z", ~N[2026-08-21 12:18:58], ~N[2026-08-21 12:18:58]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:18:58.991] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77958, oid: "a6b55578-d6b5-4000-952b-93b669fc0e75", upload_time: "2026-08-21T12:18:58Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:58], updated_at: ~N[2026-08-21 12:18:58]} [2026-08-21 12:18:58.991] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:18:58Z", "value" => "morefun"} [2026-08-21 12:18:59.050] [DEBUG] QUERY OK db=58.5ms queue=0.1ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:58Z", "morefun", "vendor", 77958, ~N[2026-08-21 12:18:58], ~N[2026-08-21 12:18:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792969, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:58], updated_at: ~N[2026-08-21 12:18:58]}} [2026-08-21 12:18:59.051] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:18:58Z", "value" => "kiosk_launcher"} [2026-08-21 12:18:59.091] [DEBUG] QUERY OK db=39.7ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:58Z", "kiosk_launcher", "model", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792970, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:18:59.091] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:18:58Z", "value" => "1.0"} [2026-08-21 12:18:59.129] [DEBUG] QUERY OK db=37.0ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:58Z", "1.0", "app_version", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.129] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792971, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:18:59.129] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:18:58Z", "value" => "13"} [2026-08-21 12:18:59.190] [DEBUG] QUERY OK db=60.4ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:58Z", "13", "android_version", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792972, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:18:59.191] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:18:58Z", "value" => "915"} [2026-08-21 12:18:59.242] [DEBUG] QUERY OK db=49.2ms idle=64.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:58Z", "915", "ram_free_mb", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792973, itemkey: "ram_free_mb", value: "915", timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:18:59.242] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:18:58Z", "value" => "WIFI"} [2026-08-21 12:18:59.273] [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-08-21T12:18:58Z", "WIFI", "network_type", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.275] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792974, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:18:59.275] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:18:58Z", "value" => "true"} [2026-08-21 12:18:59.330] [DEBUG] QUERY OK db=54.8ms idle=33.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:58Z", "true", "kiosk_active", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.330] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792975, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:18:59.333] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:18:58Z", "value" => ""} [2026-08-21 12:18:59.363] [DEBUG] QUERY OK db=29.2ms idle=60.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:18:58Z", "sim_operator", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792976, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:18:59.363] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:18:58Z", "value" => "UNKNOWN"} [2026-08-21 12:18:59.403] [DEBUG] QUERY OK db=40.1ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:58Z", "UNKNOWN", "sim_number", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792977, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:18:59.404] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:18:58Z", "value" => "UNKNOWN"} [2026-08-21 12:18:59.443] [DEBUG] QUERY OK db=38.8ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:58Z", "UNKNOWN", "sim_iccid", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.444] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792978, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:18:59.444] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:18:58Z", "value" => "UNKNOWN"} [2026-08-21 12:18:59.479] [DEBUG] QUERY OK db=34.0ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:58Z", "UNKNOWN", "sim_imsi", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792979, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:18:59.479] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:18:58Z", "value" => "UNKNOWN"} [2026-08-21 12:18:59.511] [DEBUG] QUERY OK db=31.1ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:58Z", "UNKNOWN", "sim_iccid2", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792980, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:18:59.511] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:18:58Z", "value" => "UNKNOWN"} [2026-08-21 12:18:59.559] [DEBUG] QUERY OK db=47.3ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:58Z", "UNKNOWN", "sim_imsi2", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.559] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792981, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:18:59.560] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:18:58Z", "value" => "36"} [2026-08-21 12:18:59.583] [DEBUG] QUERY OK db=23.2ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:58Z", "36", "data_usage_mb", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792982, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:18:59.585] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:18:58Z", "value" => "0"} [2026-08-21 12:18:59.646] [DEBUG] QUERY OK db=60.1ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18:58Z", "0", "mobile_data_mb", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.646] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792983, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:18:59.648] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:18: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:18:59.684] [DEBUG] QUERY OK db=33.1ms idle=66.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:18: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77958, ~N[2026-08-21 12:18:59], ~N[2026-08-21 12:18:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:18:59.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792984, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:18:58Z", message: nil, status_log_id: 77958, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:18:59], updated_at: ~N[2026-08-21 12:18:59]}} [2026-08-21 12:19:28.968] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:19:28.968] [INFO ] Incoming JSON payload: {"oid":"9333d7f1-802f-4e5a-8ace-e2705eb04789","sn":"98251226730001","uploadTime":"2026-08-21T12:19:28Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:19:28Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:19:28Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:19:28Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:19:28Z"},{"itemkey":"ram_free_mb","value":"913","timestamp":"2026-08-21T12:19:28Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:19:28Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:19:28Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:19:28Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:19:28Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:19:28Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:19:28Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:19:28Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:19:28Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:19:28Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:19: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:19:28.969] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "9333d7f1-802f-4e5a-8ace-e2705eb04789", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:19:28Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:19:28Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:19:28Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:19:28Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:19:28Z", "value" => "913"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:19:28Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:19:28Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:19:28Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:19:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:19:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:19:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:19:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:19:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:19:28Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:19:28Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:19: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:19:28Z", "vendor" => "morefun"} [2026-08-21 12:19:28.969] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:19:28.969] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:19:28.969] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:19:28.972] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms idle=992.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-08-21 12:19:28.973] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=145.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-08-21 12:19:28.974] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:19:28.976] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=3.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:19:28.976] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:19:29.017] [DEBUG] QUERY OK source="tms_terminals" db=38.5ms queue=1.3ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:19:28], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:19:29.017] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:19:29.018] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:19:29.044] [DEBUG] QUERY OK source="tms_terminals" db=23.6ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:19:29], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:19:29.088] [DEBUG] QUERY OK db=42.4ms queue=0.2ms idle=26.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "9333d7f1-802f-4e5a-8ace-e2705eb04789", "2026-08-21T12:19:28Z", ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:19:29.089] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77959, oid: "9333d7f1-802f-4e5a-8ace-e2705eb04789", upload_time: "2026-08-21T12:19:28Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]} [2026-08-21 12:19:29.089] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:19:28Z", "value" => "morefun"} [2026-08-21 12:19:29.122] [DEBUG] QUERY OK db=33.2ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:28Z", "morefun", "vendor", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792985, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.123] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:19:28Z", "value" => "kiosk_launcher"} [2026-08-21 12:19:29.148] [DEBUG] QUERY OK db=24.0ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:28Z", "kiosk_launcher", "model", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792986, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.149] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:19:28Z", "value" => "1.0"} [2026-08-21 12:19:29.201] [DEBUG] QUERY OK db=51.2ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:28Z", "1.0", "app_version", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.202] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792987, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.202] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:19:28Z", "value" => "13"} [2026-08-21 12:19:29.240] [DEBUG] QUERY OK db=37.4ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:28Z", "13", "android_version", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.240] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792988, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.240] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:19:28Z", "value" => "913"} [2026-08-21 12:19:29.316] [DEBUG] QUERY OK db=74.7ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:28Z", "913", "ram_free_mb", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792989, itemkey: "ram_free_mb", value: "913", timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.316] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:19:28Z", "value" => "WIFI"} [2026-08-21 12:19:29.351] [DEBUG] QUERY OK db=35.0ms idle=76.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:28Z", "WIFI", "network_type", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792990, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.352] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:19:28Z", "value" => "true"} [2026-08-21 12:19:29.413] [DEBUG] QUERY OK db=60.1ms queue=1.1ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:28Z", "true", "kiosk_active", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792991, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.414] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:19:28Z", "value" => ""} [2026-08-21 12:19:29.495] [DEBUG] QUERY OK db=80.8ms idle=62.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:19:28Z", "sim_operator", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792992, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.495] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:19:28Z", "value" => "UNKNOWN"} [2026-08-21 12:19:29.555] [DEBUG] QUERY OK db=59.0ms queue=0.3ms idle=82.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:28Z", "UNKNOWN", "sim_number", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792993, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.556] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:19:28Z", "value" => "UNKNOWN"} [2026-08-21 12:19:29.602] [DEBUG] QUERY OK db=43.5ms queue=2.0ms idle=61.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:28Z", "UNKNOWN", "sim_iccid", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792994, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.602] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:19:28Z", "value" => "UNKNOWN"} [2026-08-21 12:19:29.644] [DEBUG] QUERY OK db=41.1ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:28Z", "UNKNOWN", "sim_imsi", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.644] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792995, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.644] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:19:28Z", "value" => "UNKNOWN"} [2026-08-21 12:19:29.678] [DEBUG] QUERY OK db=32.8ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:28Z", "UNKNOWN", "sim_iccid2", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792996, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.679] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:19:28Z", "value" => "UNKNOWN"} [2026-08-21 12:19:29.737] [DEBUG] QUERY OK db=55.6ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:28Z", "UNKNOWN", "sim_imsi2", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.738] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792997, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.738] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:19:28Z", "value" => "36"} [2026-08-21 12:19:29.774] [DEBUG] QUERY OK db=33.5ms idle=62.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:28Z", "36", "data_usage_mb", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792998, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.777] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:19:28Z", "value" => "0"} [2026-08-21 12:19:29.843] [DEBUG] QUERY OK db=66.3ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:28Z", "0", "mobile_data_mb", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 792999, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:29.845] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:19: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:19:29.900] [DEBUG] QUERY OK db=53.1ms idle=72.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77959, ~N[2026-08-21 12:19:29], ~N[2026-08-21 12:19:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:29.902] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793000, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:19:28Z", message: nil, status_log_id: 77959, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:29], updated_at: ~N[2026-08-21 12:19:29]}} [2026-08-21 12:19:59.103] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:19:59.103] [INFO ] Incoming JSON payload: {"oid":"5edc98bc-5ae6-4418-ae78-3ff803550192","sn":"98251226730001","uploadTime":"2026-08-21T12:19:58Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:19:58Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:19:58Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:19:58Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:19:58Z"},{"itemkey":"ram_free_mb","value":"916","timestamp":"2026-08-21T12:19:58Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:19:58Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:19:58Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:19:58Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:19:58Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:19:58Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:19:58Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:19:58Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:19:58Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:19:58Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:19: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:19:59.104] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5edc98bc-5ae6-4418-ae78-3ff803550192", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:19:58Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:19:58Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:19:58Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:19:58Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:19:58Z", "value" => "916"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:19:58Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:19:58Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:19:58Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:19:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:19:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:19:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:19:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:19:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:19:58Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:19:58Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:19: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:19:58Z", "vendor" => "morefun"} [2026-08-21 12:19:59.104] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:19:59.104] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:19:59.105] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:19:59.106] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=999.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 12:19:59.110] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=2.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-08-21 12:19:59.111] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:19:59.114] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=0.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:19:59.116] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:19:59.218] [DEBUG] QUERY OK source="tms_terminals" db=60.6ms queue=40.8ms idle=5.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:19:59], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:19:59.218] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:19:59.225] [DEBUG] QUERY OK source="tms_terminals" db=4.6ms idle=106.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-08-21 12:19:59.279] [DEBUG] QUERY OK source="tms_terminals" db=49.3ms queue=4.2ms idle=7.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:19:59], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:19:59.315] [DEBUG] QUERY OK db=35.8ms idle=57.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "5edc98bc-5ae6-4418-ae78-3ff803550192", "2026-08-21T12:19:58Z", ~N[2026-08-21 12:19:59], ~N[2026-08-21 12:19:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:19:59.315] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77960, oid: "5edc98bc-5ae6-4418-ae78-3ff803550192", upload_time: "2026-08-21T12:19:58Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:59], updated_at: ~N[2026-08-21 12:19:59]} [2026-08-21 12:19:59.316] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:19:58Z", "value" => "morefun"} [2026-08-21 12:19:59.389] [DEBUG] QUERY OK db=72.9ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:58Z", "morefun", "vendor", 77960, ~N[2026-08-21 12:19:59], ~N[2026-08-21 12:19:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:59.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793001, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:59], updated_at: ~N[2026-08-21 12:19:59]}} [2026-08-21 12:19:59.389] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:19:58Z", "value" => "kiosk_launcher"} [2026-08-21 12:19:59.423] [DEBUG] QUERY OK db=33.8ms idle=74.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:58Z", "kiosk_launcher", "model", 77960, ~N[2026-08-21 12:19:59], ~N[2026-08-21 12:19:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:59.424] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793002, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:59], updated_at: ~N[2026-08-21 12:19:59]}} [2026-08-21 12:19:59.424] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:19:58Z", "value" => "1.0"} [2026-08-21 12:19:59.480] [DEBUG] QUERY OK db=55.3ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:58Z", "1.0", "app_version", 77960, ~N[2026-08-21 12:19:59], ~N[2026-08-21 12:19:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:59.480] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793003, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:59], updated_at: ~N[2026-08-21 12:19:59]}} [2026-08-21 12:19:59.480] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:19:58Z", "value" => "13"} [2026-08-21 12:19:59.506] [DEBUG] QUERY OK db=23.1ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:58Z", "13", "android_version", 77960, ~N[2026-08-21 12:19:59], ~N[2026-08-21 12:19:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:59.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793004, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:59], updated_at: ~N[2026-08-21 12:19:59]}} [2026-08-21 12:19:59.506] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:19:58Z", "value" => "916"} [2026-08-21 12:19:59.545] [DEBUG] QUERY OK db=38.9ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:58Z", "916", "ram_free_mb", 77960, ~N[2026-08-21 12:19:59], ~N[2026-08-21 12:19:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:59.545] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793005, itemkey: "ram_free_mb", value: "916", timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:59], updated_at: ~N[2026-08-21 12:19:59]}} [2026-08-21 12:19:59.546] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:19:58Z", "value" => "WIFI"} [2026-08-21 12:19:59.588] [DEBUG] QUERY OK db=42.1ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:58Z", "WIFI", "network_type", 77960, ~N[2026-08-21 12:19:59], ~N[2026-08-21 12:19:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:59.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793006, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:59], updated_at: ~N[2026-08-21 12:19:59]}} [2026-08-21 12:19:59.588] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:19:58Z", "value" => "true"} [2026-08-21 12:19:59.638] [DEBUG] QUERY OK db=48.8ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:58Z", "true", "kiosk_active", 77960, ~N[2026-08-21 12:19:59], ~N[2026-08-21 12:19:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:59.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793007, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:59], updated_at: ~N[2026-08-21 12:19:59]}} [2026-08-21 12:19:59.638] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:19:58Z", "value" => ""} [2026-08-21 12:19:59.693] [DEBUG] QUERY OK db=54.3ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:19:58Z", "sim_operator", 77960, ~N[2026-08-21 12:19:59], ~N[2026-08-21 12:19:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:59.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793008, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:59], updated_at: ~N[2026-08-21 12:19:59]}} [2026-08-21 12:19:59.693] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:19:58Z", "value" => "UNKNOWN"} [2026-08-21 12:19:59.714] [DEBUG] QUERY OK db=20.6ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:58Z", "UNKNOWN", "sim_number", 77960, ~N[2026-08-21 12:19:59], ~N[2026-08-21 12:19:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:59.714] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793009, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:59], updated_at: ~N[2026-08-21 12:19:59]}} [2026-08-21 12:19:59.715] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:19:58Z", "value" => "UNKNOWN"} [2026-08-21 12:19:59.774] [DEBUG] QUERY OK db=58.9ms idle=22.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:58Z", "UNKNOWN", "sim_iccid", 77960, ~N[2026-08-21 12:19:59], ~N[2026-08-21 12:19:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:59.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793010, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:59], updated_at: ~N[2026-08-21 12:19:59]}} [2026-08-21 12:19:59.777] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:19:58Z", "value" => "UNKNOWN"} [2026-08-21 12:19:59.835] [DEBUG] QUERY OK db=52.1ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:58Z", "UNKNOWN", "sim_imsi", 77960, ~N[2026-08-21 12:19:59], ~N[2026-08-21 12:19:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:59.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793011, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:59], updated_at: ~N[2026-08-21 12:19:59]}} [2026-08-21 12:19:59.835] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:19:58Z", "value" => "UNKNOWN"} [2026-08-21 12:19:59.923] [DEBUG] QUERY OK db=81.3ms queue=6.0ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:58Z", "UNKNOWN", "sim_iccid2", 77960, ~N[2026-08-21 12:19:59], ~N[2026-08-21 12:19:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:19:59.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793012, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:59], updated_at: ~N[2026-08-21 12:19:59]}} [2026-08-21 12:19:59.925] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:19:58Z", "value" => "UNKNOWN"} [2026-08-21 12:20:00.003] [DEBUG] QUERY OK db=77.0ms queue=0.1ms idle=94.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:58Z", "UNKNOWN", "sim_imsi2", 77960, ~N[2026-08-21 12:19:59], ~N[2026-08-21 12:19:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:00.004] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793013, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:19:59], updated_at: ~N[2026-08-21 12:19:59]}} [2026-08-21 12:20:00.004] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:19:58Z", "value" => "36"} [2026-08-21 12:20:00.073] [DEBUG] QUERY OK db=68.6ms queue=0.1ms idle=81.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:58Z", "36", "data_usage_mb", 77960, ~N[2026-08-21 12:20:00], ~N[2026-08-21 12:20:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:00.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793014, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:00], updated_at: ~N[2026-08-21 12:20:00]}} [2026-08-21 12:20:00.076] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:19:58Z", "value" => "0"} [2026-08-21 12:20:00.147] [DEBUG] QUERY OK db=70.2ms idle=35.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19:58Z", "0", "mobile_data_mb", 77960, ~N[2026-08-21 12:20:00], ~N[2026-08-21 12:20:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:00.148] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793015, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:00], updated_at: ~N[2026-08-21 12:20:00]}} [2026-08-21 12:20:00.150] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:19: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:20:00.275] [DEBUG] QUERY OK db=122.2ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:19: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77960, ~N[2026-08-21 12:20:00], ~N[2026-08-21 12:20:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:00.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793016, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:19:58Z", message: nil, status_log_id: 77960, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:00], updated_at: ~N[2026-08-21 12:20:00]}} [2026-08-21 12:20:29.191] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:20:29.191] [INFO ] Incoming JSON payload: {"oid":"37afa13d-49f4-43c1-9efc-f2441636a20e","sn":"98251226730001","uploadTime":"2026-08-21T12:20:28Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:20:28Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:20:28Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:20:28Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:20:28Z"},{"itemkey":"ram_free_mb","value":"914","timestamp":"2026-08-21T12:20:28Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:20:28Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:20:28Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:20:28Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:20:28Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:20:28Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:20:28Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:20:28Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:20:28Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:20:28Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:20: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:20:29.195] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "37afa13d-49f4-43c1-9efc-f2441636a20e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:20:28Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:20:28Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:20:28Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:20:28Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:20:28Z", "value" => "914"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:20:28Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:20:28Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:20:28Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:20:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:20:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:20:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:20:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:20:28Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:20:28Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:20:28Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:20: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:20:28Z", "vendor" => "morefun"} [2026-08-21 12:20:29.195] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:20:29.195] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:20:29.196] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:20:29.200] [DEBUG] QUERY OK source="parameter_templates" db=3.8ms idle=820.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-08-21 12:20:29.202] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=339.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-08-21 12:20:29.202] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:20:29.205] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=4.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:20:29.206] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:20:29.281] [DEBUG] QUERY OK source="tms_terminals" db=75.3ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:20:29], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:20:29.281] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:20:29.282] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=77.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:20:29.332] [DEBUG] QUERY OK source="tms_terminals" db=49.3ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:20:29], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:20:29.446] [DEBUG] QUERY OK db=112.8ms queue=0.9ms idle=50.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "37afa13d-49f4-43c1-9efc-f2441636a20e", "2026-08-21T12:20:28Z", ~N[2026-08-21 12:20:29], ~N[2026-08-21 12:20:29]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:20:29.446] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77961, oid: "37afa13d-49f4-43c1-9efc-f2441636a20e", upload_time: "2026-08-21T12:20:28Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:29], updated_at: ~N[2026-08-21 12:20:29]} [2026-08-21 12:20:29.447] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:20:28Z", "value" => "morefun"} [2026-08-21 12:20:29.524] [DEBUG] QUERY OK db=76.5ms idle=69.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:28Z", "morefun", "vendor", 77961, ~N[2026-08-21 12:20:29], ~N[2026-08-21 12:20:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:29.524] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793017, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:29], updated_at: ~N[2026-08-21 12:20:29]}} [2026-08-21 12:20:29.524] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:20:28Z", "value" => "kiosk_launcher"} [2026-08-21 12:20:29.601] [DEBUG] QUERY OK db=76.8ms idle=78.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:28Z", "kiosk_launcher", "model", 77961, ~N[2026-08-21 12:20:29], ~N[2026-08-21 12:20:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:29.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793018, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:29], updated_at: ~N[2026-08-21 12:20:29]}} [2026-08-21 12:20:29.602] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:20:28Z", "value" => "1.0"} [2026-08-21 12:20:29.649] [DEBUG] QUERY OK db=47.2ms idle=78.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:28Z", "1.0", "app_version", 77961, ~N[2026-08-21 12:20:29], ~N[2026-08-21 12:20:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:29.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793019, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:29], updated_at: ~N[2026-08-21 12:20:29]}} [2026-08-21 12:20:29.650] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:20:28Z", "value" => "13"} [2026-08-21 12:20:29.728] [DEBUG] QUERY OK db=77.2ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:28Z", "13", "android_version", 77961, ~N[2026-08-21 12:20:29], ~N[2026-08-21 12:20:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:29.728] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793020, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:29], updated_at: ~N[2026-08-21 12:20:29]}} [2026-08-21 12:20:29.728] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:20:28Z", "value" => "914"} [2026-08-21 12:20:29.791] [DEBUG] QUERY OK db=62.0ms idle=79.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:28Z", "914", "ram_free_mb", 77961, ~N[2026-08-21 12:20:29], ~N[2026-08-21 12:20:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:29.793] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793021, itemkey: "ram_free_mb", value: "914", timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:29], updated_at: ~N[2026-08-21 12:20:29]}} [2026-08-21 12:20:29.793] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:20:28Z", "value" => "WIFI"} [2026-08-21 12:20:29.861] [DEBUG] QUERY OK db=65.9ms queue=1.1ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:28Z", "WIFI", "network_type", 77961, ~N[2026-08-21 12:20:29], ~N[2026-08-21 12:20:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:29.862] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793022, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:29], updated_at: ~N[2026-08-21 12:20:29]}} [2026-08-21 12:20:29.863] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:20:28Z", "value" => "true"} [2026-08-21 12:20:29.955] [DEBUG] QUERY OK db=91.8ms idle=72.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:28Z", "true", "kiosk_active", 77961, ~N[2026-08-21 12:20:29], ~N[2026-08-21 12:20:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:29.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793023, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:29], updated_at: ~N[2026-08-21 12:20:29]}} [2026-08-21 12:20:29.956] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:20:28Z", "value" => ""} [2026-08-21 12:20:30.027] [DEBUG] QUERY OK db=70.9ms idle=95.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:20:28Z", "sim_operator", 77961, ~N[2026-08-21 12:20:29], ~N[2026-08-21 12:20:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:30.027] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793024, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:29], updated_at: ~N[2026-08-21 12:20:29]}} [2026-08-21 12:20:30.027] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:20:28Z", "value" => "UNKNOWN"} [2026-08-21 12:20:30.068] [DEBUG] QUERY OK db=40.0ms idle=72.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:28Z", "UNKNOWN", "sim_number", 77961, ~N[2026-08-21 12:20:30], ~N[2026-08-21 12:20:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:30.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793025, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:30], updated_at: ~N[2026-08-21 12:20:30]}} [2026-08-21 12:20:30.068] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:20:28Z", "value" => "UNKNOWN"} [2026-08-21 12:20:30.100] [DEBUG] QUERY OK db=31.2ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:28Z", "UNKNOWN", "sim_iccid", 77961, ~N[2026-08-21 12:20:30], ~N[2026-08-21 12:20:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:30.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793026, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:30], updated_at: ~N[2026-08-21 12:20:30]}} [2026-08-21 12:20:30.100] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:20:28Z", "value" => "UNKNOWN"} [2026-08-21 12:20:30.159] [DEBUG] QUERY OK db=58.4ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:28Z", "UNKNOWN", "sim_imsi", 77961, ~N[2026-08-21 12:20:30], ~N[2026-08-21 12:20:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:30.159] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793027, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:30], updated_at: ~N[2026-08-21 12:20:30]}} [2026-08-21 12:20:30.159] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:20:28Z", "value" => "UNKNOWN"} [2026-08-21 12:20:30.182] [DEBUG] QUERY OK db=22.1ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:28Z", "UNKNOWN", "sim_iccid2", 77961, ~N[2026-08-21 12:20:30], ~N[2026-08-21 12:20:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:30.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793028, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:30], updated_at: ~N[2026-08-21 12:20:30]}} [2026-08-21 12:20:30.182] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:20:28Z", "value" => "UNKNOWN"} [2026-08-21 12:20:30.244] [DEBUG] QUERY OK db=61.1ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:28Z", "UNKNOWN", "sim_imsi2", 77961, ~N[2026-08-21 12:20:30], ~N[2026-08-21 12:20:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:30.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793029, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:30], updated_at: ~N[2026-08-21 12:20:30]}} [2026-08-21 12:20:30.244] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:20:28Z", "value" => "36"} [2026-08-21 12:20:30.284] [DEBUG] QUERY OK db=39.6ms idle=62.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:28Z", "36", "data_usage_mb", 77961, ~N[2026-08-21 12:20:30], ~N[2026-08-21 12:20:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:30.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793030, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:30], updated_at: ~N[2026-08-21 12:20:30]}} [2026-08-21 12:20:30.285] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:20:28Z", "value" => "0"} [2026-08-21 12:20:30.363] [DEBUG] QUERY OK db=77.9ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:28Z", "0", "mobile_data_mb", 77961, ~N[2026-08-21 12:20:30], ~N[2026-08-21 12:20:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:30.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793031, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:30], updated_at: ~N[2026-08-21 12:20:30]}} [2026-08-21 12:20:30.364] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:20: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:20:30.421] [DEBUG] QUERY OK db=55.3ms idle=80.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77961, ~N[2026-08-21 12:20:30], ~N[2026-08-21 12:20:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:30.422] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793032, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:20:28Z", message: nil, status_log_id: 77961, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:30], updated_at: ~N[2026-08-21 12:20:30]}} [2026-08-21 12:20:59.306] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:20:59.306] [INFO ] Incoming JSON payload: {"oid":"1f99ea7c-8325-46c7-8c0e-38131e86932c","sn":"98251226730001","uploadTime":"2026-08-21T12:20:58Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:20:58Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:20:58Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:20:58Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:20:58Z"},{"itemkey":"ram_free_mb","value":"911","timestamp":"2026-08-21T12:20:58Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:20:58Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:20:58Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:20:58Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:20:58Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:20:58Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:20:58Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:20:58Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:20:58Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:20:58Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:20: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:20:59.310] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1f99ea7c-8325-46c7-8c0e-38131e86932c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:20:58Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:20:58Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:20:58Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:20:58Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:20:58Z", "value" => "911"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:20:58Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:20:58Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:20:58Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:20:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:20:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:20:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:20:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:20:58Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:20:58Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:20:58Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:20: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:20:58Z", "vendor" => "morefun"} [2026-08-21 12:20:59.311] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:20:59.311] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:20:59.311] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:20:59.313] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=824.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-08-21 12:20:59.314] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.2ms idle=447.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-08-21 12:20:59.314] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:20:59.317] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:20:59.317] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:20:59.357] [DEBUG] QUERY OK source="tms_terminals" db=40.0ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:20:59], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:20:59.357] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:20:59.362] [DEBUG] QUERY OK source="tms_terminals" db=4.3ms idle=40.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:20:59.406] [DEBUG] QUERY OK source="tms_terminals" db=42.8ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:20:59], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:20:59.452] [DEBUG] QUERY OK db=46.2ms idle=44.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "1f99ea7c-8325-46c7-8c0e-38131e86932c", "2026-08-21T12:20:58Z", ~N[2026-08-21 12:20:59], ~N[2026-08-21 12:20:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:20:59.452] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77962, oid: "1f99ea7c-8325-46c7-8c0e-38131e86932c", upload_time: "2026-08-21T12:20:58Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:59], updated_at: ~N[2026-08-21 12:20:59]} [2026-08-21 12:20:59.453] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:20:58Z", "value" => "morefun"} [2026-08-21 12:20:59.477] [DEBUG] QUERY OK db=24.3ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:58Z", "morefun", "vendor", 77962, ~N[2026-08-21 12:20:59], ~N[2026-08-21 12:20:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:59.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793033, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:59], updated_at: ~N[2026-08-21 12:20:59]}} [2026-08-21 12:20:59.480] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:20:58Z", "value" => "kiosk_launcher"} [2026-08-21 12:20:59.542] [DEBUG] QUERY OK db=60.1ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:58Z", "kiosk_launcher", "model", 77962, ~N[2026-08-21 12:20:59], ~N[2026-08-21 12:20:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:59.543] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793034, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:59], updated_at: ~N[2026-08-21 12:20:59]}} [2026-08-21 12:20:59.543] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:20:58Z", "value" => "1.0"} [2026-08-21 12:20:59.583] [DEBUG] QUERY OK db=39.4ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:58Z", "1.0", "app_version", 77962, ~N[2026-08-21 12:20:59], ~N[2026-08-21 12:20:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:59.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793035, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:59], updated_at: ~N[2026-08-21 12:20:59]}} [2026-08-21 12:20:59.583] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:20:58Z", "value" => "13"} [2026-08-21 12:20:59.744] [DEBUG] QUERY OK db=159.4ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:58Z", "13", "android_version", 77962, ~N[2026-08-21 12:20:59], ~N[2026-08-21 12:20:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:59.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793036, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:59], updated_at: ~N[2026-08-21 12:20:59]}} [2026-08-21 12:20:59.745] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:20:58Z", "value" => "911"} [2026-08-21 12:20:59.786] [DEBUG] QUERY OK db=41.0ms idle=162.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:58Z", "911", "ram_free_mb", 77962, ~N[2026-08-21 12:20:59], ~N[2026-08-21 12:20:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:59.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793037, itemkey: "ram_free_mb", value: "911", timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:59], updated_at: ~N[2026-08-21 12:20:59]}} [2026-08-21 12:20:59.787] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:20:58Z", "value" => "WIFI"} [2026-08-21 12:20:59.820] [DEBUG] QUERY OK db=32.8ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:58Z", "WIFI", "network_type", 77962, ~N[2026-08-21 12:20:59], ~N[2026-08-21 12:20:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:59.820] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793038, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:59], updated_at: ~N[2026-08-21 12:20:59]}} [2026-08-21 12:20:59.820] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:20:58Z", "value" => "true"} [2026-08-21 12:20:59.880] [DEBUG] QUERY OK db=54.6ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:58Z", "true", "kiosk_active", 77962, ~N[2026-08-21 12:20:59], ~N[2026-08-21 12:20:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:59.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793039, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:59], updated_at: ~N[2026-08-21 12:20:59]}} [2026-08-21 12:20:59.881] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:20:58Z", "value" => ""} [2026-08-21 12:20:59.917] [DEBUG] QUERY OK db=35.5ms idle=61.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:20:58Z", "sim_operator", 77962, ~N[2026-08-21 12:20:59], ~N[2026-08-21 12:20:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:20:59.917] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793040, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:59], updated_at: ~N[2026-08-21 12:20:59]}} [2026-08-21 12:20:59.917] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:20:58Z", "value" => "UNKNOWN"} [2026-08-21 12:21:00.050] [DEBUG] QUERY OK db=130.6ms queue=2.2ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:58Z", "UNKNOWN", "sim_number", 77962, ~N[2026-08-21 12:20:59], ~N[2026-08-21 12:20:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:21:00.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793041, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:20:59], updated_at: ~N[2026-08-21 12:20:59]}} [2026-08-21 12:21:00.050] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:20:58Z", "value" => "UNKNOWN"} [2026-08-21 12:21:00.191] [DEBUG] QUERY OK db=139.6ms idle=8.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:58Z", "UNKNOWN", "sim_iccid", 77962, ~N[2026-08-21 12:21:00], ~N[2026-08-21 12:21:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:21:00.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793042, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:21:00], updated_at: ~N[2026-08-21 12:21:00]}} [2026-08-21 12:21:00.192] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:20:58Z", "value" => "UNKNOWN"} [2026-08-21 12:21:00.235] [DEBUG] QUERY OK db=40.6ms queue=1.6ms idle=143.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:58Z", "UNKNOWN", "sim_imsi", 77962, ~N[2026-08-21 12:21:00], ~N[2026-08-21 12:21:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:21:00.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793043, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:21:00], updated_at: ~N[2026-08-21 12:21:00]}} [2026-08-21 12:21:00.237] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:20:58Z", "value" => "UNKNOWN"} [2026-08-21 12:21:00.286] [DEBUG] QUERY OK db=48.5ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:58Z", "UNKNOWN", "sim_iccid2", 77962, ~N[2026-08-21 12:21:00], ~N[2026-08-21 12:21:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:21:00.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793044, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:21:00], updated_at: ~N[2026-08-21 12:21:00]}} [2026-08-21 12:21:00.287] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:20:58Z", "value" => "UNKNOWN"} [2026-08-21 12:21:00.323] [DEBUG] QUERY OK db=35.1ms queue=0.4ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:58Z", "UNKNOWN", "sim_imsi2", 77962, ~N[2026-08-21 12:21:00], ~N[2026-08-21 12:21:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:21:00.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793045, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:21:00], updated_at: ~N[2026-08-21 12:21:00]}} [2026-08-21 12:21:00.324] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:20:58Z", "value" => "36"} [2026-08-21 12:21:00.357] [DEBUG] QUERY OK db=33.0ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:58Z", "36", "data_usage_mb", 77962, ~N[2026-08-21 12:21:00], ~N[2026-08-21 12:21:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:21:00.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793046, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:21:00], updated_at: ~N[2026-08-21 12:21:00]}} [2026-08-21 12:21:00.359] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:20:58Z", "value" => "0"} [2026-08-21 12:21:00.407] [DEBUG] QUERY OK db=47.2ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20:58Z", "0", "mobile_data_mb", 77962, ~N[2026-08-21 12:21:00], ~N[2026-08-21 12:21:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:21:00.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793047, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:21:00], updated_at: ~N[2026-08-21 12:21:00]}} [2026-08-21 12:21:00.407] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:20: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:21:00.454] [DEBUG] QUERY OK db=44.0ms idle=52.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:20: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77962, ~N[2026-08-21 12:21:00], ~N[2026-08-21 12:21:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:21:00.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793048, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:20:58Z", message: nil, status_log_id: 77962, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:21:00], updated_at: ~N[2026-08-21 12:21:00]}} [2026-08-21 12:21:30.620] [INFO ] [Ysp.Scheduler] Started. SFTP in 14h 38m, MIS in 19h 38m [2026-08-21 12:21:30.699] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 12:21:30.730] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 12:21:32.936] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 12:21:32.936] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 12:21:32.938] [INFO ] Building initial filter cache... [2026-08-21 12:21:32.965] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.5ms idle=930.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-08-21 12:21:32.984] [DEBUG] QUERY OK source="filter_usage" db=1.5ms queue=1.6ms idle=688.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-08-21 12:21:32.984] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 12:21:33.170] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 12:21:33.183] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-08-21 12:21:33.214] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-08-21 12:21:59.863] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:21:59.863] [INFO ] Incoming JSON payload: {"oid":"9af10b51-effb-42c5-a275-093ce09dbbfe","sn":"98251226730001","uploadTime":"2026-08-21T12:21:59Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:21:59Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:21:59Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:21:59Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:21:59Z"},{"itemkey":"ram_free_mb","value":"893","timestamp":"2026-08-21T12:21:59Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:21:59Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:21:59Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:21:59Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:21:59Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:21:59Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:21:59Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:21:59Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:21:59Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:21:59Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:21: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:21:59.870] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "9af10b51-effb-42c5-a275-093ce09dbbfe", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:21:59Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:21:59Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:21:59Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:21:59Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:21:59Z", "value" => "893"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:21:59Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:21:59Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:21:59Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:21:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:21:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:21:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:21:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:21:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:21:59Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:21:59Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:21: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:21:59Z", "vendor" => "morefun"} [2026-08-21 12:21:59.875] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:21:59.886] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:21:59.887] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:21:59.891] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.3ms idle=427.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-08-21 12:21:59.892] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.4ms idle=0.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 12:21:59.892] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:21:59.918] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.5ms idle=24.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:21:59.947] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:22:00.013] [DEBUG] QUERY OK source="tms_terminals" db=52.3ms queue=1.2ms idle=29.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:21:59], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:22:00.023] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:22:00.027] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=102.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:22:00.055] [DEBUG] QUERY OK source="tms_terminals" db=26.4ms queue=0.2ms idle=26.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:22:00], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:22:00.132] [DEBUG] QUERY OK db=41.3ms queue=2.9ms idle=61.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "9af10b51-effb-42c5-a275-093ce09dbbfe", "2026-08-21T12:21:59Z", ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:22:00.180] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77963, oid: "9af10b51-effb-42c5-a275-093ce09dbbfe", upload_time: "2026-08-21T12:21:59Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]} [2026-08-21 12:22:00.180] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:21:59Z", "value" => "morefun"} [2026-08-21 12:22:00.242] [DEBUG] QUERY OK db=59.0ms queue=1.8ms idle=126.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21:59Z", "morefun", "vendor", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793049, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.242] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:21:59Z", "value" => "kiosk_launcher"} [2026-08-21 12:22:00.286] [DEBUG] QUERY OK db=40.8ms queue=3.2ms idle=113.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21:59Z", "kiosk_launcher", "model", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793050, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.290] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:21:59Z", "value" => "1.0"} [2026-08-21 12:22:00.343] [DEBUG] QUERY OK db=52.5ms idle=2.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21:59Z", "1.0", "app_version", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.343] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793051, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.344] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:21:59Z", "value" => "13"} [2026-08-21 12:22:00.418] [DEBUG] QUERY OK db=74.0ms idle=22.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21:59Z", "13", "android_version", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793052, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.420] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:21:59Z", "value" => "893"} [2026-08-21 12:22:00.471] [DEBUG] QUERY OK db=49.0ms idle=78.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21:59Z", "893", "ram_free_mb", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793053, itemkey: "ram_free_mb", value: "893", timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.471] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:21:59Z", "value" => "WIFI"} [2026-08-21 12:22:00.508] [DEBUG] QUERY OK db=36.0ms idle=4.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21:59Z", "WIFI", "network_type", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.508] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793054, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.508] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:21:59Z", "value" => "true"} [2026-08-21 12:22:00.543] [DEBUG] QUERY OK db=34.0ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21:59Z", "true", "kiosk_active", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.543] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793055, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.543] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:21:59Z", "value" => ""} [2026-08-21 12:22:00.577] [DEBUG] QUERY OK db=33.3ms queue=0.4ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:21:59Z", "sim_operator", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.577] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793056, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.578] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:21:59Z", "value" => "UNKNOWN"} [2026-08-21 12:22:00.615] [DEBUG] QUERY OK db=36.8ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21:59Z", "UNKNOWN", "sim_number", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.615] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793057, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.615] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:21:59Z", "value" => "UNKNOWN"} [2026-08-21 12:22:00.680] [DEBUG] QUERY OK db=64.8ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21:59Z", "UNKNOWN", "sim_iccid", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793058, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.681] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:21:59Z", "value" => "UNKNOWN"} [2026-08-21 12:22:00.719] [DEBUG] QUERY OK db=37.9ms idle=66.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21:59Z", "UNKNOWN", "sim_imsi", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793059, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.720] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:21:59Z", "value" => "UNKNOWN"} [2026-08-21 12:22:00.743] [DEBUG] QUERY OK db=22.8ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21:59Z", "UNKNOWN", "sim_iccid2", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793060, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.744] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:21:59Z", "value" => "UNKNOWN"} [2026-08-21 12:22:00.777] [DEBUG] QUERY OK db=33.3ms queue=0.1ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21:59Z", "UNKNOWN", "sim_imsi2", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.778] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793061, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.779] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:21:59Z", "value" => "36"} [2026-08-21 12:22:00.824] [DEBUG] QUERY OK db=44.5ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21:59Z", "36", "data_usage_mb", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.824] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793062, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.824] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:21:59Z", "value" => "0"} [2026-08-21 12:22:00.880] [DEBUG] QUERY OK db=55.0ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21:59Z", "0", "mobile_data_mb", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793063, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:00.883] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:21: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:22:00.927] [DEBUG] QUERY OK db=39.5ms idle=61.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:21: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77963, ~N[2026-08-21 12:22:00], ~N[2026-08-21 12:22:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:00.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793064, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:21:59Z", message: nil, status_log_id: 77963, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:00], updated_at: ~N[2026-08-21 12:22:00]}} [2026-08-21 12:22:29.961] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:22:29.961] [INFO ] Incoming JSON payload: {"oid":"c81dd130-350f-48a5-8087-5d09da08db56","sn":"98251226730001","uploadTime":"2026-08-21T12:22:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:22:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:22:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:22:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:22:29Z"},{"itemkey":"ram_free_mb","value":"900","timestamp":"2026-08-21T12:22:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:22:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:22:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:22:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:22:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:22:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:22:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:22:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:22:29Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:22:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:22:29.964] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c81dd130-350f-48a5-8087-5d09da08db56", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:22:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:22:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:22:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:22:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:22:29Z", "value" => "900"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:22:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:22:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:22:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:22:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:22:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:22:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:22:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:22:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:22:29Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:22:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:22:29Z", "vendor" => "morefun"} [2026-08-21 12:22:29.965] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:22:29.965] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:22:29.965] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:22:29.967] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=1344.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-08-21 12:22:29.968] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=342.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-08-21 12:22:29.968] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:22:29.970] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:22:29.972] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:22:30.056] [DEBUG] QUERY OK source="tms_terminals" db=81.9ms queue=0.8ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:22:29], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:22:30.057] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:22:30.059] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=87.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:22:30.094] [DEBUG] QUERY OK source="tms_terminals" db=34.2ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:22:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:22:30.152] [DEBUG] QUERY OK db=56.9ms idle=35.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c81dd130-350f-48a5-8087-5d09da08db56", "2026-08-21T12:22:29Z", ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:22:30.152] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77964, oid: "c81dd130-350f-48a5-8087-5d09da08db56", upload_time: "2026-08-21T12:22:29Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]} [2026-08-21 12:22:30.153] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:22:29Z", "value" => "morefun"} [2026-08-21 12:22:30.230] [DEBUG] QUERY OK db=77.2ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:29Z", "morefun", "vendor", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.230] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793065, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.231] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:22:29Z", "value" => "kiosk_launcher"} [2026-08-21 12:22:30.272] [DEBUG] QUERY OK db=41.1ms idle=78.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:29Z", "kiosk_launcher", "model", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793066, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.274] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:22:29Z", "value" => "1.0"} [2026-08-21 12:22:30.318] [DEBUG] QUERY OK db=44.3ms idle=43.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:29Z", "1.0", "app_version", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.318] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793067, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.319] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:22:29Z", "value" => "13"} [2026-08-21 12:22:30.387] [DEBUG] QUERY OK db=67.2ms queue=0.7ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:29Z", "13", "android_version", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793068, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.387] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:22:29Z", "value" => "900"} [2026-08-21 12:22:30.463] [DEBUG] QUERY OK db=70.4ms idle=20.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:29Z", "900", "ram_free_mb", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793069, itemkey: "ram_free_mb", value: "900", timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.463] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:22:29Z", "value" => "WIFI"} [2026-08-21 12:22:30.516] [DEBUG] QUERY OK db=52.1ms queue=0.1ms idle=76.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:29Z", "WIFI", "network_type", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793070, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.516] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:22:29Z", "value" => "true"} [2026-08-21 12:22:30.568] [DEBUG] QUERY OK db=50.0ms queue=1.5ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:29Z", "true", "kiosk_active", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793071, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.569] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:22:29Z", "value" => ""} [2026-08-21 12:22:30.621] [DEBUG] QUERY OK db=50.4ms queue=1.3ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:22:29Z", "sim_operator", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793072, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.621] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:22:29Z", "value" => "UNKNOWN"} [2026-08-21 12:22:30.663] [DEBUG] QUERY OK db=41.8ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:29Z", "UNKNOWN", "sim_number", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.663] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793073, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.665] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:22:29Z", "value" => "UNKNOWN"} [2026-08-21 12:22:30.743] [DEBUG] QUERY OK db=76.7ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:29Z", "UNKNOWN", "sim_iccid", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793074, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.743] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:22:29Z", "value" => "UNKNOWN"} [2026-08-21 12:22:30.786] [DEBUG] QUERY OK db=42.6ms idle=80.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:29Z", "UNKNOWN", "sim_imsi", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793075, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.787] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:22:29Z", "value" => "UNKNOWN"} [2026-08-21 12:22:30.853] [DEBUG] QUERY OK db=66.2ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:29Z", "UNKNOWN", "sim_iccid2", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793076, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.854] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:22:29Z", "value" => "UNKNOWN"} [2026-08-21 12:22:30.906] [DEBUG] QUERY OK db=51.6ms idle=67.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:29Z", "UNKNOWN", "sim_imsi2", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793077, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.906] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:22:29Z", "value" => "36"} [2026-08-21 12:22:30.938] [DEBUG] QUERY OK db=29.6ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:29Z", "36", "data_usage_mb", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793078, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.939] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:22:29Z", "value" => "0"} [2026-08-21 12:22:30.979] [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-08-21T12:22:29Z", "0", "mobile_data_mb", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:30.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793079, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:30.980] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:22:31.028] [DEBUG] QUERY OK db=44.3ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77964, ~N[2026-08-21 12:22:30], ~N[2026-08-21 12:22:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:31.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793080, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:22:29Z", message: nil, status_log_id: 77964, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:30], updated_at: ~N[2026-08-21 12:22:30]}} [2026-08-21 12:22:55.647] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 12:22:55.647] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T16:22:53Z","org.device":[{"itemkey":"battery","value":48,"timestamp":"2026-08-21T16:22:53Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T16:22:53Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T16:22:53Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T16:22:53Z","message":""}]} [2026-08-21 12:22:55.647] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T16:22:53Z", "value" => 48}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T16:22:53Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T16:22:53Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T16:22:53Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T16:22:53Z"} [2026-08-21 12:22:55.647] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:22:55.649] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=925.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:22:55.650] [INFO ] Terminal updated: 61250415798001 [2026-08-21 12:22:55.676] [DEBUG] QUERY OK source="tms_terminals" db=24.7ms idle=614.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:22:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:22:55.679] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=0.3ms 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` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:22:55.729] [DEBUG] QUERY OK source="tms_terminals" db=50.1ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:22:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:22:55.781] [DEBUG] QUERY OK db=48.5ms queue=2.4ms idle=0.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T16:22:53Z", ~N[2026-08-21 12:22:55], ~N[2026-08-21 12:22:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:22:55.781] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77965, oid: "org-id-placeholder", upload_time: "2026-08-21T16:22:53Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:55], updated_at: ~N[2026-08-21 12:22:55]} [2026-08-21 12:22:55.781] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T16:22:53Z", "value" => 48} [2026-08-21 12:22:55.834] [DEBUG] QUERY OK db=52.1ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:22:53Z", "48", "battery", 77965, ~N[2026-08-21 12:22:55], ~N[2026-08-21 12:22:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:55.834] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793081, itemkey: "battery", value: "48", timestamp: "2026-08-21T16:22:53Z", message: nil, status_log_id: 77965, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:55], updated_at: ~N[2026-08-21 12:22:55]}} [2026-08-21 12:22:55.834] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T16:22:53Z", "value" => 50} [2026-08-21 12:22:55.878] [DEBUG] QUERY OK db=41.7ms queue=1.4ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T16:22:53Z", "50", "memory", 77965, ~N[2026-08-21 12:22:55], ~N[2026-08-21 12:22:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:55.878] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793082, itemkey: "memory", value: "50", timestamp: "2026-08-21T16:22:53Z", message: "Normal", status_log_id: 77965, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:55], updated_at: ~N[2026-08-21 12:22:55]}} [2026-08-21 12:22:55.878] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T16:22:53Z", "value" => 50} [2026-08-21 12:22:55.930] [DEBUG] QUERY OK db=50.8ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:22:53Z", "50", "cpu", 77965, ~N[2026-08-21 12:22:55], ~N[2026-08-21 12:22:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:55.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793083, itemkey: "cpu", value: "50", timestamp: "2026-08-21T16:22:53Z", message: nil, status_log_id: 77965, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:55], updated_at: ~N[2026-08-21 12:22:55]}} [2026-08-21 12:22:55.930] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T16:22:53Z", "value" => "online"} [2026-08-21 12:22:55.963] [DEBUG] QUERY OK db=32.9ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:22:53Z", "online", "network", 77965, ~N[2026-08-21 12:22:55], ~N[2026-08-21 12:22:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:22:55.964] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793084, itemkey: "network", value: "online", timestamp: "2026-08-21T16:22:53Z", message: nil, status_log_id: 77965, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:22:55], updated_at: ~N[2026-08-21 12:22:55]}} [2026-08-21 12:22:55.964] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 12:23:00.094] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:23:00.094] [INFO ] Incoming JSON payload: {"oid":"f945b1ae-1f1a-444f-9972-26ee74902bea","sn":"98251226730001","uploadTime":"2026-08-21T12:22:59Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:22:59Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:22:59Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:22:59Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:22:59Z"},{"itemkey":"ram_free_mb","value":"897","timestamp":"2026-08-21T12:22:59Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:22:59Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:22:59Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:22:59Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:22:59Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:22:59Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:22:59Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:22:59Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:22:59Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:22:59Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:23:00.096] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f945b1ae-1f1a-444f-9972-26ee74902bea", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:22:59Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:22:59Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:22:59Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:22:59Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:22:59Z", "value" => "897"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:22:59Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:22:59Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:22:59Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:22:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:22:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:22:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:22:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:22:59Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:22:59Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:22:59Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:22:59Z", "vendor" => "morefun"} [2026-08-21 12:23:00.096] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:23:00.096] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:23:00.096] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:23:00.097] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1060.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-08-21 12:23:00.098] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=350.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-08-21 12:23:00.098] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:23:00.100] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.3ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:23:00.100] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:23:00.137] [DEBUG] QUERY OK source="tms_terminals" db=36.4ms queue=0.4ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:23:00], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:23:00.137] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:23:00.139] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:23:00.187] [DEBUG] QUERY OK source="tms_terminals" db=47.2ms queue=0.1ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:23:00], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:23:00.249] [DEBUG] QUERY OK db=61.3ms queue=0.1ms idle=48.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "f945b1ae-1f1a-444f-9972-26ee74902bea", "2026-08-21T12:22:59Z", ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:23:00.249] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77966, oid: "f945b1ae-1f1a-444f-9972-26ee74902bea", upload_time: "2026-08-21T12:22:59Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]} [2026-08-21 12:23:00.249] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:22:59Z", "value" => "morefun"} [2026-08-21 12:23:00.298] [DEBUG] QUERY OK db=48.5ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:59Z", "morefun", "vendor", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793085, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.306] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:22:59Z", "value" => "kiosk_launcher"} [2026-08-21 12:23:00.370] [DEBUG] QUERY OK db=59.1ms queue=0.4ms idle=17.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:59Z", "kiosk_launcher", "model", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.370] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793086, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.370] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:22:59Z", "value" => "1.0"} [2026-08-21 12:23:00.396] [DEBUG] QUERY OK db=25.0ms idle=72.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:59Z", "1.0", "app_version", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.396] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793087, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.396] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:22:59Z", "value" => "13"} [2026-08-21 12:23:00.447] [DEBUG] QUERY OK db=50.6ms idle=0.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:59Z", "13", "android_version", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793088, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.447] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:22:59Z", "value" => "897"} [2026-08-21 12:23:00.477] [DEBUG] QUERY OK db=28.7ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:59Z", "897", "ram_free_mb", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.477] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793089, itemkey: "ram_free_mb", value: "897", timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.477] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:22:59Z", "value" => "WIFI"} [2026-08-21 12:23:00.541] [DEBUG] QUERY OK db=63.9ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:59Z", "WIFI", "network_type", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793090, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.542] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:22:59Z", "value" => "true"} [2026-08-21 12:23:00.593] [DEBUG] QUERY OK db=50.8ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:59Z", "true", "kiosk_active", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.594] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793091, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.594] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:22:59Z", "value" => ""} [2026-08-21 12:23:00.626] [DEBUG] QUERY OK db=30.7ms queue=0.1ms idle=53.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:22:59Z", "sim_operator", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793092, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.626] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:22:59Z", "value" => "UNKNOWN"} [2026-08-21 12:23:00.650] [DEBUG] QUERY OK db=23.2ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:59Z", "UNKNOWN", "sim_number", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.651] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793093, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.651] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:22:59Z", "value" => "UNKNOWN"} [2026-08-21 12:23:00.712] [DEBUG] QUERY OK db=60.4ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:59Z", "UNKNOWN", "sim_iccid", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793094, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.712] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:22:59Z", "value" => "UNKNOWN"} [2026-08-21 12:23:00.770] [DEBUG] QUERY OK db=57.0ms idle=63.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:59Z", "UNKNOWN", "sim_imsi", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793095, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.770] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:22:59Z", "value" => "UNKNOWN"} [2026-08-21 12:23:00.790] [DEBUG] QUERY OK db=19.5ms idle=19.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:59Z", "UNKNOWN", "sim_iccid2", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.790] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793096, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.790] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:22:59Z", "value" => "UNKNOWN"} [2026-08-21 12:23:00.818] [DEBUG] QUERY OK db=27.3ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:59Z", "UNKNOWN", "sim_imsi2", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793097, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.819] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:22:59Z", "value" => "36"} [2026-08-21 12:23:00.866] [DEBUG] QUERY OK db=47.1ms idle=28.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:59Z", "36", "data_usage_mb", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793098, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.867] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:22:59Z", "value" => "0"} [2026-08-21 12:23:00.896] [DEBUG] QUERY OK db=29.4ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22:59Z", "0", "mobile_data_mb", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793099, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:00.898] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:23:00.939] [DEBUG] QUERY OK db=39.7ms idle=31.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:22: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77966, ~N[2026-08-21 12:23:00], ~N[2026-08-21 12:23:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:00.941] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793100, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:22:59Z", message: nil, status_log_id: 77966, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:00], updated_at: ~N[2026-08-21 12:23:00]}} [2026-08-21 12:23:30.429] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:23:30.429] [INFO ] Incoming JSON payload: {"oid":"ac919ffd-6c6f-4542-a9cb-b293a40f7bbd","sn":"98251226730001","uploadTime":"2026-08-21T12:23:29Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:23:29Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:23:29Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:23:29Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:23:29Z"},{"itemkey":"ram_free_mb","value":"896","timestamp":"2026-08-21T12:23:29Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:23:29Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:23:29Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:23:29Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:23:29Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:23:29Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:23:29Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:23:29Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:23:29Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:23:29Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:23: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:23:30.435] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ac919ffd-6c6f-4542-a9cb-b293a40f7bbd", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:23:29Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:23:29Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:23:29Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:23:29Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:23:29Z", "value" => "896"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:23:29Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:23:29Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:23:29Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:23:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:23:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:23:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:23:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:23:29Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:23:29Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:23:29Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:23: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:23:29Z", "vendor" => "morefun"} [2026-08-21 12:23:30.440] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:23:30.441] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:23:30.441] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:23:30.444] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=396.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-08-21 12:23:30.445] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=0.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 12:23:30.445] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:23:30.452] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms queue=0.2ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:23:30.453] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:23:30.511] [DEBUG] QUERY OK source="tms_terminals" db=57.9ms idle=0.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:23:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:23:30.511] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:23:30.513] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=44.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:23:30.550] [DEBUG] QUERY OK source="tms_terminals" db=36.3ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:23:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:23:30.597] [DEBUG] QUERY OK db=45.7ms idle=37.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ac919ffd-6c6f-4542-a9cb-b293a40f7bbd", "2026-08-21T12:23:29Z", ~N[2026-08-21 12:23:30], ~N[2026-08-21 12:23:30]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:23:30.597] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77967, oid: "ac919ffd-6c6f-4542-a9cb-b293a40f7bbd", upload_time: "2026-08-21T12:23:29Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:30], updated_at: ~N[2026-08-21 12:23:30]} [2026-08-21 12:23:30.597] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:23:29Z", "value" => "morefun"} [2026-08-21 12:23:30.626] [DEBUG] QUERY OK db=28.3ms queue=0.1ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23:29Z", "morefun", "vendor", 77967, ~N[2026-08-21 12:23:30], ~N[2026-08-21 12:23:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:30.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793101, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:30], updated_at: ~N[2026-08-21 12:23:30]}} [2026-08-21 12:23:30.627] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:23:29Z", "value" => "kiosk_launcher"} [2026-08-21 12:23:30.679] [DEBUG] QUERY OK db=51.5ms idle=30.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23:29Z", "kiosk_launcher", "model", 77967, ~N[2026-08-21 12:23:30], ~N[2026-08-21 12:23:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:30.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793102, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:30], updated_at: ~N[2026-08-21 12:23:30]}} [2026-08-21 12:23:30.679] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:23:29Z", "value" => "1.0"} [2026-08-21 12:23:30.763] [DEBUG] QUERY OK db=83.7ms idle=53.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23:29Z", "1.0", "app_version", 77967, ~N[2026-08-21 12:23:30], ~N[2026-08-21 12:23:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:30.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793103, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:30], updated_at: ~N[2026-08-21 12:23:30]}} [2026-08-21 12:23:30.763] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:23:29Z", "value" => "13"} [2026-08-21 12:23:30.787] [DEBUG] QUERY OK db=23.4ms idle=85.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23:29Z", "13", "android_version", 77967, ~N[2026-08-21 12:23:30], ~N[2026-08-21 12:23:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:30.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793104, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:30], updated_at: ~N[2026-08-21 12:23:30]}} [2026-08-21 12:23:30.787] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:23:29Z", "value" => "896"} [2026-08-21 12:23:30.811] [DEBUG] QUERY OK db=22.9ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23:29Z", "896", "ram_free_mb", 77967, ~N[2026-08-21 12:23:30], ~N[2026-08-21 12:23:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:30.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793105, itemkey: "ram_free_mb", value: "896", timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:30], updated_at: ~N[2026-08-21 12:23:30]}} [2026-08-21 12:23:30.811] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:23:29Z", "value" => "WIFI"} [2026-08-21 12:23:30.867] [DEBUG] QUERY OK db=54.0ms queue=0.3ms idle=25.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23:29Z", "WIFI", "network_type", 77967, ~N[2026-08-21 12:23:30], ~N[2026-08-21 12:23:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:30.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793106, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:30], updated_at: ~N[2026-08-21 12:23:30]}} [2026-08-21 12:23:30.867] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:23:29Z", "value" => "true"} [2026-08-21 12:23:30.901] [DEBUG] QUERY OK db=33.4ms idle=9.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23:29Z", "true", "kiosk_active", 77967, ~N[2026-08-21 12:23:30], ~N[2026-08-21 12:23:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:30.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793107, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:30], updated_at: ~N[2026-08-21 12:23:30]}} [2026-08-21 12:23:30.901] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:23:29Z", "value" => ""} [2026-08-21 12:23:30.935] [DEBUG] QUERY OK db=33.1ms queue=1.0ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:23:29Z", "sim_operator", 77967, ~N[2026-08-21 12:23:30], ~N[2026-08-21 12:23:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:30.936] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793108, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:30], updated_at: ~N[2026-08-21 12:23:30]}} [2026-08-21 12:23:30.936] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:23:29Z", "value" => "UNKNOWN"} [2026-08-21 12:23:30.988] [DEBUG] QUERY OK db=50.6ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23:29Z", "UNKNOWN", "sim_number", 77967, ~N[2026-08-21 12:23:30], ~N[2026-08-21 12:23:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:30.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793109, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:30], updated_at: ~N[2026-08-21 12:23:30]}} [2026-08-21 12:23:30.990] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:23:29Z", "value" => "UNKNOWN"} [2026-08-21 12:23:31.022] [DEBUG] QUERY OK db=31.6ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23:29Z", "UNKNOWN", "sim_iccid", 77967, ~N[2026-08-21 12:23:30], ~N[2026-08-21 12:23:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:31.022] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793110, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:30], updated_at: ~N[2026-08-21 12:23:30]}} [2026-08-21 12:23:31.022] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:23:29Z", "value" => "UNKNOWN"} [2026-08-21 12:23:31.047] [DEBUG] QUERY OK db=24.2ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23:29Z", "UNKNOWN", "sim_imsi", 77967, ~N[2026-08-21 12:23:31], ~N[2026-08-21 12:23:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:31.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793111, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:31], updated_at: ~N[2026-08-21 12:23:31]}} [2026-08-21 12:23:31.047] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:23:29Z", "value" => "UNKNOWN"} [2026-08-21 12:23:31.097] [DEBUG] QUERY OK db=49.2ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23:29Z", "UNKNOWN", "sim_iccid2", 77967, ~N[2026-08-21 12:23:31], ~N[2026-08-21 12:23:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:31.097] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793112, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:31], updated_at: ~N[2026-08-21 12:23:31]}} [2026-08-21 12:23:31.098] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:23:29Z", "value" => "UNKNOWN"} [2026-08-21 12:23:31.131] [DEBUG] QUERY OK db=32.9ms idle=51.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23:29Z", "UNKNOWN", "sim_imsi2", 77967, ~N[2026-08-21 12:23:31], ~N[2026-08-21 12:23:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:31.133] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793113, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:31], updated_at: ~N[2026-08-21 12:23:31]}} [2026-08-21 12:23:31.133] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:23:29Z", "value" => "36"} [2026-08-21 12:23:31.168] [DEBUG] QUERY OK db=34.5ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23:29Z", "36", "data_usage_mb", 77967, ~N[2026-08-21 12:23:31], ~N[2026-08-21 12:23:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:31.168] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793114, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:31], updated_at: ~N[2026-08-21 12:23:31]}} [2026-08-21 12:23:31.169] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:23:29Z", "value" => "0"} [2026-08-21 12:23:31.255] [DEBUG] QUERY OK db=86.1ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23:29Z", "0", "mobile_data_mb", 77967, ~N[2026-08-21 12:23:31], ~N[2026-08-21 12:23:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:31.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793115, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:31], updated_at: ~N[2026-08-21 12:23:31]}} [2026-08-21 12:23:31.260] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:23: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:23:31.301] [DEBUG] QUERY OK db=40.5ms idle=92.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:23: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77967, ~N[2026-08-21 12:23:31], ~N[2026-08-21 12:23:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:23:31.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793116, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:23:29Z", message: nil, status_log_id: 77967, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:23:31], updated_at: ~N[2026-08-21 12:23:31]}} [2026-08-21 12:28:33.559] [INFO ] [Ysp.Scheduler] Started. SFTP in 14h 31m, MIS in 19h 31m [2026-08-21 12:28:33.595] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 12:28:33.605] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 12:28:35.471] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 12:28:35.473] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 12:28:35.475] [INFO ] Building initial filter cache... [2026-08-21 12:28:35.491] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.9ms idle=417.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-08-21 12:28:35.507] [DEBUG] QUERY OK source="filter_usage" db=2.1ms queue=1.7ms idle=279.7ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 12:28:35.507] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 12:28:35.623] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 12:28:35.680] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-08-21 12:28:35.696] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-08-21 12:28:44.425] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 12:28:44.425] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T03:38:09Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T03:38:09Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T03:38:09Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T03:38:09Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T03:38:09Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T03:38:09Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T03:38:09Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T03:38:09Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T03:38:09Z","vendor":"MoreFun"} [2026-08-21 12:28:44.434] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:38:09Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:38:09Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:38:09Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:38:09Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:38:09Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:38:09Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:38:09Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:38:09Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T03:38:09Z", "vendor" => "MoreFun"} [2026-08-21 12:28:44.434] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:28:44.451] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 12:28:44.453] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 12:28:44.460] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=1.3ms idle=1147.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-08-21 12:28:44.463] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=1.9ms idle=145.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 12:28:44.475] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms queue=0.7ms idle=8.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-08-21 12:28:44.506] [DEBUG] QUERY OK source="parameter_definitions" db=1.7ms queue=1.8ms idle=40.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-08-21 12:28:44.521] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms queue=0.9ms idle=49.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:28:44.550] [DEBUG] QUERY OK source="pos_merchant" db=0.3ms queue=22.1ms idle=20.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:28:44.557] [DEBUG] QUERY OK db=0.5ms queue=0.6ms idle=1487.9ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["123451234512345"] [2026-08-21 12:28:44.557] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:28:44.562] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms queue=0.4ms idle=41.3ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:28:44.562] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 12:28:44.569] [DEBUG] QUERY OK source="address" db=0.4ms queue=0.9ms idle=18.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` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:28:44.569] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 12:28:44.585] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 12:28:44.699] [DEBUG] QUERY OK db=43.4ms queue=0.7ms idle=72.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "fcaead8044c0e06deaec0bc0c354d9c9c9756b91fb6e7b0b05b95723c04225b5", 4994, 932, ~U[2026-08-21 12:28:44Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:28:44], ~N[2026-08-21 12:28:44]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:28:44.700] [INFO ] AutoPushService: Created push log 49068 for MF919 params.zip [2026-08-21 12:28:44.708] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 4994, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:28:44.712] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:28:44.721] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 12:28:44.737] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms queue=0.6ms idle=165.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-08-21 12:28:44.748] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 12:28:44.792] [DEBUG] QUERY OK db=43.0ms queue=0.5ms idle=70.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "81ce204ff2424c1e090b6d045f006609c0eb5c0266b3bfeac33951baf974a5fc", 5186, 17947, ~U[2026-08-21 12:28:44Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:28:44], ~N[2026-08-21 12:28:44]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:28:44.793] [INFO ] AutoPushService: Created push log 49069 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:28:44.793] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 5186, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:28:44.793] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:28:44.793] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 12:28:44.797] [DEBUG] QUERY OK source="config_file_versions" db=3.2ms idle=56.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-08-21 12:28:44.807] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 12:28:44.812] [DEBUG] QUERY OK source="tms_terminals" db=4.1ms queue=0.1ms idle=15.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:28:44.812] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 12:28:44.892] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:28:44.892] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:28:44.893] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:28:44.895] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=96.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-08-21 12:28:44.895] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:28:44.896] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 12:28:44.916] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=103.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-08-21 12:28:44.922] [INFO ] Terminal updated: 98250623730001 [2026-08-21 12:28:45.065] [DEBUG] QUERY OK source="tms_terminals" db=141.0ms queue=0.7ms idle=28.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:28:44], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:28:45.074] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.9ms idle=155.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-08-21 12:28:45.075] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=9.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-08-21 12:28:45.078] [DEBUG] QUERY OK source="config_file_versions" db=2.0ms queue=0.3ms idle=2.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:28:45.080] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:28:45.141] [DEBUG] QUERY OK source="parameter_push_logs" db=27.6ms queue=0.9ms idle=37.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 [19, "application", ~N[2026-08-21 11:58:45]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:28:45.141] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:28:45.143] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 12:28:45.145] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=65.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:28:45.148] [DEBUG] QUERY OK source="config_file_versions" db=2.9ms 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-08-21 12:28:45.148] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:28:45.150] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:28:45.184] [DEBUG] QUERY OK source="tms_terminals" db=31.8ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:28:45], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:28:45.235] [DEBUG] QUERY OK db=35.3ms queue=0.7ms idle=48.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T03:38:09Z", ~N[2026-08-21 12:28:45], ~N[2026-08-21 12:28:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:28:45.244] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77978, oid: "organization_id", upload_time: "2026-08-21T03:38:09Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:28:45], updated_at: ~N[2026-08-21 12:28:45]} [2026-08-21 12:28:45.244] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:38:09Z", "value" => "online"} [2026-08-21 12:28:45.301] [DEBUG] QUERY OK db=54.6ms queue=0.7ms idle=60.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T03:38:09Z", "online", "status", 77978, ~N[2026-08-21 12:28:45], ~N[2026-08-21 12:28:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:28:45.301] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793247, itemkey: "status", value: "online", timestamp: "2026-08-21T03:38:09Z", message: "Terminal status update", status_log_id: 77978, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:28:45], updated_at: ~N[2026-08-21 12:28:45]}} [2026-08-21 12:28:45.301] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 12:28:45.304] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:38:09Z", "value" => "51"} [2026-08-21 12:28:45.354] [DEBUG] QUERY OK db=48.5ms queue=0.4ms idle=69.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T03:38:09Z", "51", "battery", 77978, ~N[2026-08-21 12:28:45], ~N[2026-08-21 12:28:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:28:45.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793249, itemkey: "battery", value: "51", timestamp: "2026-08-21T03:38:09Z", message: "Battery level", status_log_id: 77978, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:28:45], updated_at: ~N[2026-08-21 12:28:45]}} [2026-08-21 12:28:45.355] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:38:09Z", "value" => "online"} [2026-08-21 12:28:45.413] [DEBUG] QUERY OK db=57.7ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T03:38:09Z", "online", "network", 77978, ~N[2026-08-21 12:28:45], ~N[2026-08-21 12:28:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:28:45.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793251, itemkey: "network", value: "online", timestamp: "2026-08-21T03:38:09Z", message: "Network connectivity", status_log_id: 77978, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:28:45], updated_at: ~N[2026-08-21 12:28:45]}} [2026-08-21 12:28:45.413] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 12:28:45.414] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:38:09Z", "value" => "0"} [2026-08-21 12:28:45.475] [DEBUG] QUERY OK db=49.5ms queue=0.1ms idle=72.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T03:38:09Z", "0", "cpu", 77978, ~N[2026-08-21 12:28:45], ~N[2026-08-21 12:28:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:28:45.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793252, itemkey: "cpu", value: "0", timestamp: "2026-08-21T03:38:09Z", message: "CPU usage percentage", status_log_id: 77978, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:28:45], updated_at: ~N[2026-08-21 12:28:45]}} [2026-08-21 12:28:45.476] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:38:09Z", "value" => "1.0.0"} [2026-08-21 12:28:45.520] [DEBUG] QUERY OK db=44.1ms idle=62.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T03:38:09Z", "1.0.0", "parameter_config", 77978, ~N[2026-08-21 12:28:45], ~N[2026-08-21 12:28:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:28:45.520] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793253, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T03:38:09Z", message: "Current parameters version", status_log_id: 77978, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:28:45], updated_at: ~N[2026-08-21 12:28:45]}} [2026-08-21 12:28:45.520] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:38:09Z", "value" => "1.0.1"} [2026-08-21 12:28:45.540] [DEBUG] QUERY OK db=17.7ms queue=1.3ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T03:38:09Z", "1.0.1", "emv_config", 77978, ~N[2026-08-21 12:28:45], ~N[2026-08-21 12:28:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:28:45.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793254, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T03:38:09Z", message: "Current EMV config version", status_log_id: 77978, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:28:45], updated_at: ~N[2026-08-21 12:28:45]}} [2026-08-21 12:28:45.541] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:38:09Z", "value" => ""} [2026-08-21 12:28:45.566] [DEBUG] QUERY OK db=23.3ms queue=1.2ms idle=20.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T03:38:09Z", "keys_config", 77978, ~N[2026-08-21 12:28:45], ~N[2026-08-21 12:28:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:28:45.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793255, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T03:38:09Z", message: "Current keys config version", status_log_id: 77978, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:28:45], updated_at: ~N[2026-08-21 12:28:45]}} [2026-08-21 12:28:45.566] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:38:09Z", "value" => "3.8.7.3"} [2026-08-21 12:28:45.612] [DEBUG] QUERY OK db=45.4ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T03:38:09Z", "3.8.7.3", "application", 77978, ~N[2026-08-21 12:28:45], ~N[2026-08-21 12:28:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:28:45.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793256, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T03:38:09Z", message: "Current application version", status_log_id: 77978, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:28:45], updated_at: ~N[2026-08-21 12:28:45]}} [2026-08-21 12:28:45.617] [WARN ] Unexpected async result [2026-08-21 12:28:45.617] [WARN ] Unexpected async result [2026-08-21 12:28:49.672] [INFO ] GET / [2026-08-21 12:28:49.718] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-08-21 12:28:49.808] [INFO ] Sent 200 in 135ms [2026-08-21 12:28:53.200] [INFO ] GET /images/favicon.png [2026-08-21 12:28:53.246] [DEBUG] ** (Phoenix.Router.NoRouteError) no route found for GET /images/favicon.png (PlatformWeb.Router) (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/phoenix/lib/phoenix/router.ex:541: PlatformWeb.Router.call/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.plug_builder_call/2 (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/plug/lib/plug/debugger.ex:155: PlatformWeb.Endpoint."call (overridable 3)"/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.call/2 (phoenix 1.7.21) lib/phoenix/endpoint/sync_code_reload_plug.ex:22: Phoenix.Endpoint.SyncCodeReloadPlug.do_call/4 (bandit 1.10.2) lib/bandit/pipeline.ex:131: Bandit.Pipeline.call_plug!/2 (bandit 1.10.2) lib/bandit/pipeline.ex:42: Bandit.Pipeline.run/5 (bandit 1.10.2) lib/bandit/http1/handler.ex:13: Bandit.HTTP1.Handler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:18: Bandit.DelegatingHandler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:8: Bandit.DelegatingHandler.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 [2026-08-21 12:29:02.024] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:29:02.024] [INFO ] Incoming JSON payload: {"oid":"11cf569a-d9f3-4032-bb01-ffb363ac74b6","sn":"98251226730001","uploadTime":"2026-08-21T12:29:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:29:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:29:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:29:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:29:01Z"},{"itemkey":"ram_free_mb","value":"894","timestamp":"2026-08-21T12:29:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:29:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:29:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:29:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:29:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:29:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:29:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:29:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:29:01Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:29:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:29:02.026] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "11cf569a-d9f3-4032-bb01-ffb363ac74b6", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:29:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:29:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:29:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:29:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:29:01Z", "value" => "894"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:29:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:29:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:29:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:29:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:29:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:29:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:29:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:29:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:29:01Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:29:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:29:01Z", "vendor" => "morefun"} [2026-08-21 12:29:02.026] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:29:02.026] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:29:02.026] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:29:02.032] [DEBUG] QUERY OK source="parameter_templates" db=5.7ms idle=644.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-08-21 12:29:02.039] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms queue=3.2ms idle=442.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-08-21 12:29:02.039] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:29:02.047] [DEBUG] QUERY OK source="tms_terminals" db=3.5ms queue=0.3ms idle=10.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:29:02.047] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:29:02.101] [DEBUG] QUERY OK source="tms_terminals" db=44.2ms queue=4.8ms idle=12.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:29:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:29:02.101] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:29:02.108] [DEBUG] QUERY OK source="tms_terminals" db=7.0ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:29:02.146] [DEBUG] QUERY OK source="tms_terminals" db=37.3ms idle=7.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:29:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:29:02.209] [DEBUG] QUERY OK db=60.4ms queue=2.4ms idle=38.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "11cf569a-d9f3-4032-bb01-ffb363ac74b6", "2026-08-21T12:29:01Z", ~N[2026-08-21 12:29:02], ~N[2026-08-21 12:29:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:29:02.209] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77979, oid: "11cf569a-d9f3-4032-bb01-ffb363ac74b6", upload_time: "2026-08-21T12:29:01Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:02], updated_at: ~N[2026-08-21 12:29:02]} [2026-08-21 12:29:02.209] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:29:01Z", "value" => "morefun"} [2026-08-21 12:29:02.274] [DEBUG] QUERY OK db=63.2ms queue=0.7ms idle=63.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:01Z", "morefun", "vendor", 77979, ~N[2026-08-21 12:29:02], ~N[2026-08-21 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:02.274] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793257, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:02], updated_at: ~N[2026-08-21 12:29:02]}} [2026-08-21 12:29:02.274] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:29:01Z", "value" => "kiosk_launcher"} [2026-08-21 12:29:02.347] [DEBUG] QUERY OK db=70.5ms queue=1.9ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:01Z", "kiosk_launcher", "model", 77979, ~N[2026-08-21 12:29:02], ~N[2026-08-21 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:02.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793259, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:02], updated_at: ~N[2026-08-21 12:29:02]}} [2026-08-21 12:29:02.347] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:29:01Z", "value" => "1.0"} [2026-08-21 12:29:02.403] [DEBUG] QUERY OK db=51.5ms idle=77.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:01Z", "1.0", "app_version", 77979, ~N[2026-08-21 12:29:02], ~N[2026-08-21 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:02.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793261, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:02], updated_at: ~N[2026-08-21 12:29:02]}} [2026-08-21 12:29:02.408] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:29:01Z", "value" => "13"} [2026-08-21 12:29:02.489] [DEBUG] QUERY OK db=79.8ms idle=22.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:01Z", "13", "android_version", 77979, ~N[2026-08-21 12:29:02], ~N[2026-08-21 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:02.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793263, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:02], updated_at: ~N[2026-08-21 12:29:02]}} [2026-08-21 12:29:02.489] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:29:01Z", "value" => "894"} [2026-08-21 12:29:02.554] [DEBUG] QUERY OK db=61.8ms idle=89.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:01Z", "894", "ram_free_mb", 77979, ~N[2026-08-21 12:29:02], ~N[2026-08-21 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:02.555] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793265, itemkey: "ram_free_mb", value: "894", timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:02], updated_at: ~N[2026-08-21 12:29:02]}} [2026-08-21 12:29:02.555] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:29:01Z", "value" => "WIFI"} [2026-08-21 12:29:02.631] [DEBUG] QUERY OK db=76.2ms idle=66.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:01Z", "WIFI", "network_type", 77979, ~N[2026-08-21 12:29:02], ~N[2026-08-21 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:02.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793267, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:02], updated_at: ~N[2026-08-21 12:29:02]}} [2026-08-21 12:29:02.632] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:29:01Z", "value" => "true"} [2026-08-21 12:29:02.677] [DEBUG] QUERY OK db=44.6ms idle=77.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:01Z", "true", "kiosk_active", 77979, ~N[2026-08-21 12:29:02], ~N[2026-08-21 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:02.677] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793269, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:02], updated_at: ~N[2026-08-21 12:29:02]}} [2026-08-21 12:29:02.677] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:29:01Z", "value" => ""} [2026-08-21 12:29:02.774] [DEBUG] QUERY OK db=93.9ms queue=2.7ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:29:01Z", "sim_operator", 77979, ~N[2026-08-21 12:29:02], ~N[2026-08-21 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:02.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793271, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:02], updated_at: ~N[2026-08-21 12:29:02]}} [2026-08-21 12:29:02.775] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:29:01Z", "value" => "UNKNOWN"} [2026-08-21 12:29:02.865] [DEBUG] QUERY OK db=89.6ms idle=98.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:01Z", "UNKNOWN", "sim_number", 77979, ~N[2026-08-21 12:29:02], ~N[2026-08-21 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:02.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793273, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:02], updated_at: ~N[2026-08-21 12:29:02]}} [2026-08-21 12:29:02.871] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:29:01Z", "value" => "UNKNOWN"} [2026-08-21 12:29:02.956] [DEBUG] QUERY OK db=84.9ms idle=96.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:01Z", "UNKNOWN", "sim_iccid", 77979, ~N[2026-08-21 12:29:02], ~N[2026-08-21 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:02.956] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793275, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:02], updated_at: ~N[2026-08-21 12:29:02]}} [2026-08-21 12:29:02.957] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:29:01Z", "value" => "UNKNOWN"} [2026-08-21 12:29:03.010] [DEBUG] QUERY OK db=52.5ms queue=0.1ms idle=92.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:01Z", "UNKNOWN", "sim_imsi", 77979, ~N[2026-08-21 12:29:02], ~N[2026-08-21 12:29:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:03.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793277, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:02], updated_at: ~N[2026-08-21 12:29:02]}} [2026-08-21 12:29:03.011] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:29:01Z", "value" => "UNKNOWN"} [2026-08-21 12:29:03.120] [DEBUG] QUERY OK db=108.9ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:01Z", "UNKNOWN", "sim_iccid2", 77979, ~N[2026-08-21 12:29:03], ~N[2026-08-21 12:29:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:03.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793279, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:03], updated_at: ~N[2026-08-21 12:29:03]}} [2026-08-21 12:29:03.127] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:29:01Z", "value" => "UNKNOWN"} [2026-08-21 12:29:03.189] [DEBUG] QUERY OK db=61.1ms idle=117.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:01Z", "UNKNOWN", "sim_imsi2", 77979, ~N[2026-08-21 12:29:03], ~N[2026-08-21 12:29:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:03.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793281, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:03], updated_at: ~N[2026-08-21 12:29:03]}} [2026-08-21 12:29:03.189] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:29:01Z", "value" => "36"} [2026-08-21 12:29:03.260] [DEBUG] QUERY OK db=67.5ms queue=0.2ms idle=72.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:01Z", "36", "data_usage_mb", 77979, ~N[2026-08-21 12:29:03], ~N[2026-08-21 12:29:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:03.260] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793283, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:03], updated_at: ~N[2026-08-21 12:29:03]}} [2026-08-21 12:29:03.261] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:29:01Z", "value" => "0"} [2026-08-21 12:29:03.336] [DEBUG] QUERY OK db=74.6ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:01Z", "0", "mobile_data_mb", 77979, ~N[2026-08-21 12:29:03], ~N[2026-08-21 12:29:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:03.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793285, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:03], updated_at: ~N[2026-08-21 12:29:03]}} [2026-08-21 12:29:03.347] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:29:03.437] [DEBUG] QUERY OK db=85.4ms idle=76.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77979, ~N[2026-08-21 12:29:03], ~N[2026-08-21 12:29:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:03.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793287, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:29:01Z", message: nil, status_log_id: 77979, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:03], updated_at: ~N[2026-08-21 12:29:03]}} [2026-08-21 12:29:32.120] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:29:32.120] [INFO ] Incoming JSON payload: {"oid":"42c77eb2-7d5f-458b-bfa0-5d9d9090e914","sn":"98251226730001","uploadTime":"2026-08-21T12:29:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:29:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:29:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:29:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:29:31Z"},{"itemkey":"ram_free_mb","value":"890","timestamp":"2026-08-21T12:29:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:29:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:29:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:29:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:29:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:29:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:29:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:29:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:29:31Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:29:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:29:32.121] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "42c77eb2-7d5f-458b-bfa0-5d9d9090e914", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:29:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:29:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:29:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:29:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:29:31Z", "value" => "890"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:29:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:29:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:29:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:29:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:29:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:29:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:29:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:29:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:29:31Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:29:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:29:31Z", "vendor" => "morefun"} [2026-08-21 12:29:32.122] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:29:32.122] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:29:32.122] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:29:32.122] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=593.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-08-21 12:29:32.123] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.1ms idle=51.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-08-21 12:29:32.123] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:29:32.124] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:29:32.125] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:29:32.196] [DEBUG] QUERY OK source="tms_terminals" db=67.7ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:29:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:29:32.196] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:29:32.198] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:29:32.265] [DEBUG] QUERY OK source="tms_terminals" db=66.4ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:29:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:29:32.332] [DEBUG] QUERY OK db=66.3ms idle=67.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "42c77eb2-7d5f-458b-bfa0-5d9d9090e914", "2026-08-21T12:29:31Z", ~N[2026-08-21 12:29:32], ~N[2026-08-21 12:29:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:29:32.332] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77981, oid: "42c77eb2-7d5f-458b-bfa0-5d9d9090e914", upload_time: "2026-08-21T12:29:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:32], updated_at: ~N[2026-08-21 12:29:32]} [2026-08-21 12:29:32.333] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:29:31Z", "value" => "morefun"} [2026-08-21 12:29:32.378] [DEBUG] QUERY OK db=44.6ms idle=67.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:31Z", "morefun", "vendor", 77981, ~N[2026-08-21 12:29:32], ~N[2026-08-21 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:32.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793289, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:32], updated_at: ~N[2026-08-21 12:29:32]}} [2026-08-21 12:29:32.382] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:29:31Z", "value" => "kiosk_launcher"} [2026-08-21 12:29:32.453] [DEBUG] QUERY OK db=70.9ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:31Z", "kiosk_launcher", "model", 77981, ~N[2026-08-21 12:29:32], ~N[2026-08-21 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:32.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793291, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:32], updated_at: ~N[2026-08-21 12:29:32]}} [2026-08-21 12:29:32.453] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:29:31Z", "value" => "1.0"} [2026-08-21 12:29:32.517] [DEBUG] QUERY OK db=63.0ms decode=0.1ms idle=76.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:31Z", "1.0", "app_version", 77981, ~N[2026-08-21 12:29:32], ~N[2026-08-21 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:32.519] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793293, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:32], updated_at: ~N[2026-08-21 12:29:32]}} [2026-08-21 12:29:32.519] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:29:31Z", "value" => "13"} [2026-08-21 12:29:32.578] [DEBUG] QUERY OK db=58.3ms idle=66.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:31Z", "13", "android_version", 77981, ~N[2026-08-21 12:29:32], ~N[2026-08-21 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:32.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793295, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:32], updated_at: ~N[2026-08-21 12:29:32]}} [2026-08-21 12:29:32.578] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:29:31Z", "value" => "890"} [2026-08-21 12:29:32.642] [DEBUG] QUERY OK db=59.9ms queue=0.1ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:31Z", "890", "ram_free_mb", 77981, ~N[2026-08-21 12:29:32], ~N[2026-08-21 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:32.642] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793297, itemkey: "ram_free_mb", value: "890", timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:32], updated_at: ~N[2026-08-21 12:29:32]}} [2026-08-21 12:29:32.642] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:29:31Z", "value" => "WIFI"} [2026-08-21 12:29:32.676] [DEBUG] QUERY OK db=33.4ms idle=64.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:31Z", "WIFI", "network_type", 77981, ~N[2026-08-21 12:29:32], ~N[2026-08-21 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:32.676] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793299, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:32], updated_at: ~N[2026-08-21 12:29:32]}} [2026-08-21 12:29:32.676] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:29:31Z", "value" => "true"} [2026-08-21 12:29:32.730] [DEBUG] QUERY OK db=53.2ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:31Z", "true", "kiosk_active", 77981, ~N[2026-08-21 12:29:32], ~N[2026-08-21 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:32.730] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793301, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:32], updated_at: ~N[2026-08-21 12:29:32]}} [2026-08-21 12:29:32.730] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:29:31Z", "value" => ""} [2026-08-21 12:29:32.764] [DEBUG] QUERY OK db=33.4ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:29:31Z", "sim_operator", 77981, ~N[2026-08-21 12:29:32], ~N[2026-08-21 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:32.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793303, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:32], updated_at: ~N[2026-08-21 12:29:32]}} [2026-08-21 12:29:32.764] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:29:31Z", "value" => "UNKNOWN"} [2026-08-21 12:29:32.820] [DEBUG] QUERY OK db=55.7ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:31Z", "UNKNOWN", "sim_number", 77981, ~N[2026-08-21 12:29:32], ~N[2026-08-21 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:32.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793305, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:32], updated_at: ~N[2026-08-21 12:29:32]}} [2026-08-21 12:29:32.821] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:29:31Z", "value" => "UNKNOWN"} [2026-08-21 12:29:32.879] [DEBUG] QUERY OK db=56.9ms idle=57.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:31Z", "UNKNOWN", "sim_iccid", 77981, ~N[2026-08-21 12:29:32], ~N[2026-08-21 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:32.879] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793307, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:32], updated_at: ~N[2026-08-21 12:29:32]}} [2026-08-21 12:29:32.879] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:29:31Z", "value" => "UNKNOWN"} [2026-08-21 12:29:32.949] [DEBUG] QUERY OK db=68.5ms queue=0.4ms idle=59.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:31Z", "UNKNOWN", "sim_imsi", 77981, ~N[2026-08-21 12:29:32], ~N[2026-08-21 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:32.950] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793309, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:32], updated_at: ~N[2026-08-21 12:29:32]}} [2026-08-21 12:29:32.950] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:29:31Z", "value" => "UNKNOWN"} [2026-08-21 12:29:33.006] [DEBUG] QUERY OK db=55.0ms idle=71.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:31Z", "UNKNOWN", "sim_iccid2", 77981, ~N[2026-08-21 12:29:32], ~N[2026-08-21 12:29:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:33.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793311, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:32], updated_at: ~N[2026-08-21 12:29:32]}} [2026-08-21 12:29:33.008] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:29:31Z", "value" => "UNKNOWN"} [2026-08-21 12:29:33.096] [DEBUG] QUERY OK db=87.7ms queue=0.1ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:31Z", "UNKNOWN", "sim_imsi2", 77981, ~N[2026-08-21 12:29:33], ~N[2026-08-21 12:29:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:33.097] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793313, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:33], updated_at: ~N[2026-08-21 12:29:33]}} [2026-08-21 12:29:33.097] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:29:31Z", "value" => "36"} [2026-08-21 12:29:33.277] [DEBUG] QUERY OK db=179.4ms idle=91.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:31Z", "36", "data_usage_mb", 77981, ~N[2026-08-21 12:29:33], ~N[2026-08-21 12:29:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:33.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793315, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:33], updated_at: ~N[2026-08-21 12:29:33]}} [2026-08-21 12:29:33.278] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:29:31Z", "value" => "0"} [2026-08-21 12:29:33.361] [DEBUG] QUERY OK db=82.8ms idle=1.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29:31Z", "0", "mobile_data_mb", 77981, ~N[2026-08-21 12:29:33], ~N[2026-08-21 12:29:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:33.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793317, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:33], updated_at: ~N[2026-08-21 12:29:33]}} [2026-08-21 12:29:33.383] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:29:33.428] [DEBUG] QUERY OK db=44.3ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:29: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77981, ~N[2026-08-21 12:29:33], ~N[2026-08-21 12:29:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:33.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793319, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:29:31Z", message: nil, status_log_id: 77981, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:33], updated_at: ~N[2026-08-21 12:29:33]}} [2026-08-21 12:29:33.581] [INFO ] GET /users/log_in [2026-08-21 12:29:33.582] [DEBUG] Processing with PlatformWeb.UserLoginLive.new/2 Parameters: %{} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-08-21 12:29:33.708] [INFO ] Sent 200 in 127ms [2026-08-21 12:29:35.568] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "cn8lITgRKD44DDQtLGkEGgRBLhccBmYF11KuqflKgjLrsPHx3tFyNtSq", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 12:29:35.802] [DEBUG] MOUNT PlatformWeb.UserLoginLive Parameters: %{} Session: %{"_csrf_token" => "CNnTIwDu_fx__9Lb75hnRr5t"} [2026-08-21 12:29:35.802] [DEBUG] Replied in 220µs [2026-08-21 12:29:41.799] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:29:41.799] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:29:41Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:29:41Z","value":"52"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:29:41Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:29:41Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:29:41Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:29:41Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:29:41Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:29:41Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:29:41Z","vendor":"MoreFun"} [2026-08-21 12:29:41.800] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:29:41Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:29:41Z", "value" => "52"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:29:41Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:29:41Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:29:41Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:29:41Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:29:41Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:29:41Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:29:41Z", "vendor" => "MoreFun"} [2026-08-21 12:29:41.800] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:29:41.800] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:29:41.800] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:29:41.803] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms queue=0.1ms idle=728.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-08-21 12:29:41.804] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=235.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:29:41.804] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms idle=1.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:29:41.806] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.6ms idle=1.2ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:29:41.807] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms 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-08-21 12:29:41.848] [DEBUG] QUERY OK source="pos_merchant" db=40.1ms queue=0.1ms idle=1.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:29:41.849] [DEBUG] QUERY OK db=0.5ms queue=0.4ms idle=1777.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 ["626165170000000"] [2026-08-21 12:29:41.849] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:29:41.849] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms idle=42.1ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:29:41.850] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 12:29:41.850] [DEBUG] QUERY OK source="address" db=0.3ms idle=2.2ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:29:41.850] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:29:41.851] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:29:41.894] [DEBUG] QUERY OK db=41.4ms idle=2.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "550b5bfdade04a766163b1af6eec6c86aeb392009763d9e5361cbc1e4b36f4ee", 5442, 936, ~U[2026-08-21 12:29:41Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:29:41], ~N[2026-08-21 12:29:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:29:41.894] [INFO ] AutoPushService: Created push log 49070 for MF919 params.zip [2026-08-21 12:29:41.894] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 5442, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:29:41.895] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:29:41.895] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:29:41.896] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=44.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:29:41.900] [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-08-21 12:29:41.955] [DEBUG] QUERY OK db=54.4ms idle=7.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "6f411d78bc89dcced209ee1b3bbf7ea3dfe3754a2d903e4488d1ecefd46262a8", 5506, 17947, ~U[2026-08-21 12:29:41Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:29:41], ~N[2026-08-21 12:29:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:29:41.956] [INFO ] AutoPushService: Created push log 49071 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:29:41.956] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 5506, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:29:41.956] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:29:41.956] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:29:41.958] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms queue=0.6ms idle=60.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-08-21 12:29:41.958] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:29:41.959] [DEBUG] QUERY OK source="tms_terminals" db=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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:29:41.959] [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-08-21 12:29:41.960] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:29:41.960] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:29:41.960] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:29:41.961] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=2.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:29:41.962] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:29:41.962] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:29:41.964] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=3.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:29:42.036] [DEBUG] QUERY OK source="tms_terminals" db=30.7ms queue=40.8ms idle=3.4ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:29:41], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:29:42.037] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:29:42.037] [INFO ] Event published: terminal_updated [2026-08-21 12:29:42.037] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:29:42.037] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:29:42.037] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:29:42.048] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.1ms queue=0.4ms idle=81.9ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:29:42], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:29:42.050] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.8ms idle=0.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:29:42.061] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms queue=1.5ms idle=9.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:29:42.062] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:29:42.114] [DEBUG] QUERY OK source="tms_terminals" db=24.3ms queue=41.8ms idle=11.6ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:29:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:29:42.116] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=54.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`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-08-21 12:29:42.119] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms idle=2.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:29:42.121] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=3.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:29:42.121] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:29:42.180] [DEBUG] QUERY OK source="parameter_push_logs" db=58.6ms idle=2.3ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-08-21 11:59:42]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:29:42.182] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:29:42.182] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:29:42.185] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=60.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:29:42.186] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=4.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:29:42.186] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:29:42.187] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:29:42.268] [DEBUG] QUERY OK source="tms_terminals" db=38.2ms queue=42.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:29:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:29:42.303] [DEBUG] QUERY OK db=35.0ms idle=81.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:29:41Z", ~N[2026-08-21 12:29:42], ~N[2026-08-21 12:29:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:29:42.303] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77983, oid: "organization_id", upload_time: "2026-08-21T12:29:41Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:42], updated_at: ~N[2026-08-21 12:29:42]} [2026-08-21 12:29:42.304] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:29:41Z", "value" => "online"} [2026-08-21 12:29:42.359] [DEBUG] QUERY OK db=54.3ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:29:41Z", "online", "status", 77983, ~N[2026-08-21 12:29:42], ~N[2026-08-21 12:29:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:42.359] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793321, itemkey: "status", value: "online", timestamp: "2026-08-21T12:29:41Z", message: "Terminal status update", status_log_id: 77983, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:42], updated_at: ~N[2026-08-21 12:29:42]}} [2026-08-21 12:29:42.359] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:29:42.359] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:29:41Z", "value" => "52"} [2026-08-21 12:29:42.410] [DEBUG] QUERY OK db=49.9ms idle=56.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:29:41Z", "52", "battery", 77983, ~N[2026-08-21 12:29:42], ~N[2026-08-21 12:29:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:42.410] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793322, itemkey: "battery", value: "52", timestamp: "2026-08-21T12:29:41Z", message: "Battery level", status_log_id: 77983, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:42], updated_at: ~N[2026-08-21 12:29:42]}} [2026-08-21 12:29:42.410] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:29:41Z", "value" => "online"} [2026-08-21 12:29:42.470] [DEBUG] QUERY OK db=59.9ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:29:41Z", "online", "network", 77983, ~N[2026-08-21 12:29:42], ~N[2026-08-21 12:29:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:42.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793323, itemkey: "network", value: "online", timestamp: "2026-08-21T12:29:41Z", message: "Network connectivity", status_log_id: 77983, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:42], updated_at: ~N[2026-08-21 12:29:42]}} [2026-08-21 12:29:42.471] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:29:42.471] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:29:41Z", "value" => "0"} [2026-08-21 12:29:42.513] [DEBUG] QUERY OK db=41.4ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:29:41Z", "0", "cpu", 77983, ~N[2026-08-21 12:29:42], ~N[2026-08-21 12:29:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:42.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793324, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:29:41Z", message: "CPU usage percentage", status_log_id: 77983, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:42], updated_at: ~N[2026-08-21 12:29:42]}} [2026-08-21 12:29:42.513] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:29:41Z", "value" => "1.0.0"} [2026-08-21 12:29:42.559] [DEBUG] QUERY OK db=44.7ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:29:41Z", "1.0.0", "parameter_config", 77983, ~N[2026-08-21 12:29:42], ~N[2026-08-21 12:29:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:42.559] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793325, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:29:41Z", message: "Current parameters version", status_log_id: 77983, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:42], updated_at: ~N[2026-08-21 12:29:42]}} [2026-08-21 12:29:42.559] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:29:41Z", "value" => "1.0.1"} [2026-08-21 12:29:42.603] [DEBUG] QUERY OK db=43.6ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:29:41Z", "1.0.1", "emv_config", 77983, ~N[2026-08-21 12:29:42], ~N[2026-08-21 12:29:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:42.603] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793326, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:29:41Z", message: "Current EMV config version", status_log_id: 77983, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:42], updated_at: ~N[2026-08-21 12:29:42]}} [2026-08-21 12:29:42.604] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:29:41Z", "value" => ""} [2026-08-21 12:29:42.680] [DEBUG] QUERY OK db=33.9ms queue=41.4ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:29:41Z", "keys_config", 77983, ~N[2026-08-21 12:29:42], ~N[2026-08-21 12:29:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:42.681] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793327, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:29:41Z", message: "Current keys config version", status_log_id: 77983, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:42], updated_at: ~N[2026-08-21 12:29:42]}} [2026-08-21 12:29:42.681] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:29:41Z", "value" => "3.8.7.3"} [2026-08-21 12:29:42.719] [DEBUG] QUERY OK db=36.8ms queue=0.1ms idle=78.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:29:41Z", "3.8.7.3", "application", 77983, ~N[2026-08-21 12:29:42], ~N[2026-08-21 12:29:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:29:42.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793328, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:29:41Z", message: "Current application version", status_log_id: 77983, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:29:42], updated_at: ~N[2026-08-21 12:29:42]}} [2026-08-21 12:29:42.719] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:29:41Z"} [2026-08-21 12:29:42.723] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:29:41Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 5, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:29:55.764] [INFO ] POST /users/log_in [2026-08-21 12:29:55.765] [DEBUG] Processing with PlatformWeb.UserSessionController.create/2 Parameters: %{"_csrf_token" => "cn8lITgRKD44DDQtLGkEGgRBLhccBmYF11KuqflKgjLrsPHx3tFyNtSq", "user" => %{"email" => "demo@mercury.com", "password" => "[FILTERED]", "remember_me" => "on"}} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-08-21 12:29:55.778] [DEBUG] QUERY OK source="users" db=0.4ms queue=0.6ms idle=371.2ms 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-08-21 12:29:56.176] [DEBUG] QUERY OK db=70.7ms queue=0.6ms idle=698.5ms INSERT INTO `users_tokens` (`context`,`token`,`user_id`,`inserted_at`) VALUES (?,?,?,?) ["session", <<101, 6, 144, 156, 30, 208, 15, 191, 185, 52, 178, 35, 142, 239, 104, 87, 25, 53, 94, 7, 150, 66, 17, 195, 71, 153, 238, 172, 66, 120, 187, 4>>, 3, ~U[2026-08-21 12:29:56Z]] ↳ DaProductApp.Users.generate_user_session_token/1, at: lib/da_product_app/users.ex:312 [2026-08-21 12:29:56.177] [INFO ] Sent 302 in 412ms [2026-08-21 12:29:56.202] [ERROR] ** (Plug.Conn.AlreadySentError) the response was already sent (plug 1.19.1) lib/plug/conn.ex:914: Plug.Conn.put_resp_header/3 (phoenix 1.7.21) lib/phoenix/controller.ex:495: Phoenix.Controller.redirect/2 (platform_web 0.1.0) lib/platform_web/controllers/user_session_controller.ex:1: PlatformWeb.UserSessionController.action/2 (platform_web 0.1.0) lib/platform_web/controllers/user_session_controller.ex:1: PlatformWeb.UserSessionController.phoenix_controller_pipeline/2 (phoenix 1.7.21) lib/phoenix/router.ex:484: Phoenix.Router.__call__/5 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.plug_builder_call/2 (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/plug/lib/plug/debugger.ex:155: PlatformWeb.Endpoint."call (overridable 3)"/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.call/2 (phoenix 1.7.21) lib/phoenix/endpoint/sync_code_reload_plug.ex:22: Phoenix.Endpoint.SyncCodeReloadPlug.do_call/4 (bandit 1.10.2) lib/bandit/pipeline.ex:131: Bandit.Pipeline.call_plug!/2 (bandit 1.10.2) lib/bandit/pipeline.ex:42: Bandit.Pipeline.run/5 (bandit 1.10.2) lib/bandit/http1/handler.ex:13: Bandit.HTTP1.Handler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:18: Bandit.DelegatingHandler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:8: Bandit.DelegatingHandler.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 [2026-08-21 12:29:56.913] [INFO ] GET /dashboard [2026-08-21 12:29:56.913] [DEBUG] Processing with PlatformWeb.DashboardLive.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 12:29:56.922] [DEBUG] QUERY OK source="users_tokens" db=0.7ms queue=0.8ms idle=1142.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)) [<<101, 6, 144, 156, 30, 208, 15, 191, 185, 52, 178, 35, 142, 239, 104, 87, 25, 53, 94, 7, 150, 66, 17, 195, 71, 153, 238, 172, 66, 120, 187, 4>>, "session", ~U[2026-08-21 12:29:56.920549Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 12:29:56.934] [DEBUG] QUERY OK source="users_tokens" db=0.8ms queue=0.2ms idle=756.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)) [<<101, 6, 144, 156, 30, 208, 15, 191, 185, 52, 178, 35, 142, 239, 104, 87, 25, 53, 94, 7, 150, 66, 17, 195, 71, 153, 238, 172, 66, 120, 187, 4>>, "session", ~U[2026-08-21 12:29:56.932827Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-08-21 12:29:56.937] [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-08-20 18:44:09Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-08-21 12:29:56.938] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.5ms idle=862.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-08-21 12:29:56.939] [DEBUG] QUERY OK source="tms_terminals" db=0.2ms queue=0.3ms idle=318.7ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-08-21 12:29:56.962] [DEBUG] QUERY OK source="tms_terminals" db=22.3ms queue=0.2ms idle=1.1ms 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-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-08-21 12:29:56.968] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.3ms queue=0.6ms idle=27.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-08-21 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-08-21 12:29:56.969] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.2ms idle=7.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:140 [2026-08-21 12:29:56.971] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.7ms idle=1.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`status` IN ('connected','online','Online')) [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:143 [2026-08-21 12:29:57.079] [DEBUG] QUERY OK source="tms_terminals" db=106.0ms queue=0.7ms idle=3.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`area`, t0.`model`, t0.`imei`, t0.`remark`, t0.`vendor`, t0.`group`, t0.`inserted_at`, t0.`updated_at`, s1.`last_seen_at`, (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'battery' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'cpu' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'memory' ORDER BY inserted_at DESC LIMIT 1) FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen_at`, max(st0.`id`) AS `last_status_log_id` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` LEFT OUTER JOIN `tms_terminal_status_logs` AS t2 ON t2.`id` = s1.`last_status_log_id` [] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-08-21 12:29:57.088] [DEBUG] QUERY OK source="ota_configurations" db=1.5ms queue=0.9ms idle=113.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.090] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms queue=0.8ms idle=8.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.094] [DEBUG] QUERY OK source="ota_configurations" db=2.9ms idle=3.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.095] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=4.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.096] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms 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-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.096] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.098] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms queue=1.1ms 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-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.100] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.4ms idle=2.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.100] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms 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-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.101] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.103] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms queue=0.3ms 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-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.104] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=0.4ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.106] [DEBUG] QUERY OK source="ota_configurations" db=2.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-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.107] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms queue=0.1ms idle=2.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.108] [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-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.109] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.111] [DEBUG] QUERY OK source="ota_configurations" db=1.9ms idle=1.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.113] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.0ms queue=0.1ms idle=2.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.115] [DEBUG] QUERY OK source="ota_configurations" db=1.3ms queue=0.3ms idle=1.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.116] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=2.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.116] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.120] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms queue=0.1ms idle=2.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.122] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms 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-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.123] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.1ms idle=2.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.124] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms idle=1.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.127] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=2.5ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.130] [DEBUG] QUERY OK source="ota_configurations" db=2.1ms idle=3.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.135] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=4.1ms idle=3.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.137] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=6.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.138] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=2.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.139] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=1.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.140] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms queue=0.1ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.142] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms 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-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.143] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=2.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.144] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.145] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms queue=0.1ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.145] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.146] [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-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.147] [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-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.148] [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-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.163] [DEBUG] QUERY OK source="ota_configurations" db=15.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-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.165] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.1ms queue=0.5ms idle=15.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.166] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=2.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.167] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.168] [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-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.168] [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-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.169] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:29:57.170] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:29:57.294] [DEBUG] QUERY OK source="tms_terminals" db=122.5ms queue=0.4ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 12:24:57.170546Z], ~U[2026-08-21 11:59:57.170546Z], ~U[2026-08-21 11:29:57.170546Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:29:57.315] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.5ms queue=0.4ms idle=124.5ms 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-08-21 11:29:57]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-08-21 12:29:57.336] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.8ms queue=0.5ms idle=22.6ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 12:28:57]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-08-21 12:29:57.358] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.2ms queue=0.4ms idle=21.0ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 11:29:57]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-08-21 12:29:57.381] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.4ms idle=22.4ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 11:29:57]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-08-21 12:29:57.402] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.5ms queue=1.1ms idle=23.3ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 11:29:57]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-08-21 12:29:57.405] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms idle=21.4ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1652 [2026-08-21 12:29:57.513] [DEBUG] QUERY OK source="tms_terminals" db=106.8ms idle=3.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-08-21 12:24:57.406165Z], ~U[2026-08-21 11:59:57.406165Z], ~U[2026-08-21 11:29:57.406165Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:29:57.606] [DEBUG] QUERY OK source="tms_terminals" db=92.1ms queue=0.1ms idle=108.3ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 12:24:57.514059Z], ~U[2026-08-21 11:59:57.514059Z], ~U[2026-08-21 11:29:57.514059Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:29:57.704] [DEBUG] QUERY OK source="tms_terminals" db=97.5ms queue=0.3ms idle=93.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-08-21 12:24:57.606806Z], ~U[2026-08-21 11:59:57.606806Z], ~U[2026-08-21 11:29:57.606806Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:29:57.803] [DEBUG] QUERY OK source="tms_terminals" db=97.5ms idle=81.9ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 12:24:57.705224Z], ~U[2026-08-21 11:59:57.705224Z], ~U[2026-08-21 11:29:57.705224Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:29:57.829] [INFO ] Sent 200 in 915ms [2026-08-21 12:29:59.823] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 35µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "OTohPjZiPUFRIAF9KVolByAteCNYGTkGSoXlpZP19PtOdjqItUHy1XLa", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 12:30:00.010] [DEBUG] MOUNT PlatformWeb.DashboardLive Parameters: %{} Session: %{"_csrf_token" => "jUyRF8mphpu2M0TNTx0ZiAug", "live_socket_id" => "users_sessions:ZQaQnB7QD7-5NLIjju9oVxk1XgeWQhHDR5nurEJ4uwQ=", "user_token" => <<101, 6, 144, 156, 30, 208, 15, 191, 185, 52, 178, 35, 142, 239, 104, 87, 25, 53, 94, 7, 150, 66, 17, 195, 71, 153, 238, 172, 66, 120, 187, 4>>} [2026-08-21 12:30:00.012] [DEBUG] QUERY OK source="users_tokens" db=1.4ms idle=1604.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)) [<<101, 6, 144, 156, 30, 208, 15, 191, 185, 52, 178, 35, 142, 239, 104, 87, 25, 53, 94, 7, 150, 66, 17, 195, 71, 153, 238, 172, 66, 120, 187, 4>>, "session", ~U[2026-08-21 12:30:00.010918Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 12:30:00.014] [DEBUG] QUERY OK source="users_tokens" db=0.9ms queue=0.3ms idle=1606.3ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<101, 6, 144, 156, 30, 208, 15, 191, 185, 52, 178, 35, 142, 239, 104, 87, 25, 53, 94, 7, 150, 66, 17, 195, 71, 153, 238, 172, 66, 120, 187, 4>>, "session", ~U[2026-08-21 12:30:00.012810Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-08-21 12:30:00.014] [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-08-20 18:44:09Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-08-21 12:30:00.015] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1312.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-08-21 12:30:00.017] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=386.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-08-21 12:30:00.037] [DEBUG] QUERY OK source="tms_terminals" db=19.4ms queue=0.4ms idle=2.0ms 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-08-21 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-08-21 12:30:00.038] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=20.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-08-21 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-08-21 12:30:00.039] [DEBUG] QUERY OK source="tms_terminals" db=0.2ms idle=1.2ms 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-08-21 12:30:00.040] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=0.7ms 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-08-21 12:30:00.140] [DEBUG] QUERY OK source="tms_terminals" db=100.0ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`area`, t0.`model`, t0.`imei`, t0.`remark`, t0.`vendor`, t0.`group`, t0.`inserted_at`, t0.`updated_at`, s1.`last_seen_at`, (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'battery' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'cpu' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'memory' ORDER BY inserted_at DESC LIMIT 1) FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen_at`, max(st0.`id`) AS `last_status_log_id` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` LEFT OUTER JOIN `tms_terminal_status_logs` AS t2 ON t2.`id` = s1.`last_status_log_id` [] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-08-21 12:30:00.143] [DEBUG] QUERY OK source="ota_configurations" db=1.8ms idle=100.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.147] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=4.4ms idle=2.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 00:00:00Z], ~U[2026-08-21 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.151] [DEBUG] QUERY OK source="ota_configurations" db=2.9ms idle=5.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.152] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.0ms queue=0.2ms idle=3.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 01:00:00Z], ~U[2026-08-21 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.153] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=0.1ms 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-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.154] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 02:00:00Z], ~U[2026-08-21 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.158] [DEBUG] QUERY OK source="ota_configurations" db=2.2ms queue=1.3ms idle=1.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.160] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.8ms idle=4.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 03:00:00Z], ~U[2026-08-21 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.164] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms queue=2.7ms idle=2.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.166] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=5.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 04:00:00Z], ~U[2026-08-21 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.168] [DEBUG] QUERY OK source="ota_configurations" db=2.5ms idle=2.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.170] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.8ms idle=3.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 05:00:00Z], ~U[2026-08-21 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.172] [DEBUG] QUERY OK source="ota_configurations" db=2.4ms idle=1.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.176] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=5.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 06:00:00Z], ~U[2026-08-21 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.184] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=11.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.186] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.4ms idle=9.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 07:00:00Z], ~U[2026-08-21 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.195] [DEBUG] QUERY OK source="ota_configurations" db=4.3ms idle=2.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.206] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=3.9ms idle=15.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 08:00:00Z], ~U[2026-08-21 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.207] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=15.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.208] [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-08-21 09:00:00Z], ~U[2026-08-21 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.209] [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-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.210] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms queue=0.6ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 10:00:00Z], ~U[2026-08-21 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.212] [DEBUG] QUERY OK source="ota_configurations" db=1.8ms idle=0.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.213] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 11:00:00Z], ~U[2026-08-21 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.213] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=0.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.214] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 12:00:00Z], ~U[2026-08-21 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.214] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=0.5ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.215] [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-08-21 13:00:00Z], ~U[2026-08-21 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.215] [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-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.216] [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-08-21 14:00:00Z], ~U[2026-08-21 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.216] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms 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-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.217] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 15:00:00Z], ~U[2026-08-21 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.217] [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-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.218] [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-08-21 16:00:00Z], ~U[2026-08-21 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.218] [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-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.219] [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-08-21 17:00:00Z], ~U[2026-08-21 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.219] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms 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-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.220] [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-08-21 18:00:00Z], ~U[2026-08-21 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.220] [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-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.221] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=0.1ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 19:00:00Z], ~U[2026-08-21 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.222] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.222] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 20:00:00Z], ~U[2026-08-21 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.223] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=1.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.224] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 21:00:00Z], ~U[2026-08-21 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.225] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.225] [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-08-21 22:00:00Z], ~U[2026-08-21 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.226] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms 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-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-08-21 12:30:00.227] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-08-21 23:00:00Z], ~U[2026-08-22 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-08-21 12:30:00.318] [DEBUG] QUERY OK source="tms_terminals" db=91.2ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 12:25:00.227418Z], ~U[2026-08-21 12:00:00.227418Z], ~U[2026-08-21 11:30:00.227418Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:30:00.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.2ms queue=0.2ms idle=92.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-08-21 11:30:00]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1531 [2026-08-21 12:30:00.358] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.7ms queue=0.1ms idle=20.5ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 12:29:00]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:1539 [2026-08-21 12:30:00.377] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.8ms idle=19.6ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 11:30:00]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:1605 [2026-08-21 12:30:00.394] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.9ms idle=19.6ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 11:30:00]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:1621 [2026-08-21 12:30:00.414] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.9ms idle=17.6ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-08-21 11:30:00]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:1647 [2026-08-21 12:30:00.415] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=19.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-08-21 12:30:00.515] [DEBUG] QUERY OK source="tms_terminals" db=99.9ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-08-21 12:25:00.415324Z], ~U[2026-08-21 12:00:00.415324Z], ~U[2026-08-21 11:30:00.415324Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:30:00.612] [DEBUG] QUERY OK source="tms_terminals" db=96.0ms idle=100.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-08-21 12:25:00.515895Z], ~U[2026-08-21 12:00:00.515895Z], ~U[2026-08-21 11:30:00.515895Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:30:00.708] [DEBUG] QUERY OK source="tms_terminals" db=95.7ms idle=97.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-08-21 12:25:00.612559Z], ~U[2026-08-21 12:00:00.612559Z], ~U[2026-08-21 11:30:00.612559Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:30:00.805] [DEBUG] QUERY OK source="tms_terminals" db=96.5ms idle=73.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-08-21 12:25:00.708853Z], ~U[2026-08-21 12:00:00.708853Z], ~U[2026-08-21 11:30:00.708853Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1499 [2026-08-21 12:30:00.806] [DEBUG] Replied in 795ms [2026-08-21 12:30:02.219] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:30:02.219] [INFO ] Incoming JSON payload: {"oid":"fdf46115-0bc0-4356-89bb-04254018430f","sn":"98251226730001","uploadTime":"2026-08-21T12:30:01Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:30:01Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:30:01Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:30:01Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:30:01Z"},{"itemkey":"ram_free_mb","value":"897","timestamp":"2026-08-21T12:30:01Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:30:01Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:30:01Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:30:01Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:30:01Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:30:01Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:30:01Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:30:01Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:30:01Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:30:01Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:30: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:30:02.237] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "fdf46115-0bc0-4356-89bb-04254018430f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:30:01Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:30:01Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:30:01Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:30:01Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:30:01Z", "value" => "897"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:30:01Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:30:01Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:30:01Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:30:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:30:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:30:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:30:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:30:01Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:30:01Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:30:01Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:30: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:30:01Z", "vendor" => "morefun"} [2026-08-21 12:30:02.240] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:30:02.240] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:30:02.240] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:30:02.249] [DEBUG] QUERY OK source="parameter_templates" db=8.2ms idle=600.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-08-21 12:30:02.256] [DEBUG] QUERY OK source="parameter_templates" db=7.2ms idle=172.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-08-21 12:30:02.257] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:30:02.263] [DEBUG] QUERY OK source="tms_terminals" db=6.5ms idle=8.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 12:30:02.359] [DEBUG] QUERY OK source="tms_terminals" db=50.0ms queue=45.2ms idle=7.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 12:30:02], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:30:02.359] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:30:02.360] [INFO ] Event published: terminal_updated [2026-08-21 12:30:02.368] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.2ms queue=5.7ms idle=97.1ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:30:02], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:30:02.361] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:30:02.370] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:30:02.372] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:30:02.377] [DEBUG] QUERY OK source="tms_terminals" db=7.4ms queue=0.1ms idle=10.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:30:02.381] [DEBUG] QUERY OK source="terminal_group_rules" db=3.3ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:30:02.381] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:30:02.479] [DEBUG] QUERY OK source="tms_terminals" db=64.5ms queue=44.3ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 12:30:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:30:02.482] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:30:02.491] [DEBUG] QUERY OK source="tms_terminals" db=7.0ms idle=102.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:30:02.559] [DEBUG] QUERY OK source="tms_terminals" db=60.3ms queue=6.3ms idle=12.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:30:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:30:02.632] [DEBUG] QUERY OK db=72.5ms idle=67.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "fdf46115-0bc0-4356-89bb-04254018430f", "2026-08-21T12:30:01Z", ~N[2026-08-21 12:30:02], ~N[2026-08-21 12:30:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:30:02.632] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77984, oid: "fdf46115-0bc0-4356-89bb-04254018430f", upload_time: "2026-08-21T12:30:01Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:02], updated_at: ~N[2026-08-21 12:30:02]} [2026-08-21 12:30:02.632] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:30:01Z", "value" => "morefun"} [2026-08-21 12:30:02.693] [DEBUG] QUERY OK db=60.4ms idle=73.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:01Z", "morefun", "vendor", 77984, ~N[2026-08-21 12:30:02], ~N[2026-08-21 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:02.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793329, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:02], updated_at: ~N[2026-08-21 12:30:02]}} [2026-08-21 12:30:02.693] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:30:01Z", "value" => "kiosk_launcher"} [2026-08-21 12:30:02.826] [DEBUG] QUERY OK db=80.9ms queue=49.7ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:01Z", "kiosk_launcher", "model", 77984, ~N[2026-08-21 12:30:02], ~N[2026-08-21 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:02.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793330, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:02], updated_at: ~N[2026-08-21 12:30:02]}} [2026-08-21 12:30:02.826] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:30:01Z", "value" => "1.0"} [2026-08-21 12:30:02.901] [DEBUG] QUERY OK db=74.5ms idle=133.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:01Z", "1.0", "app_version", 77984, ~N[2026-08-21 12:30:02], ~N[2026-08-21 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:02.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793331, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:02], updated_at: ~N[2026-08-21 12:30:02]}} [2026-08-21 12:30:02.901] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:30:01Z", "value" => "13"} [2026-08-21 12:30:02.966] [DEBUG] QUERY OK db=64.5ms idle=77.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:01Z", "13", "android_version", 77984, ~N[2026-08-21 12:30:02], ~N[2026-08-21 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:02.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793332, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:02], updated_at: ~N[2026-08-21 12:30:02]}} [2026-08-21 12:30:02.967] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:30:01Z", "value" => "897"} [2026-08-21 12:30:03.023] [DEBUG] QUERY OK db=55.9ms idle=65.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:01Z", "897", "ram_free_mb", 77984, ~N[2026-08-21 12:30:02], ~N[2026-08-21 12:30:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:03.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793333, itemkey: "ram_free_mb", value: "897", timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:02], updated_at: ~N[2026-08-21 12:30:02]}} [2026-08-21 12:30:03.024] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:30:01Z", "value" => "WIFI"} [2026-08-21 12:30:03.074] [DEBUG] QUERY OK db=49.1ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:01Z", "WIFI", "network_type", 77984, ~N[2026-08-21 12:30:03], ~N[2026-08-21 12:30:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:03.075] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793334, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:03], updated_at: ~N[2026-08-21 12:30:03]}} [2026-08-21 12:30:03.075] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:30:01Z", "value" => "true"} [2026-08-21 12:30:03.139] [DEBUG] QUERY OK db=57.7ms idle=58.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:01Z", "true", "kiosk_active", 77984, ~N[2026-08-21 12:30:03], ~N[2026-08-21 12:30:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:03.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793335, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:03], updated_at: ~N[2026-08-21 12:30:03]}} [2026-08-21 12:30:03.140] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:30:01Z", "value" => ""} [2026-08-21 12:30:03.219] [DEBUG] QUERY OK db=78.6ms idle=66.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:30:01Z", "sim_operator", 77984, ~N[2026-08-21 12:30:03], ~N[2026-08-21 12:30:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:03.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793336, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:03], updated_at: ~N[2026-08-21 12:30:03]}} [2026-08-21 12:30:03.221] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:30:01Z", "value" => "UNKNOWN"} [2026-08-21 12:30:03.314] [DEBUG] QUERY OK db=91.6ms idle=82.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:01Z", "UNKNOWN", "sim_number", 77984, ~N[2026-08-21 12:30:03], ~N[2026-08-21 12:30:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:03.315] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793337, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:03], updated_at: ~N[2026-08-21 12:30:03]}} [2026-08-21 12:30:03.315] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:30:01Z", "value" => "UNKNOWN"} [2026-08-21 12:30:03.389] [DEBUG] QUERY OK db=70.4ms idle=99.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:01Z", "UNKNOWN", "sim_iccid", 77984, ~N[2026-08-21 12:30:03], ~N[2026-08-21 12:30:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:03.389] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793338, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:03], updated_at: ~N[2026-08-21 12:30:03]}} [2026-08-21 12:30:03.389] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:30:01Z", "value" => "UNKNOWN"} [2026-08-21 12:30:03.486] [DEBUG] QUERY OK db=89.8ms idle=7.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:01Z", "UNKNOWN", "sim_imsi", 77984, ~N[2026-08-21 12:30:03], ~N[2026-08-21 12:30:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:03.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793339, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:03], updated_at: ~N[2026-08-21 12:30:03]}} [2026-08-21 12:30:03.488] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:30:01Z", "value" => "UNKNOWN"} [2026-08-21 12:30:03.580] [DEBUG] QUERY OK db=91.4ms idle=39.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:01Z", "UNKNOWN", "sim_iccid2", 77984, ~N[2026-08-21 12:30:03], ~N[2026-08-21 12:30:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:03.580] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793340, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:03], updated_at: ~N[2026-08-21 12:30:03]}} [2026-08-21 12:30:03.580] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:30:01Z", "value" => "UNKNOWN"} [2026-08-21 12:30:03.657] [DEBUG] QUERY OK db=76.6ms idle=94.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:01Z", "UNKNOWN", "sim_imsi2", 77984, ~N[2026-08-21 12:30:03], ~N[2026-08-21 12:30:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:03.659] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793341, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:03], updated_at: ~N[2026-08-21 12:30:03]}} [2026-08-21 12:30:03.659] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:30:01Z", "value" => "36"} [2026-08-21 12:30:03.728] [DEBUG] QUERY OK db=66.8ms idle=3.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:01Z", "36", "data_usage_mb", 77984, ~N[2026-08-21 12:30:03], ~N[2026-08-21 12:30:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:03.728] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793342, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:03], updated_at: ~N[2026-08-21 12:30:03]}} [2026-08-21 12:30:03.729] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:30:01Z", "value" => "0"} [2026-08-21 12:30:03.778] [DEBUG] QUERY OK db=46.5ms queue=2.8ms idle=57.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:01Z", "0", "mobile_data_mb", 77984, ~N[2026-08-21 12:30:03], ~N[2026-08-21 12:30:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:03.779] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793343, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:03], updated_at: ~N[2026-08-21 12:30:03]}} [2026-08-21 12:30:03.781] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:30: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:30:03.875] [DEBUG] QUERY OK db=92.3ms queue=0.1ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77984, ~N[2026-08-21 12:30:03], ~N[2026-08-21 12:30:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:03.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793344, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:30:01Z", message: nil, status_log_id: 77984, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:03], updated_at: ~N[2026-08-21 12:30:03]}} [2026-08-21 12:30:03.884] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:29:41Z"} [2026-08-21 12:30:03.884] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:29:41Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 6, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:30:14.821] [WARN ] navigate event to "http://localhost:5329/admin/settlements/summary" failed because you are redirecting across live_sessions. A full page reload will be performed instead [2026-08-21 12:30:15.188] [INFO ] GET /admin/settlements/summary [2026-08-21 12:30:15.188] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 12:30:15.189] [DEBUG] QUERY OK source="users_tokens" db=0.7ms idle=1776.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)) [<<101, 6, 144, 156, 30, 208, 15, 191, 185, 52, 178, 35, 142, 239, 104, 87, 25, 53, 94, 7, 150, 66, 17, 195, 71, 153, 238, 172, 66, 120, 187, 4>>, "session", ~U[2026-08-21 12:30:15.188938Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 12:30:15.211] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.8ms idle=1127.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:30:15.215] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.4ms idle=492.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:30:15.228] [DEBUG] QUERY OK source="core_transactions" db=8.9ms queue=0.5ms idle=10.1ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:30:15.257] [DEBUG] QUERY OK source="core_transactions" db=28.5ms idle=13.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:30:15.272] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=13.5ms idle=29.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:30:15.279] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms queue=1.2ms idle=19.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:30:15.284] [INFO ] Sent 200 in 96ms [2026-08-21 12:30:16.981] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 26µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "HWYUEwRgD0ACHBttOXM-ARwoBGg_GEEQw3mABXb0jln_tCjOHP42VY4w", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 12:30:17.171] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "jUyRF8mphpu2M0TNTx0ZiAug", "live_socket_id" => "users_sessions:ZQaQnB7QD7-5NLIjju9oVxk1XgeWQhHDR5nurEJ4uwQ=", "user_token" => <<101, 6, 144, 156, 30, 208, 15, 191, 185, 52, 178, 35, 142, 239, 104, 87, 25, 53, 94, 7, 150, 66, 17, 195, 71, 153, 238, 172, 66, 120, 187, 4>>} [2026-08-21 12:30:17.174] [DEBUG] QUERY OK source="users_tokens" db=1.7ms queue=0.5ms idle=1759.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)) [<<101, 6, 144, 156, 30, 208, 15, 191, 185, 52, 178, 35, 142, 239, 104, 87, 25, 53, 94, 7, 150, 66, 17, 195, 71, 153, 238, 172, 66, 120, 187, 4>>, "session", ~U[2026-08-21 12:30:17.171893Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 12:30:17.176] [DEBUG] QUERY OK source="core_transactions" db=1.1ms idle=410.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:30:17.179] [DEBUG] QUERY OK source="tid_masters" db=1.1ms queue=1.3ms idle=95.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:30:17.181] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=1.5ms idle=3.4ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:30:17.220] [DEBUG] QUERY OK source="core_transactions" db=37.4ms queue=0.1ms idle=3.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:30:17.223] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=2.0ms idle=38.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:30:17.227] [DEBUG] QUERY OK source="merchant_adjustments" db=2.0ms queue=0.8ms idle=4.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:30:17.227] [DEBUG] Replied in 56ms [2026-08-21 12:30:27.496] [DEBUG] HANDLE EVENT "apply_date_preset" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"preset" => "today", "value" => ""} [2026-08-21 12:30:27.498] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=694.5ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-21], ~D[2026-08-21], ~D[2026-08-21], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:30:27.499] [DEBUG] QUERY OK source="tid_masters" db=0.3ms queue=0.4ms idle=563.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (false) [] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:30:27.500] [DEBUG] QUERY OK source="core_transactions" db=0.6ms queue=0.5ms idle=1.6ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-21], ~D[2026-08-21], ~D[2026-08-21], ~D[2026-08-21], "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:30:27.540] [DEBUG] QUERY OK source="core_transactions" db=38.7ms queue=0.1ms idle=1.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-21], ~D[2026-08-21], ~D[2026-08-21], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:30:27.543] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=2.3ms idle=39.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (false) [] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:30:27.547] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=2.7ms idle=4.0ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-21], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:30:27.547] [DEBUG] Replied in 50ms [2026-08-21 12:30:30.358] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:30:30.358] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:30:30Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:30:30Z","value":"52"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:30:30Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:30:30Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:30:30Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:30:30Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:30:30Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:30:30Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:30:30Z","vendor":"MoreFun"} [2026-08-21 12:30:30.358] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:30:30Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:30:30Z", "value" => "52"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:30:30Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:30:30Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:30:30Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:30:30Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:30:30Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:30:30Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:30:30Z", "vendor" => "MoreFun"} [2026-08-21 12:30:30.359] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:30:30.359] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:30:30.359] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:30:30.360] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1277.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-08-21 12:30:30.361] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=545.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-08-21 12:30:30.363] [DEBUG] QUERY OK source="parameter_template_values" db=1.3ms 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-08-21 12:30:30.366] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=0.9ms idle=2.3ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:30:30.368] [DEBUG] QUERY OK source="pos_terminal" db=1.2ms idle=3.3ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:30:30.407] [DEBUG] QUERY OK source="pos_merchant" db=39.0ms idle=2.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:30:30.408] [DEBUG] QUERY OK db=0.6ms queue=0.5ms idle=1327.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 ["626165170000000"] [2026-08-21 12:30:30.408] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:30:30.410] [DEBUG] QUERY OK source="pos_terminal_data" db=1.2ms idle=41.1ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:30:30.410] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 12:30:30.411] [DEBUG] QUERY OK source="address" db=0.7ms 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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:30:30.411] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:30:30.412] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:30:30.480] [DEBUG] QUERY OK db=66.1ms queue=0.3ms idle=2.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "bd02bffcf22f3e36bd203f4fe93682600a2d21ae04dc865ab78b95ba947b99e9", 1827, 936, ~U[2026-08-21 12:30:30Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:30:30], ~N[2026-08-21 12:30:30]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:30:30.480] [INFO ] AutoPushService: Created push log 49072 for MF919 params.zip [2026-08-21 12:30:30.480] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1827, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:30:30.480] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:30:30.480] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:30:30.481] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=69.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:30:30.489] [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-08-21 12:30:30.552] [DEBUG] QUERY OK db=60.1ms queue=1.1ms idle=10.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e1a5ed5b1cd40bcf3d5196af7135326e0d88da4309265825dffe7a173088e327", 1923, 17947, ~U[2026-08-21 12:30:30Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:30:30], ~N[2026-08-21 12:30:30]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:30:30.552] [INFO ] AutoPushService: Created push log 49073 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:30:30.552] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 1923, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:30:30.552] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:30:30.552] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:30:30.555] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms queue=0.1ms idle=71.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-08-21 12:30:30.555] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:30:30.557] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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-08-21 12:30:30.557] [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-08-21 12:30:30.558] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:30:30.558] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:30:30.558] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:30:30.559] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=3.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:30:30.559] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:30:30.559] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:30:30.560] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=3.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:30:30.664] [DEBUG] QUERY OK source="tms_terminals" db=62.7ms queue=40.7ms idle=1.6ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:30:30], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:30:30.664] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:30:30.664] [INFO ] Event published: terminal_updated [2026-08-21 12:30:30.665] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:30:30.665] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:30:30.665] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:30:30.667] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.8ms idle=104.5ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:30:30], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:30:30.668] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=0.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:30:30.669] [DEBUG] QUERY OK source="terminal_group_rules" db=0.7ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:30:30.669] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:30:30.735] [DEBUG] QUERY OK source="tms_terminals" db=66.8ms queue=0.6ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:30:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:30:30.738] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=66.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-08-21 12:30:30.739] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.2ms idle=3.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:30:30.740] [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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:30:30.741] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:30:30.785] [DEBUG] QUERY OK source="parameter_push_logs" db=43.4ms idle=2.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-08-21 12:00:30]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:30:30.785] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:30:30.785] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:30:30.786] [DEBUG] QUERY OK source="tms_terminals" db=0.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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:30:30.787] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:30:30.787] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:30:30.788] [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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:30:30.881] [DEBUG] QUERY OK source="tms_terminals" db=51.7ms queue=41.1ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:30:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:30:30.963] [DEBUG] QUERY OK db=81.1ms idle=64.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:30:30Z", ~N[2026-08-21 12:30:30], ~N[2026-08-21 12:30:30]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:30:30.963] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77985, oid: "organization_id", upload_time: "2026-08-21T12:30:30Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:30], updated_at: ~N[2026-08-21 12:30:30]} [2026-08-21 12:30:30.963] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:30:30Z", "value" => "online"} [2026-08-21 12:30:31.002] [DEBUG] QUERY OK db=38.9ms idle=82.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:30:30Z", "online", "status", 77985, ~N[2026-08-21 12:30:30], ~N[2026-08-21 12:30:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:31.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793345, itemkey: "status", value: "online", timestamp: "2026-08-21T12:30:30Z", message: "Terminal status update", status_log_id: 77985, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:30], updated_at: ~N[2026-08-21 12:30:30]}} [2026-08-21 12:30:31.003] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:30:31.003] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:30:30Z", "value" => "52"} [2026-08-21 12:30:31.025] [DEBUG] QUERY OK db=21.6ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:30:30Z", "52", "battery", 77985, ~N[2026-08-21 12:30:31], ~N[2026-08-21 12:30:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:31.025] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793346, itemkey: "battery", value: "52", timestamp: "2026-08-21T12:30:30Z", message: "Battery level", status_log_id: 77985, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:31], updated_at: ~N[2026-08-21 12:30:31]}} [2026-08-21 12:30:31.025] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:30:30Z", "value" => "online"} [2026-08-21 12:30:31.063] [DEBUG] QUERY OK db=36.9ms idle=23.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:30:30Z", "online", "network", 77985, ~N[2026-08-21 12:30:31], ~N[2026-08-21 12:30:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:31.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793347, itemkey: "network", value: "online", timestamp: "2026-08-21T12:30:30Z", message: "Network connectivity", status_log_id: 77985, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:31], updated_at: ~N[2026-08-21 12:30:31]}} [2026-08-21 12:30:31.063] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:30:31.063] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:30:30Z", "value" => "0"} [2026-08-21 12:30:31.096] [DEBUG] QUERY OK db=32.1ms queue=0.4ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:30:30Z", "0", "cpu", 77985, ~N[2026-08-21 12:30:31], ~N[2026-08-21 12:30:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:31.098] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793348, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:30:30Z", message: "CPU usage percentage", status_log_id: 77985, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:31], updated_at: ~N[2026-08-21 12:30:31]}} [2026-08-21 12:30:31.098] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:30:30Z", "value" => "1.0.0"} [2026-08-21 12:30:31.117] [DEBUG] QUERY OK db=18.9ms 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-08-21T12:30:30Z", "1.0.0", "parameter_config", 77985, ~N[2026-08-21 12:30:31], ~N[2026-08-21 12:30:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:31.118] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793349, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:30:30Z", message: "Current parameters version", status_log_id: 77985, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:31], updated_at: ~N[2026-08-21 12:30:31]}} [2026-08-21 12:30:31.118] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:30:30Z", "value" => "1.0.1"} [2026-08-21 12:30:31.164] [DEBUG] QUERY OK db=46.2ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:30:30Z", "1.0.1", "emv_config", 77985, ~N[2026-08-21 12:30:31], ~N[2026-08-21 12:30:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:31.165] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793350, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:30:30Z", message: "Current EMV config version", status_log_id: 77985, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:31], updated_at: ~N[2026-08-21 12:30:31]}} [2026-08-21 12:30:31.165] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:30:30Z", "value" => ""} [2026-08-21 12:30:31.256] [DEBUG] QUERY OK db=49.3ms queue=42.0ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:30:30Z", "keys_config", 77985, ~N[2026-08-21 12:30:31], ~N[2026-08-21 12:30:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:31.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793351, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:30:30Z", message: "Current keys config version", status_log_id: 77985, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:31], updated_at: ~N[2026-08-21 12:30:31]}} [2026-08-21 12:30:31.257] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:30:30Z", "value" => "3.8.7.3"} [2026-08-21 12:30:31.329] [DEBUG] QUERY OK db=71.8ms idle=92.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:30:30Z", "3.8.7.3", "application", 77985, ~N[2026-08-21 12:30:31], ~N[2026-08-21 12:30:31]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:31.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793352, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:30:30Z", message: "Current application version", status_log_id: 77985, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:31], updated_at: ~N[2026-08-21 12:30:31]}} [2026-08-21 12:30:31.330] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:30:30Z"} [2026-08-21 12:30:31.333] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:30:30Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 9, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:30:32.295] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:30:32.295] [INFO ] Incoming JSON payload: {"oid":"0fed3c2c-ad1e-490e-aa5a-7d08f68d51e1","sn":"98251226730001","uploadTime":"2026-08-21T12:30:31Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:30:31Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:30:31Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:30:31Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:30:31Z"},{"itemkey":"ram_free_mb","value":"886","timestamp":"2026-08-21T12:30:31Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:30:31Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:30:31Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:30:31Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:30:31Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:30:31Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:30:31Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:30:31Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:30:31Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:30:31Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:30: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:30:32.296] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0fed3c2c-ad1e-490e-aa5a-7d08f68d51e1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:30:31Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:30:31Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:30:31Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:30:31Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:30:31Z", "value" => "886"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:30:31Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:30:31Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:30:31Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:30:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:30:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:30:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:30:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:30:31Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:30:31Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:30:31Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:30: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:30:31Z", "vendor" => "morefun"} [2026-08-21 12:30:32.296] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:30:32.296] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:30:32.297] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:30:32.298] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.2ms idle=967.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-08-21 12:30:32.299] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.3ms idle=478.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 12:30:32.300] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:30:32.307] [DEBUG] QUERY OK source="tms_terminals" db=6.2ms queue=0.1ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:30:32.383] [DEBUG] QUERY OK source="tms_terminals" db=34.9ms queue=41.4ms idle=8.1ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 12:30:32], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:30:32.384] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:30:32.384] [INFO ] Event published: terminal_updated [2026-08-21 12:30:32.384] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:30:32.384] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:30:32.384] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:30:32.385] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms queue=0.2ms idle=77.3ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:30:32], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:30:32.386] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:30:32.387] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms queue=0.1ms idle=0.1ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:30:32.387] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:30:32.509] [DEBUG] QUERY OK source="tms_terminals" db=82.7ms queue=41.4ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 12:30:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:30:32.509] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:30:32.510] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=123.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:30:32.534] [DEBUG] QUERY OK source="tms_terminals" db=22.9ms queue=0.3ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:30:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:30:32.568] [DEBUG] QUERY OK db=33.8ms queue=0.1ms idle=23.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0fed3c2c-ad1e-490e-aa5a-7d08f68d51e1", "2026-08-21T12:30:31Z", ~N[2026-08-21 12:30:32], ~N[2026-08-21 12:30:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:30:32.569] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77986, oid: "0fed3c2c-ad1e-490e-aa5a-7d08f68d51e1", upload_time: "2026-08-21T12:30:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:32], updated_at: ~N[2026-08-21 12:30:32]} [2026-08-21 12:30:32.569] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:30:31Z", "value" => "morefun"} [2026-08-21 12:30:32.626] [DEBUG] QUERY OK db=56.6ms idle=34.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:31Z", "morefun", "vendor", 77986, ~N[2026-08-21 12:30:32], ~N[2026-08-21 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:32.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793353, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:32], updated_at: ~N[2026-08-21 12:30:32]}} [2026-08-21 12:30:32.627] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:30:31Z", "value" => "kiosk_launcher"} [2026-08-21 12:30:32.706] [DEBUG] QUERY OK db=37.5ms queue=41.3ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:31Z", "kiosk_launcher", "model", 77986, ~N[2026-08-21 12:30:32], ~N[2026-08-21 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:32.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793354, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:32], updated_at: ~N[2026-08-21 12:30:32]}} [2026-08-21 12:30:32.708] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:30:31Z", "value" => "1.0"} [2026-08-21 12:30:32.764] [DEBUG] QUERY OK db=55.7ms idle=82.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:31Z", "1.0", "app_version", 77986, ~N[2026-08-21 12:30:32], ~N[2026-08-21 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:32.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793355, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:32], updated_at: ~N[2026-08-21 12:30:32]}} [2026-08-21 12:30:32.765] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:30:31Z", "value" => "13"} [2026-08-21 12:30:32.811] [DEBUG] QUERY OK db=43.5ms idle=61.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:31Z", "13", "android_version", 77986, ~N[2026-08-21 12:30:32], ~N[2026-08-21 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:32.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793356, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:32], updated_at: ~N[2026-08-21 12:30:32]}} [2026-08-21 12:30:32.812] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:30:31Z", "value" => "886"} [2026-08-21 12:30:32.853] [DEBUG] QUERY OK db=41.3ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:31Z", "886", "ram_free_mb", 77986, ~N[2026-08-21 12:30:32], ~N[2026-08-21 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:32.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793357, itemkey: "ram_free_mb", value: "886", timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:32], updated_at: ~N[2026-08-21 12:30:32]}} [2026-08-21 12:30:32.854] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:30:31Z", "value" => "WIFI"} [2026-08-21 12:30:32.896] [DEBUG] QUERY OK db=42.0ms queue=0.1ms idle=30.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:31Z", "WIFI", "network_type", 77986, ~N[2026-08-21 12:30:32], ~N[2026-08-21 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:32.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793358, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:32], updated_at: ~N[2026-08-21 12:30:32]}} [2026-08-21 12:30:32.897] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:30:31Z", "value" => "true"} [2026-08-21 12:30:32.920] [DEBUG] QUERY OK db=22.6ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:31Z", "true", "kiosk_active", 77986, ~N[2026-08-21 12:30:32], ~N[2026-08-21 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:32.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793359, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:32], updated_at: ~N[2026-08-21 12:30:32]}} [2026-08-21 12:30:32.920] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:30:31Z", "value" => ""} [2026-08-21 12:30:32.971] [DEBUG] QUERY OK db=50.2ms queue=0.4ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:30:31Z", "sim_operator", 77986, ~N[2026-08-21 12:30:32], ~N[2026-08-21 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:32.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793360, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:32], updated_at: ~N[2026-08-21 12:30:32]}} [2026-08-21 12:30:32.971] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:30:31Z", "value" => "UNKNOWN"} [2026-08-21 12:30:33.013] [DEBUG] QUERY OK db=41.4ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:31Z", "UNKNOWN", "sim_number", 77986, ~N[2026-08-21 12:30:32], ~N[2026-08-21 12:30:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:33.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793361, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:32], updated_at: ~N[2026-08-21 12:30:32]}} [2026-08-21 12:30:33.014] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:30:31Z", "value" => "UNKNOWN"} [2026-08-21 12:30:33.068] [DEBUG] QUERY OK db=53.8ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:31Z", "UNKNOWN", "sim_iccid", 77986, ~N[2026-08-21 12:30:33], ~N[2026-08-21 12:30:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:33.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793362, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:33], updated_at: ~N[2026-08-21 12:30:33]}} [2026-08-21 12:30:33.068] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:30:31Z", "value" => "UNKNOWN"} [2026-08-21 12:30:33.101] [DEBUG] QUERY OK db=32.0ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:31Z", "UNKNOWN", "sim_imsi", 77986, ~N[2026-08-21 12:30:33], ~N[2026-08-21 12:30:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:33.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793363, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:33], updated_at: ~N[2026-08-21 12:30:33]}} [2026-08-21 12:30:33.101] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:30:31Z", "value" => "UNKNOWN"} [2026-08-21 12:30:33.127] [DEBUG] QUERY OK db=24.6ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:31Z", "UNKNOWN", "sim_iccid2", 77986, ~N[2026-08-21 12:30:33], ~N[2026-08-21 12:30:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:33.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793364, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:33], updated_at: ~N[2026-08-21 12:30:33]}} [2026-08-21 12:30:33.127] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:30:31Z", "value" => "UNKNOWN"} [2026-08-21 12:30:33.186] [DEBUG] QUERY OK db=58.3ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:31Z", "UNKNOWN", "sim_imsi2", 77986, ~N[2026-08-21 12:30:33], ~N[2026-08-21 12:30:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:33.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793365, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:33], updated_at: ~N[2026-08-21 12:30:33]}} [2026-08-21 12:30:33.186] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:30:31Z", "value" => "36"} [2026-08-21 12:30:33.215] [DEBUG] QUERY OK db=27.8ms idle=59.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:31Z", "36", "data_usage_mb", 77986, ~N[2026-08-21 12:30:33], ~N[2026-08-21 12:30:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:33.215] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793366, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:33], updated_at: ~N[2026-08-21 12:30:33]}} [2026-08-21 12:30:33.215] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:30:31Z", "value" => "0"} [2026-08-21 12:30:33.238] [DEBUG] QUERY OK db=22.3ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30:31Z", "0", "mobile_data_mb", 77986, ~N[2026-08-21 12:30:33], ~N[2026-08-21 12:30:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:33.238] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793367, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:33], updated_at: ~N[2026-08-21 12:30:33]}} [2026-08-21 12:30:33.239] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:30: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:30:33.283] [DEBUG] QUERY OK db=42.7ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:30: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77986, ~N[2026-08-21 12:30:33], ~N[2026-08-21 12:30:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:33.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793368, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:30:31Z", message: nil, status_log_id: 77986, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:33], updated_at: ~N[2026-08-21 12:30:33]}} [2026-08-21 12:30:44.789] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:30:44.789] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:30:44Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:30:44Z","value":"52"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:30:44Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:30:44Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:30:44Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:30:44Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:30:44Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:30:44Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:30:44Z","vendor":"MoreFun"} [2026-08-21 12:30:44.789] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:30:44Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:30:44Z", "value" => "52"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:30:44Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:30:44Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:30:44Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:30:44Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:30:44Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:30:44Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:30:44Z", "vendor" => "MoreFun"} [2026-08-21 12:30:44.789] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:30:44.789] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:30:44.789] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:30:44.791] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=1707.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-08-21 12:30:44.793] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=930.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-08-21 12:30:44.794] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms idle=2.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-08-21 12:30:44.796] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.3ms idle=1.4ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:30:44.797] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms idle=2.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:30:44.836] [DEBUG] QUERY OK source="pos_merchant" db=39.3ms idle=1.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:30:44.838] [DEBUG] QUERY OK db=0.5ms queue=0.5ms idle=754.8ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["626165170000000"] [2026-08-21 12:30:44.838] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:30:44.839] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms idle=41.3ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:30:44.839] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 12:30:44.839] [DEBUG] QUERY OK source="address" db=0.2ms idle=2.4ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:30:44.839] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:30:44.842] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:30:44.882] [DEBUG] QUERY OK db=39.5ms idle=3.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8c5632f7d8ff634d42fa5f06a94d780e3b5182147594ce7761b939eabe2fdd4a", 6722, 936, ~U[2026-08-21 12:30:44Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:30:44], ~N[2026-08-21 12:30:44]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:30:44.882] [INFO ] AutoPushService: Created push log 49074 for MF919 params.zip [2026-08-21 12:30:44.883] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 6722, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:30:44.883] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:30:44.883] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:30:44.884] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms queue=0.2ms idle=18.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:30:44.888] [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-08-21 12:30:44.933] [DEBUG] QUERY OK db=43.7ms idle=6.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "040820e3a95ff80a27e174112e9b8741eba5491779c5e11c000e2c6df6efaa59", 6818, 17947, ~U[2026-08-21 12:30:44Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:30:44], ~N[2026-08-21 12:30:44]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:30:44.933] [INFO ] AutoPushService: Created push log 49075 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:30:44.933] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 6818, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:30:44.933] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:30:44.933] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:30:44.935] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms idle=49.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-08-21 12:30:44.935] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:30:44.936] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:30:44.936] [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-08-21 12:30:44.938] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:30:44.938] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:30:44.938] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:30:44.939] [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-08-21 12:30:44.939] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:30:44.939] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:30:44.940] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms 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-08-21 12:30:45.018] [DEBUG] QUERY OK source="tms_terminals" db=77.6ms idle=1.1ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:30:44], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:30:45.018] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:30:45.018] [INFO ] Event published: terminal_updated [2026-08-21 12:30:45.018] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:30:45.020] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:30:45.020] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.3ms idle=78.7ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:30:45], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:30:45.020] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:30:45.024] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms idle=0.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:30:45.025] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms idle=0.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:30:45.025] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:30:45.077] [DEBUG] QUERY OK source="tms_terminals" db=56.3ms queue=0.6ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:30:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:30:45.078] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=53.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-08-21 12:30:45.079] [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-08-21 12:30:45.079] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-08-21 12:30:45.080] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:30:45.099] [DEBUG] QUERY OK source="parameter_push_logs" db=18.6ms 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-08-21 12:00:45]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:30:45.099] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:30:45.099] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:30:45.100] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=19.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:30:45.100] [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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:30:45.101] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:30:45.101] [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-08-21 12:30:45.170] [DEBUG] QUERY OK source="tms_terminals" db=26.8ms queue=40.8ms idle=1.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:30:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:30:45.236] [DEBUG] QUERY OK db=65.9ms idle=68.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:30:44Z", ~N[2026-08-21 12:30:45], ~N[2026-08-21 12:30:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:30:45.236] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77987, oid: "organization_id", upload_time: "2026-08-21T12:30:44Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:45], updated_at: ~N[2026-08-21 12:30:45]} [2026-08-21 12:30:45.237] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:30:44Z", "value" => "online"} [2026-08-21 12:30:45.308] [DEBUG] QUERY OK db=71.2ms idle=67.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:30:44Z", "online", "status", 77987, ~N[2026-08-21 12:30:45], ~N[2026-08-21 12:30:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:45.308] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793369, itemkey: "status", value: "online", timestamp: "2026-08-21T12:30:44Z", message: "Terminal status update", status_log_id: 77987, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:45], updated_at: ~N[2026-08-21 12:30:45]}} [2026-08-21 12:30:45.309] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:30:45.309] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:30:44Z", "value" => "52"} [2026-08-21 12:30:45.357] [DEBUG] QUERY OK db=48.2ms queue=0.2ms idle=72.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:30:44Z", "52", "battery", 77987, ~N[2026-08-21 12:30:45], ~N[2026-08-21 12:30:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:45.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793370, itemkey: "battery", value: "52", timestamp: "2026-08-21T12:30:44Z", message: "Battery level", status_log_id: 77987, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:45], updated_at: ~N[2026-08-21 12:30:45]}} [2026-08-21 12:30:45.358] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:30:44Z", "value" => "online"} [2026-08-21 12:30:45.416] [DEBUG] QUERY OK db=57.9ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:30:44Z", "online", "network", 77987, ~N[2026-08-21 12:30:45], ~N[2026-08-21 12:30:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:45.417] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793371, itemkey: "network", value: "online", timestamp: "2026-08-21T12:30:44Z", message: "Network connectivity", status_log_id: 77987, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:45], updated_at: ~N[2026-08-21 12:30:45]}} [2026-08-21 12:30:45.417] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:30:45.417] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:30:44Z", "value" => "0"} [2026-08-21 12:30:45.469] [DEBUG] QUERY OK db=51.3ms idle=59.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:30:44Z", "0", "cpu", 77987, ~N[2026-08-21 12:30:45], ~N[2026-08-21 12:30:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:45.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793372, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:30:44Z", message: "CPU usage percentage", status_log_id: 77987, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:45], updated_at: ~N[2026-08-21 12:30:45]}} [2026-08-21 12:30:45.469] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:30:44Z", "value" => "1.0.0"} [2026-08-21 12:30:45.501] [DEBUG] QUERY OK db=31.3ms idle=52.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:30:44Z", "1.0.0", "parameter_config", 77987, ~N[2026-08-21 12:30:45], ~N[2026-08-21 12:30:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:45.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793373, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:30:44Z", message: "Current parameters version", status_log_id: 77987, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:45], updated_at: ~N[2026-08-21 12:30:45]}} [2026-08-21 12:30:45.501] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:30:44Z", "value" => "1.0.1"} [2026-08-21 12:30:45.542] [DEBUG] QUERY OK db=40.9ms idle=32.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:30:44Z", "1.0.1", "emv_config", 77987, ~N[2026-08-21 12:30:45], ~N[2026-08-21 12:30:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:45.543] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793374, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:30:44Z", message: "Current EMV config version", status_log_id: 77987, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:45], updated_at: ~N[2026-08-21 12:30:45]}} [2026-08-21 12:30:45.543] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:30:44Z", "value" => ""} [2026-08-21 12:30:45.667] [DEBUG] QUERY OK db=82.6ms queue=41.5ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:30:44Z", "keys_config", 77987, ~N[2026-08-21 12:30:45], ~N[2026-08-21 12:30:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:45.668] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793375, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:30:44Z", message: "Current keys config version", status_log_id: 77987, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:45], updated_at: ~N[2026-08-21 12:30:45]}} [2026-08-21 12:30:45.668] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:30:44Z", "value" => "3.8.7.3"} [2026-08-21 12:30:45.704] [DEBUG] QUERY OK db=35.6ms idle=125.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:30:44Z", "3.8.7.3", "application", 77987, ~N[2026-08-21 12:30:45], ~N[2026-08-21 12:30:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:45.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793376, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:30:44Z", message: "Current application version", status_log_id: 77987, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:45], updated_at: ~N[2026-08-21 12:30:45]}} [2026-08-21 12:30:45.704] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:30:45Z"} [2026-08-21 12:30:45.704] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:30:45Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 13, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:30:51.016] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:30:30Z"} [2026-08-21 12:30:51.016] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:30:30Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 10, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:30:52.592] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:30:52.592] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:30:52Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:30:52Z","value":"52"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:30:52Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:30:52Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:30:52Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:30:52Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:30:52Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:30:52Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:30:52Z","vendor":"MoreFun"} [2026-08-21 12:30:52.592] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:30:52Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:30:52Z", "value" => "52"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:30:52Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:30:52Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:30:52Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:30:52Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:30:52Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:30:52Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:30:52Z", "vendor" => "MoreFun"} [2026-08-21 12:30:52.592] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:30:52.592] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:30:52.592] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:30:52.593] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1510.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-08-21 12:30:52.595] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=708.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-08-21 12:30:52.596] [DEBUG] QUERY OK source="parameter_template_values" db=0.3ms 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-08-21 12:30:52.597] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.5ms idle=0.9ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:30:52.599] [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-08-21 12:30:52.638] [DEBUG] QUERY OK source="pos_merchant" db=38.5ms queue=0.4ms idle=2.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:30:52.640] [DEBUG] QUERY OK db=0.4ms queue=0.8ms idle=556.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 ["626165170000000"] [2026-08-21 12:30:52.640] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:30:52.642] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms queue=0.8ms idle=41.5ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:30:52.642] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 12:30:52.644] [DEBUG] QUERY OK source="address" db=1.7ms idle=3.3ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:30:52.644] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:30:52.646] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:30:52.719] [DEBUG] QUERY OK db=71.8ms idle=5.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "836a02a9645fbbc6192b2dc77faf78dbd91a3506036a24987ec8607efb5d5f01", 325, 936, ~U[2026-08-21 12:30:52Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:30:52], ~N[2026-08-21 12:30:52]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:30:52.720] [INFO ] AutoPushService: Created push log 49076 for MF919 params.zip [2026-08-21 12:30:52.723] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 325, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:30:52.723] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:30:52.724] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:30:52.727] [DEBUG] QUERY OK source="config_file_versions" db=2.2ms idle=81.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-08-21 12:30:52.740] [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-08-21 12:30:52.778] [DEBUG] QUERY OK db=35.3ms idle=23.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3f379dff3f6a2eb98237e521ef65f67a5c2873a5c148e374c88015dd36e2b8f7", 7042, 17947, ~U[2026-08-21 12:30:52Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:30:52], ~N[2026-08-21 12:30:52]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:30:52.778] [INFO ] AutoPushService: Created push log 49077 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:30:52.778] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 7042, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:30:52.778] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:30:52.778] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:30:52.780] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms idle=51.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-08-21 12:30:52.780] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:30:52.781] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=3.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:30:52.781] [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-08-21 12:30:52.783] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:30:52.783] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:30:52.784] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:30:52.785] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.4ms idle=3.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:30:52.788] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:30:52.789] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:30:52.790] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=7.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:30:52.790] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:30:52.867] [DEBUG] QUERY OK source="tms_terminals" db=74.6ms queue=1.9ms idle=5.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:30:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:30:52.869] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=78.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-08-21 12:30:52.870] [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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:30:52.871] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms decode=0.2ms 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-08-21 12:30:52.871] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:30:52.895] [DEBUG] QUERY OK source="parameter_push_logs" db=23.5ms 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-08-21 12:00:52]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:30:52.896] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:30:52.896] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:30:52.898] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=5.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:30:52.899] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.1ms 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-08-21 12:30:52.900] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:30:52.901] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:30:53.136] [DEBUG] QUERY OK source="tms_terminals" db=234.5ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:30:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:30:53.177] [DEBUG] QUERY OK db=40.6ms idle=235.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:30:52Z", ~N[2026-08-21 12:30:53], ~N[2026-08-21 12:30:53]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:30:53.177] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77988, oid: "organization_id", upload_time: "2026-08-21T12:30:52Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:53], updated_at: ~N[2026-08-21 12:30:53]} [2026-08-21 12:30:53.177] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:30:52Z", "value" => "online"} [2026-08-21 12:30:53.215] [DEBUG] QUERY OK db=37.3ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:30:52Z", "online", "status", 77988, ~N[2026-08-21 12:30:53], ~N[2026-08-21 12:30:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:53.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793377, itemkey: "status", value: "online", timestamp: "2026-08-21T12:30:52Z", message: "Terminal status update", status_log_id: 77988, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:53], updated_at: ~N[2026-08-21 12:30:53]}} [2026-08-21 12:30:53.216] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:30:53.216] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:30:52Z", "value" => "52"} [2026-08-21 12:30:53.251] [DEBUG] QUERY OK db=34.3ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:30:52Z", "52", "battery", 77988, ~N[2026-08-21 12:30:53], ~N[2026-08-21 12:30:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:53.251] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793378, itemkey: "battery", value: "52", timestamp: "2026-08-21T12:30:52Z", message: "Battery level", status_log_id: 77988, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:53], updated_at: ~N[2026-08-21 12:30:53]}} [2026-08-21 12:30:53.251] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:30:52Z", "value" => "online"} [2026-08-21 12:30:53.284] [DEBUG] QUERY OK db=32.1ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:30:52Z", "online", "network", 77988, ~N[2026-08-21 12:30:53], ~N[2026-08-21 12:30:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:53.284] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793379, itemkey: "network", value: "online", timestamp: "2026-08-21T12:30:52Z", message: "Network connectivity", status_log_id: 77988, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:53], updated_at: ~N[2026-08-21 12:30:53]}} [2026-08-21 12:30:53.284] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:30:53.285] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:30:52Z", "value" => "0"} [2026-08-21 12:30:53.317] [DEBUG] QUERY OK db=31.4ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:30:52Z", "0", "cpu", 77988, ~N[2026-08-21 12:30:53], ~N[2026-08-21 12:30:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:53.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793380, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:30:52Z", message: "CPU usage percentage", status_log_id: 77988, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:53], updated_at: ~N[2026-08-21 12:30:53]}} [2026-08-21 12:30:53.318] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:30:52Z", "value" => "1.0.0"} [2026-08-21 12:30:53.341] [DEBUG] QUERY OK db=23.5ms idle=33.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:30:52Z", "1.0.0", "parameter_config", 77988, ~N[2026-08-21 12:30:53], ~N[2026-08-21 12:30:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:53.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793381, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:30:52Z", message: "Current parameters version", status_log_id: 77988, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:53], updated_at: ~N[2026-08-21 12:30:53]}} [2026-08-21 12:30:53.342] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:30:52Z", "value" => "1.0.1"} [2026-08-21 12:30:53.377] [DEBUG] QUERY OK db=35.3ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:30:52Z", "1.0.1", "emv_config", 77988, ~N[2026-08-21 12:30:53], ~N[2026-08-21 12:30:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:53.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793382, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:30:52Z", message: "Current EMV config version", status_log_id: 77988, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:53], updated_at: ~N[2026-08-21 12:30:53]}} [2026-08-21 12:30:53.378] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:30:52Z", "value" => ""} [2026-08-21 12:30:53.447] [DEBUG] QUERY OK db=27.3ms queue=41.2ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:30:52Z", "keys_config", 77988, ~N[2026-08-21 12:30:53], ~N[2026-08-21 12:30:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:53.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793383, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:30:52Z", message: "Current keys config version", status_log_id: 77988, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:53], updated_at: ~N[2026-08-21 12:30:53]}} [2026-08-21 12:30:53.448] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:30:52Z", "value" => "3.8.7.3"} [2026-08-21 12:30:53.495] [DEBUG] QUERY OK db=46.3ms idle=70.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:30:52Z", "3.8.7.3", "application", 77988, ~N[2026-08-21 12:30:53], ~N[2026-08-21 12:30:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:30:53.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793384, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:30:52Z", message: "Current application version", status_log_id: 77988, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:30:53], updated_at: ~N[2026-08-21 12:30:53]}} [2026-08-21 12:30:53.495] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:30:52Z"} [2026-08-21 12:30:53.496] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:30:52Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 16, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:31:02.668] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:31:02.668] [INFO ] Incoming JSON payload: {"oid":"36db7f8c-e2ac-4ed3-ba26-9ad620d1e920","sn":"98251226730001","uploadTime":"2026-08-21T12:31:02Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:31:02Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:31:02Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:31:02Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:31:02Z"},{"itemkey":"ram_free_mb","value":"891","timestamp":"2026-08-21T12:31:02Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:31:02Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:31:02Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:31:02Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:31:02Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:31:02Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:31:02Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:31:02Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:31:02Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:31:02Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:31: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:31:02.669] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "36db7f8c-e2ac-4ed3-ba26-9ad620d1e920", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:31:02Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:31:02Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:31:02Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:31:02Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:31:02Z", "value" => "891"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:31:02Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:31:02Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:31:02Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:31:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:31:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:31:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:31:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:31:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:31:02Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:31:02Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:31: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:31:02Z", "vendor" => "morefun"} [2026-08-21 12:31:02.669] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:31:02.669] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:31:02.678] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:31:02.683] [DEBUG] QUERY OK source="parameter_templates" db=5.0ms idle=747.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-08-21 12:31:02.690] [DEBUG] QUERY OK source="parameter_templates" db=6.0ms idle=596.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-08-21 12:31:02.690] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:31:02.701] [DEBUG] QUERY OK source="tms_terminals" db=10.6ms idle=6.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:31:02.775] [DEBUG] QUERY OK source="tms_terminals" db=32.0ms queue=41.7ms idle=11.5ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 12:31:02], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:31:02.775] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:31:02.775] [INFO ] Event published: terminal_updated [2026-08-21 12:31:02.775] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:31:02.776] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:31:02.776] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:31:02.781] [DEBUG] QUERY OK source="terminal_group_memberships" db=5.2ms idle=74.7ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:31:02], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:31:02.789] [DEBUG] QUERY OK source="tms_terminals" db=7.1ms idle=6.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:31:02.795] [DEBUG] QUERY OK source="terminal_group_rules" db=3.6ms idle=3.1ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:31:02.795] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:31:02.877] [DEBUG] QUERY OK source="tms_terminals" db=54.0ms queue=41.2ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 12:31:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:31:02.877] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:31:02.878] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=82.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:31:02.966] [DEBUG] QUERY OK source="tms_terminals" db=84.7ms queue=2.6ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:31:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:31:03.028] [DEBUG] QUERY OK db=61.6ms idle=24.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "36db7f8c-e2ac-4ed3-ba26-9ad620d1e920", "2026-08-21T12:31:02Z", ~N[2026-08-21 12:31:02], ~N[2026-08-21 12:31:02]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:31:03.029] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77989, oid: "36db7f8c-e2ac-4ed3-ba26-9ad620d1e920", upload_time: "2026-08-21T12:31:02Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:02], updated_at: ~N[2026-08-21 12:31:02]} [2026-08-21 12:31:03.029] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:31:02Z", "value" => "morefun"} [2026-08-21 12:31:03.092] [DEBUG] QUERY OK db=59.9ms queue=3.2ms idle=62.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:02Z", "morefun", "vendor", 77989, ~N[2026-08-21 12:31:03], ~N[2026-08-21 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:03.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793385, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:03], updated_at: ~N[2026-08-21 12:31:03]}} [2026-08-21 12:31:03.092] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:31:02Z", "value" => "kiosk_launcher"} [2026-08-21 12:31:03.266] [DEBUG] QUERY OK db=167.6ms queue=0.5ms idle=68.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:02Z", "kiosk_launcher", "model", 77989, ~N[2026-08-21 12:31:03], ~N[2026-08-21 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:03.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793386, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:03], updated_at: ~N[2026-08-21 12:31:03]}} [2026-08-21 12:31:03.267] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:31:02Z", "value" => "1.0"} [2026-08-21 12:31:03.315] [DEBUG] QUERY OK db=48.1ms idle=174.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:02Z", "1.0", "app_version", 77989, ~N[2026-08-21 12:31:03], ~N[2026-08-21 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:03.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793387, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:03], updated_at: ~N[2026-08-21 12:31:03]}} [2026-08-21 12:31:03.316] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:31:02Z", "value" => "13"} [2026-08-21 12:31:03.373] [DEBUG] QUERY OK db=57.3ms idle=51.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:02Z", "13", "android_version", 77989, ~N[2026-08-21 12:31:03], ~N[2026-08-21 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:03.374] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793388, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:03], updated_at: ~N[2026-08-21 12:31:03]}} [2026-08-21 12:31:03.374] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:31:02Z", "value" => "891"} [2026-08-21 12:31:03.414] [DEBUG] QUERY OK db=39.6ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:02Z", "891", "ram_free_mb", 77989, ~N[2026-08-21 12:31:03], ~N[2026-08-21 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:03.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793389, itemkey: "ram_free_mb", value: "891", timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:03], updated_at: ~N[2026-08-21 12:31:03]}} [2026-08-21 12:31:03.414] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:31:02Z", "value" => "WIFI"} [2026-08-21 12:31:03.505] [DEBUG] QUERY OK db=88.0ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:02Z", "WIFI", "network_type", 77989, ~N[2026-08-21 12:31:03], ~N[2026-08-21 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:03.506] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793390, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:03], updated_at: ~N[2026-08-21 12:31:03]}} [2026-08-21 12:31:03.506] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:31:02Z", "value" => "true"} [2026-08-21 12:31:03.576] [DEBUG] QUERY OK db=69.8ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:02Z", "true", "kiosk_active", 77989, ~N[2026-08-21 12:31:03], ~N[2026-08-21 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:03.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793391, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:03], updated_at: ~N[2026-08-21 12:31:03]}} [2026-08-21 12:31:03.576] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:31:02Z", "value" => ""} [2026-08-21 12:31:03.626] [DEBUG] QUERY OK db=47.2ms queue=0.1ms idle=29.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:31:02Z", "sim_operator", 77989, ~N[2026-08-21 12:31:03], ~N[2026-08-21 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:03.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793392, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:03], updated_at: ~N[2026-08-21 12:31:03]}} [2026-08-21 12:31:03.627] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:31:02Z", "value" => "UNKNOWN"} [2026-08-21 12:31:03.700] [DEBUG] QUERY OK db=72.8ms idle=51.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:02Z", "UNKNOWN", "sim_number", 77989, ~N[2026-08-21 12:31:03], ~N[2026-08-21 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:03.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793393, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:03], updated_at: ~N[2026-08-21 12:31:03]}} [2026-08-21 12:31:03.702] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:31:02Z", "value" => "UNKNOWN"} [2026-08-21 12:31:03.761] [DEBUG] QUERY OK db=58.5ms queue=0.1ms idle=78.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:02Z", "UNKNOWN", "sim_iccid", 77989, ~N[2026-08-21 12:31:03], ~N[2026-08-21 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:03.761] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793394, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:03], updated_at: ~N[2026-08-21 12:31:03]}} [2026-08-21 12:31:03.762] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:31:02Z", "value" => "UNKNOWN"} [2026-08-21 12:31:03.821] [DEBUG] QUERY OK db=59.4ms idle=61.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:02Z", "UNKNOWN", "sim_imsi", 77989, ~N[2026-08-21 12:31:03], ~N[2026-08-21 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:03.822] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793395, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:03], updated_at: ~N[2026-08-21 12:31:03]}} [2026-08-21 12:31:03.822] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:31:02Z", "value" => "UNKNOWN"} [2026-08-21 12:31:03.882] [DEBUG] QUERY OK db=52.1ms idle=68.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:02Z", "UNKNOWN", "sim_iccid2", 77989, ~N[2026-08-21 12:31:03], ~N[2026-08-21 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:03.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793396, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:03], updated_at: ~N[2026-08-21 12:31:03]}} [2026-08-21 12:31:03.883] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:31:02Z", "value" => "UNKNOWN"} [2026-08-21 12:31:03.954] [DEBUG] QUERY OK db=70.4ms idle=61.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:02Z", "UNKNOWN", "sim_imsi2", 77989, ~N[2026-08-21 12:31:03], ~N[2026-08-21 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:03.954] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793397, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:03], updated_at: ~N[2026-08-21 12:31:03]}} [2026-08-21 12:31:03.954] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:31:02Z", "value" => "36"} [2026-08-21 12:31:04.020] [DEBUG] QUERY OK db=55.0ms queue=0.2ms idle=11.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:02Z", "36", "data_usage_mb", 77989, ~N[2026-08-21 12:31:03], ~N[2026-08-21 12:31:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:04.024] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793398, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:03], updated_at: ~N[2026-08-21 12:31:03]}} [2026-08-21 12:31:04.024] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:31:02Z", "value" => "0"} [2026-08-21 12:31:04.063] [DEBUG] QUERY OK db=37.9ms queue=0.8ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:02Z", "0", "mobile_data_mb", 77989, ~N[2026-08-21 12:31:04], ~N[2026-08-21 12:31:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:04.064] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793399, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:04], updated_at: ~N[2026-08-21 12:31:04]}} [2026-08-21 12:31:04.064] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:31: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:31:04.119] [DEBUG] QUERY OK db=54.0ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77989, ~N[2026-08-21 12:31:04], ~N[2026-08-21 12:31:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:04.129] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793400, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:31:02Z", message: nil, status_log_id: 77989, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:04], updated_at: ~N[2026-08-21 12:31:04]}} [2026-08-21 12:31:05.353] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:30:45Z"} [2026-08-21 12:31:05.353] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:30:45Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 14, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:31:13.136] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:30:52Z"} [2026-08-21 12:31:13.137] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:30:52Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 17, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:31:32.713] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:31:32.713] [INFO ] Incoming JSON payload: {"oid":"3a8a4e3d-3f7b-41fb-9bbc-1a4a563ce1a5","sn":"98251226730001","uploadTime":"2026-08-21T12:31:32Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:31:32Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:31:32Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:31:32Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:31:32Z"},{"itemkey":"ram_free_mb","value":"890","timestamp":"2026-08-21T12:31:32Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:31:32Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:31:32Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:31:32Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:31:32Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:31:32Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:31:32Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:31:32Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:31:32Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:31:32Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:31: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:31:32.715] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3a8a4e3d-3f7b-41fb-9bbc-1a4a563ce1a5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:31:32Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:31:32Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:31:32Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:31:32Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:31:32Z", "value" => "890"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:31:32Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:31:32Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:31:32Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:31:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:31:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:31:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:31:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:31:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:31:32Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:31:32Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:31: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:31:32Z", "vendor" => "morefun"} [2026-08-21 12:31:32.715] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:31:32.715] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:31:32.715] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:31:32.716] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=821.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-08-21 12:31:32.717] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=624.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-08-21 12:31:32.718] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:31:32.719] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.3ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:31:32.719] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:31:32.836] [DEBUG] QUERY OK source="tms_terminals" db=75.1ms queue=41.3ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:31:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:31:32.836] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:31:32.849] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=129.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-08-21 12:31:32.910] [DEBUG] QUERY OK source="tms_terminals" db=56.6ms queue=4.2ms idle=13.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:31:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:31:32.943] [DEBUG] QUERY OK db=31.4ms queue=0.2ms idle=14.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "3a8a4e3d-3f7b-41fb-9bbc-1a4a563ce1a5", "2026-08-21T12:31:32Z", ~N[2026-08-21 12:31:32], ~N[2026-08-21 12:31:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:31:32.943] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77990, oid: "3a8a4e3d-3f7b-41fb-9bbc-1a4a563ce1a5", upload_time: "2026-08-21T12:31:32Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:32], updated_at: ~N[2026-08-21 12:31:32]} [2026-08-21 12:31:32.943] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:31:32Z", "value" => "morefun"} [2026-08-21 12:31:32.977] [DEBUG] QUERY OK db=33.7ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:32Z", "morefun", "vendor", 77990, ~N[2026-08-21 12:31:32], ~N[2026-08-21 12:31:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:32.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793401, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:32], updated_at: ~N[2026-08-21 12:31:32]}} [2026-08-21 12:31:32.981] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:31:32Z", "value" => "kiosk_launcher"} [2026-08-21 12:31:33.029] [DEBUG] QUERY OK db=47.1ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:32Z", "kiosk_launcher", "model", 77990, ~N[2026-08-21 12:31:32], ~N[2026-08-21 12:31:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.029] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793402, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:32], updated_at: ~N[2026-08-21 12:31:32]}} [2026-08-21 12:31:33.029] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:31:32Z", "value" => "1.0"} [2026-08-21 12:31:33.073] [DEBUG] QUERY OK db=43.5ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:32Z", "1.0", "app_version", 77990, ~N[2026-08-21 12:31:33], ~N[2026-08-21 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793403, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:33], updated_at: ~N[2026-08-21 12:31:33]}} [2026-08-21 12:31:33.080] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:31:32Z", "value" => "13"} [2026-08-21 12:31:33.153] [DEBUG] QUERY OK db=72.6ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:32Z", "13", "android_version", 77990, ~N[2026-08-21 12:31:33], ~N[2026-08-21 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793404, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:33], updated_at: ~N[2026-08-21 12:31:33]}} [2026-08-21 12:31:33.154] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:31:32Z", "value" => "890"} [2026-08-21 12:31:33.178] [DEBUG] QUERY OK db=23.8ms idle=80.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:32Z", "890", "ram_free_mb", 77990, ~N[2026-08-21 12:31:33], ~N[2026-08-21 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.178] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793405, itemkey: "ram_free_mb", value: "890", timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:33], updated_at: ~N[2026-08-21 12:31:33]}} [2026-08-21 12:31:33.178] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:31:32Z", "value" => "WIFI"} [2026-08-21 12:31:33.226] [DEBUG] QUERY OK db=47.5ms idle=25.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:32Z", "WIFI", "network_type", 77990, ~N[2026-08-21 12:31:33], ~N[2026-08-21 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.227] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793406, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:33], updated_at: ~N[2026-08-21 12:31:33]}} [2026-08-21 12:31:33.227] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:31:32Z", "value" => "true"} [2026-08-21 12:31:33.270] [DEBUG] QUERY OK db=43.1ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:32Z", "true", "kiosk_active", 77990, ~N[2026-08-21 12:31:33], ~N[2026-08-21 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793407, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:33], updated_at: ~N[2026-08-21 12:31:33]}} [2026-08-21 12:31:33.271] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:31:32Z", "value" => ""} [2026-08-21 12:31:33.293] [DEBUG] QUERY OK db=22.5ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:31:32Z", "sim_operator", 77990, ~N[2026-08-21 12:31:33], ~N[2026-08-21 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793408, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:33], updated_at: ~N[2026-08-21 12:31:33]}} [2026-08-21 12:31:33.294] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:31:32Z", "value" => "UNKNOWN"} [2026-08-21 12:31:33.335] [DEBUG] QUERY OK db=39.5ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:32Z", "UNKNOWN", "sim_number", 77990, ~N[2026-08-21 12:31:33], ~N[2026-08-21 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.335] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793409, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:33], updated_at: ~N[2026-08-21 12:31:33]}} [2026-08-21 12:31:33.335] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:31:32Z", "value" => "UNKNOWN"} [2026-08-21 12:31:33.364] [DEBUG] QUERY OK db=28.6ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:32Z", "UNKNOWN", "sim_iccid", 77990, ~N[2026-08-21 12:31:33], ~N[2026-08-21 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.364] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793410, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:33], updated_at: ~N[2026-08-21 12:31:33]}} [2026-08-21 12:31:33.364] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:31:32Z", "value" => "UNKNOWN"} [2026-08-21 12:31:33.419] [DEBUG] QUERY OK db=54.3ms idle=30.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:32Z", "UNKNOWN", "sim_imsi", 77990, ~N[2026-08-21 12:31:33], ~N[2026-08-21 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793411, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:33], updated_at: ~N[2026-08-21 12:31:33]}} [2026-08-21 12:31:33.419] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:31:32Z", "value" => "UNKNOWN"} [2026-08-21 12:31:33.464] [DEBUG] QUERY OK db=43.9ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:32Z", "UNKNOWN", "sim_iccid2", 77990, ~N[2026-08-21 12:31:33], ~N[2026-08-21 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.464] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793412, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:33], updated_at: ~N[2026-08-21 12:31:33]}} [2026-08-21 12:31:33.464] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:31:32Z", "value" => "UNKNOWN"} [2026-08-21 12:31:33.488] [DEBUG] QUERY OK db=23.0ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:32Z", "UNKNOWN", "sim_imsi2", 77990, ~N[2026-08-21 12:31:33], ~N[2026-08-21 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793413, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:33], updated_at: ~N[2026-08-21 12:31:33]}} [2026-08-21 12:31:33.488] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:31:32Z", "value" => "36"} [2026-08-21 12:31:33.521] [DEBUG] QUERY OK db=32.7ms idle=24.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31:32Z", "36", "data_usage_mb", 77990, ~N[2026-08-21 12:31:33], ~N[2026-08-21 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793414, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:33], updated_at: ~N[2026-08-21 12:31:33]}} [2026-08-21 12:31:33.521] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:31:32Z", "value" => "0"} [2026-08-21 12:31:33.571] [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-08-21T12:31:32Z", "0", "mobile_data_mb", 77990, ~N[2026-08-21 12:31:33], ~N[2026-08-21 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793415, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:33], updated_at: ~N[2026-08-21 12:31:33]}} [2026-08-21 12:31:33.572] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:31: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:31:33.599] [DEBUG] QUERY OK db=26.1ms idle=1.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:31: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77990, ~N[2026-08-21 12:31:33], ~N[2026-08-21 12:31:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:31:33.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793416, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:31:32Z", message: nil, status_log_id: 77990, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:31:33], updated_at: ~N[2026-08-21 12:31:33]}} [2026-08-21 12:32:02.877] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:32:02.877] [INFO ] Incoming JSON payload: {"oid":"8642cad3-626e-4807-8ba1-927394c60afd","sn":"98251226730001","uploadTime":"2026-08-21T12:32:02Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:32:02Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:32:02Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:32:02Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:32:02Z"},{"itemkey":"ram_free_mb","value":"898","timestamp":"2026-08-21T12:32:02Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:32:02Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:32:02Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:32:02Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:32:02Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:32:02Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:32:02Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:32:02Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:32:02Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:32:02Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:32: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:32:02.899] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8642cad3-626e-4807-8ba1-927394c60afd", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:32:02Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:32:02Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:32:02Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:32:02Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:32:02Z", "value" => "898"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:32:02Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:32:02Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:32:02Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:32:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:32:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:32:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:32:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:32:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:32:02Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:32:02Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:32: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:32:02Z", "vendor" => "morefun"} [2026-08-21 12:32:02.901] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:32:02.901] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:32:02.901] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:32:02.904] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=887.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-08-21 12:32:02.908] [DEBUG] QUERY OK source="parameter_templates" db=4.3ms queue=0.1ms idle=809.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-08-21 12:32:02.908] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:32:02.910] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms 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-08-21 12:32:02.914] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:32:02.982] [DEBUG] QUERY OK source="tms_terminals" db=67.3ms idle=5.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:32:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:32:02.982] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:32:02.984] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=71.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:32:03.030] [DEBUG] QUERY OK source="tms_terminals" db=45.6ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:32:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:32:03.095] [DEBUG] QUERY OK db=64.4ms queue=0.1ms idle=4.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "8642cad3-626e-4807-8ba1-927394c60afd", "2026-08-21T12:32:02Z", ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:32:03.099] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77991, oid: "8642cad3-626e-4807-8ba1-927394c60afd", upload_time: "2026-08-21T12:32:02Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]} [2026-08-21 12:32:03.099] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:32:02Z", "value" => "morefun"} [2026-08-21 12:32:03.216] [DEBUG] QUERY OK db=116.3ms idle=69.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:02Z", "morefun", "vendor", 77991, ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:03.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793417, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]}} [2026-08-21 12:32:03.222] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:32:02Z", "value" => "kiosk_launcher"} [2026-08-21 12:32:03.303] [DEBUG] QUERY OK db=79.4ms idle=127.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:02Z", "kiosk_launcher", "model", 77991, ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:03.307] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793418, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]}} [2026-08-21 12:32:03.307] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:32:02Z", "value" => "1.0"} [2026-08-21 12:32:03.346] [DEBUG] QUERY OK db=37.3ms queue=0.9ms idle=91.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:02Z", "1.0", "app_version", 77991, ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:03.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793419, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]}} [2026-08-21 12:32:03.350] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:32:02Z", "value" => "13"} [2026-08-21 12:32:03.402] [DEBUG] QUERY OK db=52.1ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:02Z", "13", "android_version", 77991, ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:03.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793420, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]}} [2026-08-21 12:32:03.402] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:32:02Z", "value" => "898"} [2026-08-21 12:32:03.473] [DEBUG] QUERY OK db=70.6ms idle=56.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:02Z", "898", "ram_free_mb", 77991, ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:03.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793421, itemkey: "ram_free_mb", value: "898", timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]}} [2026-08-21 12:32:03.474] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:32:02Z", "value" => "WIFI"} [2026-08-21 12:32:03.536] [DEBUG] QUERY OK db=54.7ms queue=0.9ms idle=78.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:02Z", "WIFI", "network_type", 77991, ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:03.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793422, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]}} [2026-08-21 12:32:03.537] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:32:02Z", "value" => "true"} [2026-08-21 12:32:03.608] [DEBUG] QUERY OK db=55.7ms idle=79.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:02Z", "true", "kiosk_active", 77991, ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:03.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793423, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]}} [2026-08-21 12:32:03.609] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:32:02Z", "value" => ""} [2026-08-21 12:32:03.670] [DEBUG] QUERY OK db=57.0ms queue=0.2ms idle=3.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:32:02Z", "sim_operator", 77991, ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:03.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793424, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]}} [2026-08-21 12:32:03.671] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:32:02Z", "value" => "UNKNOWN"} [2026-08-21 12:32:03.718] [DEBUG] QUERY OK db=46.7ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:02Z", "UNKNOWN", "sim_number", 77991, ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:03.720] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793425, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]}} [2026-08-21 12:32:03.720] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:32:02Z", "value" => "UNKNOWN"} [2026-08-21 12:32:03.767] [DEBUG] QUERY OK db=46.2ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:02Z", "UNKNOWN", "sim_iccid", 77991, ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:03.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793426, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]}} [2026-08-21 12:32:03.767] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:32:02Z", "value" => "UNKNOWN"} [2026-08-21 12:32:03.807] [DEBUG] QUERY OK db=39.5ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:02Z", "UNKNOWN", "sim_imsi", 77991, ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:03.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793427, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]}} [2026-08-21 12:32:03.807] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:32:02Z", "value" => "UNKNOWN"} [2026-08-21 12:32:03.913] [DEBUG] QUERY OK db=97.4ms queue=7.9ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:02Z", "UNKNOWN", "sim_iccid2", 77991, ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:03.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793428, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]}} [2026-08-21 12:32:03.913] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:32:02Z", "value" => "UNKNOWN"} [2026-08-21 12:32:03.954] [DEBUG] QUERY OK db=40.3ms idle=106.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:02Z", "UNKNOWN", "sim_imsi2", 77991, ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:03.955] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793429, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]}} [2026-08-21 12:32:03.955] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:32:02Z", "value" => "36"} [2026-08-21 12:32:03.998] [DEBUG] QUERY OK db=43.1ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:02Z", "36", "data_usage_mb", 77991, ~N[2026-08-21 12:32:03], ~N[2026-08-21 12:32:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:03.998] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793430, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:03], updated_at: ~N[2026-08-21 12:32:03]}} [2026-08-21 12:32:04.000] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:32:02Z", "value" => "0"} [2026-08-21 12:32:04.047] [DEBUG] QUERY OK db=45.7ms queue=0.9ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:02Z", "0", "mobile_data_mb", 77991, ~N[2026-08-21 12:32:04], ~N[2026-08-21 12:32:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:04.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793431, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:04], updated_at: ~N[2026-08-21 12:32:04]}} [2026-08-21 12:32:04.055] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:32: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:32:04.132] [DEBUG] QUERY OK db=69.3ms queue=7.4ms idle=7.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77991, ~N[2026-08-21 12:32:04], ~N[2026-08-21 12:32:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:04.133] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793432, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:32:02Z", message: nil, status_log_id: 77991, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:04], updated_at: ~N[2026-08-21 12:32:04]}} [2026-08-21 12:32:33.170] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:32:33.170] [INFO ] Incoming JSON payload: {"oid":"377de274-3234-4808-a00c-9c4d458d73c5","sn":"98251226730001","uploadTime":"2026-08-21T12:32:32Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:32:32Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:32:32Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:32:32Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:32:32Z"},{"itemkey":"ram_free_mb","value":"900","timestamp":"2026-08-21T12:32:32Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:32:32Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:32:32Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:32:32Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:32:32Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:32:32Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:32:32Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:32:32Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:32:32Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:32:32Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:32: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:32:33.171] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "377de274-3234-4808-a00c-9c4d458d73c5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:32:32Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:32:32Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:32:32Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:32:32Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:32:32Z", "value" => "900"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:32:32Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:32:32Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:32:32Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:32:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:32:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:32:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:32:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:32:32Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:32:32Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:32:32Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:32: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:32:32Z", "vendor" => "morefun"} [2026-08-21 12:32:33.171] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:32:33.172] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:32:33.172] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:32:33.172] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1007.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-08-21 12:32:33.173] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=6.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 12:32:33.173] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:32:33.174] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:32:33.175] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:32:33.218] [DEBUG] QUERY OK source="tms_terminals" db=42.7ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:32:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:32:33.218] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:32:33.219] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=43.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:32:33.264] [DEBUG] QUERY OK source="tms_terminals" db=44.0ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:32:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:32:33.308] [DEBUG] QUERY OK db=43.9ms idle=45.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "377de274-3234-4808-a00c-9c4d458d73c5", "2026-08-21T12:32:32Z", ~N[2026-08-21 12:32:33], ~N[2026-08-21 12:32:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:32:33.309] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77992, oid: "377de274-3234-4808-a00c-9c4d458d73c5", upload_time: "2026-08-21T12:32:32Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:33], updated_at: ~N[2026-08-21 12:32:33]} [2026-08-21 12:32:33.309] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:32:32Z", "value" => "morefun"} [2026-08-21 12:32:33.355] [DEBUG] QUERY OK db=45.3ms queue=0.1ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:32Z", "morefun", "vendor", 77992, ~N[2026-08-21 12:32:33], ~N[2026-08-21 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:33.355] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793433, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:33], updated_at: ~N[2026-08-21 12:32:33]}} [2026-08-21 12:32:33.355] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:32:32Z", "value" => "kiosk_launcher"} [2026-08-21 12:32:33.380] [DEBUG] QUERY OK db=24.0ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:32Z", "kiosk_launcher", "model", 77992, ~N[2026-08-21 12:32:33], ~N[2026-08-21 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:33.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793434, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:33], updated_at: ~N[2026-08-21 12:32:33]}} [2026-08-21 12:32:33.380] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:32:32Z", "value" => "1.0"} [2026-08-21 12:32:33.421] [DEBUG] QUERY OK db=39.9ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:32Z", "1.0", "app_version", 77992, ~N[2026-08-21 12:32:33], ~N[2026-08-21 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:33.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793435, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:33], updated_at: ~N[2026-08-21 12:32:33]}} [2026-08-21 12:32:33.421] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:32:32Z", "value" => "13"} [2026-08-21 12:32:33.470] [DEBUG] QUERY OK db=48.9ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:32Z", "13", "android_version", 77992, ~N[2026-08-21 12:32:33], ~N[2026-08-21 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:33.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793436, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:33], updated_at: ~N[2026-08-21 12:32:33]}} [2026-08-21 12:32:33.471] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:32:32Z", "value" => "900"} [2026-08-21 12:32:33.517] [DEBUG] QUERY OK db=45.9ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:32Z", "900", "ram_free_mb", 77992, ~N[2026-08-21 12:32:33], ~N[2026-08-21 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:33.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793437, itemkey: "ram_free_mb", value: "900", timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:33], updated_at: ~N[2026-08-21 12:32:33]}} [2026-08-21 12:32:33.518] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:32:32Z", "value" => "WIFI"} [2026-08-21 12:32:33.556] [DEBUG] QUERY OK db=37.8ms queue=0.1ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:32Z", "WIFI", "network_type", 77992, ~N[2026-08-21 12:32:33], ~N[2026-08-21 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:33.556] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793438, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:33], updated_at: ~N[2026-08-21 12:32:33]}} [2026-08-21 12:32:33.556] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:32:32Z", "value" => "true"} [2026-08-21 12:32:33.596] [DEBUG] QUERY OK db=39.3ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:32Z", "true", "kiosk_active", 77992, ~N[2026-08-21 12:32:33], ~N[2026-08-21 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:33.596] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793439, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:33], updated_at: ~N[2026-08-21 12:32:33]}} [2026-08-21 12:32:33.597] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:32:32Z", "value" => ""} [2026-08-21 12:32:33.644] [DEBUG] QUERY OK db=47.3ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:32:32Z", "sim_operator", 77992, ~N[2026-08-21 12:32:33], ~N[2026-08-21 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:33.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793440, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:33], updated_at: ~N[2026-08-21 12:32:33]}} [2026-08-21 12:32:33.645] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:32:32Z", "value" => "UNKNOWN"} [2026-08-21 12:32:33.818] [DEBUG] QUERY OK db=173.3ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:32Z", "UNKNOWN", "sim_number", 77992, ~N[2026-08-21 12:32:33], ~N[2026-08-21 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:33.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793441, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:33], updated_at: ~N[2026-08-21 12:32:33]}} [2026-08-21 12:32:33.819] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:32:32Z", "value" => "UNKNOWN"} [2026-08-21 12:32:34.048] [DEBUG] QUERY OK db=228.5ms idle=126.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:32Z", "UNKNOWN", "sim_iccid", 77992, ~N[2026-08-21 12:32:33], ~N[2026-08-21 12:32:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:34.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793442, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:33], updated_at: ~N[2026-08-21 12:32:33]}} [2026-08-21 12:32:34.048] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:32:32Z", "value" => "UNKNOWN"} [2026-08-21 12:32:34.124] [DEBUG] QUERY OK db=74.8ms idle=229.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:32Z", "UNKNOWN", "sim_imsi", 77992, ~N[2026-08-21 12:32:34], ~N[2026-08-21 12:32:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:34.124] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793443, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:34], updated_at: ~N[2026-08-21 12:32:34]}} [2026-08-21 12:32:34.124] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:32:32Z", "value" => "UNKNOWN"} [2026-08-21 12:32:34.185] [DEBUG] QUERY OK db=60.2ms idle=76.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:32Z", "UNKNOWN", "sim_iccid2", 77992, ~N[2026-08-21 12:32:34], ~N[2026-08-21 12:32:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:34.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793444, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:34], updated_at: ~N[2026-08-21 12:32:34]}} [2026-08-21 12:32:34.188] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:32:32Z", "value" => "UNKNOWN"} [2026-08-21 12:32:34.285] [DEBUG] QUERY OK db=95.4ms queue=0.4ms idle=19.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:32Z", "UNKNOWN", "sim_imsi2", 77992, ~N[2026-08-21 12:32:34], ~N[2026-08-21 12:32:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:34.286] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793445, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:34], updated_at: ~N[2026-08-21 12:32:34]}} [2026-08-21 12:32:34.286] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:32:32Z", "value" => "36"} [2026-08-21 12:32:34.330] [DEBUG] QUERY OK db=44.4ms idle=101.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:32Z", "36", "data_usage_mb", 77992, ~N[2026-08-21 12:32:34], ~N[2026-08-21 12:32:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:34.331] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793446, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:34], updated_at: ~N[2026-08-21 12:32:34]}} [2026-08-21 12:32:34.331] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:32:32Z", "value" => "0"} [2026-08-21 12:32:34.378] [DEBUG] QUERY OK db=47.2ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32:32Z", "0", "mobile_data_mb", 77992, ~N[2026-08-21 12:32:34], ~N[2026-08-21 12:32:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:34.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793447, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:34], updated_at: ~N[2026-08-21 12:32:34]}} [2026-08-21 12:32:34.380] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:32: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:32:34.451] [DEBUG] QUERY OK db=69.8ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:32: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77992, ~N[2026-08-21 12:32:34], ~N[2026-08-21 12:32:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:34.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793448, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:32:32Z", message: nil, status_log_id: 77992, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:34], updated_at: ~N[2026-08-21 12:32:34]}} [2026-08-21 12:32:55.644] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 12:32:55.644] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T16:32:53Z","org.device":[{"itemkey":"battery","value":44,"timestamp":"2026-08-21T16:32:53Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T16:32:53Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T16:32:53Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T16:32:53Z","message":""}]} [2026-08-21 12:32:55.644] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T16:32:53Z", "value" => 44}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T16:32:53Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T16:32:53Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T16:32:53Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T16:32:53Z"} [2026-08-21 12:32:55.644] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:32:55.645] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=547.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:32:55.646] [INFO ] Terminal updated: 61250415798001 [2026-08-21 12:32:55.738] [DEBUG] QUERY OK source="tms_terminals" db=91.7ms idle=404.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:32:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:32:55.739] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=92.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:32:55.803] [DEBUG] QUERY OK source="tms_terminals" db=63.8ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:32:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:32:56.025] [DEBUG] QUERY OK db=221.4ms idle=64.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T16:32:53Z", ~N[2026-08-21 12:32:55], ~N[2026-08-21 12:32:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:32:56.025] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77993, oid: "org-id-placeholder", upload_time: "2026-08-21T16:32:53Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:55], updated_at: ~N[2026-08-21 12:32:55]} [2026-08-21 12:32:56.025] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T16:32:53Z", "value" => 44} [2026-08-21 12:32:56.068] [DEBUG] QUERY OK db=41.7ms idle=223.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:32:53Z", "44", "battery", 77993, ~N[2026-08-21 12:32:56], ~N[2026-08-21 12:32:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:56.068] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793449, itemkey: "battery", value: "44", timestamp: "2026-08-21T16:32:53Z", message: nil, status_log_id: 77993, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:56], updated_at: ~N[2026-08-21 12:32:56]}} [2026-08-21 12:32:56.068] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T16:32:53Z", "value" => 50} [2026-08-21 12:32:56.113] [DEBUG] QUERY OK db=44.4ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T16:32:53Z", "50", "memory", 77993, ~N[2026-08-21 12:32:56], ~N[2026-08-21 12:32:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:56.115] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793450, itemkey: "memory", value: "50", timestamp: "2026-08-21T16:32:53Z", message: "Normal", status_log_id: 77993, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:56], updated_at: ~N[2026-08-21 12:32:56]}} [2026-08-21 12:32:56.115] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T16:32:53Z", "value" => 50} [2026-08-21 12:32:56.158] [DEBUG] QUERY OK db=42.0ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:32:53Z", "50", "cpu", 77993, ~N[2026-08-21 12:32:56], ~N[2026-08-21 12:32:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:56.159] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793451, itemkey: "cpu", value: "50", timestamp: "2026-08-21T16:32:53Z", message: nil, status_log_id: 77993, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:56], updated_at: ~N[2026-08-21 12:32:56]}} [2026-08-21 12:32:56.159] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T16:32:53Z", "value" => "online"} [2026-08-21 12:32:56.183] [DEBUG] QUERY OK db=23.4ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:32:53Z", "online", "network", 77993, ~N[2026-08-21 12:32:56], ~N[2026-08-21 12:32:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:32:56.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793452, itemkey: "network", value: "online", timestamp: "2026-08-21T16:32:53Z", message: nil, status_log_id: 77993, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:32:56], updated_at: ~N[2026-08-21 12:32:56]}} [2026-08-21 12:32:56.183] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 12:33:03.282] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:33:03.286] [INFO ] Incoming JSON payload: {"oid":"0c7e8724-d2ab-4140-808a-a98275f91527","sn":"98251226730001","uploadTime":"2026-08-21T12:33:02Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:33:02Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:33:02Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:33:02Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:33:02Z"},{"itemkey":"ram_free_mb","value":"896","timestamp":"2026-08-21T12:33:02Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:33:02Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:33:02Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:33:02Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:33:02Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:33:02Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:33:02Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:33:02Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:33:02Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:33:02Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:33: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:33:03.296] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0c7e8724-d2ab-4140-808a-a98275f91527", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:33:02Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:33:02Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:33:02Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:33:02Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:33:02Z", "value" => "896"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:33:02Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:33:02Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:33:02Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:33:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:33:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:33:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:33:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:33:02Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:33:02Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:33:02Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:33: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:33:02Z", "vendor" => "morefun"} [2026-08-21 12:33:03.296] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:33:03.296] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:33:03.305] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:33:03.307] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=1038.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-08-21 12:33:03.308] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=22.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-08-21 12:33:03.308] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:33:03.311] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=3.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:33:03.313] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:33:03.344] [DEBUG] QUERY OK source="tms_terminals" db=30.6ms idle=4.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:33:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:33:03.345] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:33:03.349] [DEBUG] QUERY OK source="tms_terminals" db=3.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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:33:03.399] [DEBUG] QUERY OK source="tms_terminals" db=41.4ms idle=13.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:33:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:33:03.448] [DEBUG] QUERY OK db=48.4ms idle=50.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0c7e8724-d2ab-4140-808a-a98275f91527", "2026-08-21T12:33:02Z", ~N[2026-08-21 12:33:03], ~N[2026-08-21 12:33:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:33:03.448] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77994, oid: "0c7e8724-d2ab-4140-808a-a98275f91527", upload_time: "2026-08-21T12:33:02Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:03], updated_at: ~N[2026-08-21 12:33:03]} [2026-08-21 12:33:03.449] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:33:02Z", "value" => "morefun"} [2026-08-21 12:33:03.495] [DEBUG] QUERY OK db=42.6ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:02Z", "morefun", "vendor", 77994, ~N[2026-08-21 12:33:03], ~N[2026-08-21 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:03.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793453, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:03], updated_at: ~N[2026-08-21 12:33:03]}} [2026-08-21 12:33:03.496] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:33:02Z", "value" => "kiosk_launcher"} [2026-08-21 12:33:03.537] [DEBUG] QUERY OK db=40.2ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:02Z", "kiosk_launcher", "model", 77994, ~N[2026-08-21 12:33:03], ~N[2026-08-21 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:03.537] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793454, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:03], updated_at: ~N[2026-08-21 12:33:03]}} [2026-08-21 12:33:03.537] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:33:02Z", "value" => "1.0"} [2026-08-21 12:33:03.594] [DEBUG] QUERY OK db=53.9ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:02Z", "1.0", "app_version", 77994, ~N[2026-08-21 12:33:03], ~N[2026-08-21 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:03.595] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793455, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:03], updated_at: ~N[2026-08-21 12:33:03]}} [2026-08-21 12:33:03.595] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:33:02Z", "value" => "13"} [2026-08-21 12:33:03.658] [DEBUG] QUERY OK db=63.3ms idle=58.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:02Z", "13", "android_version", 77994, ~N[2026-08-21 12:33:03], ~N[2026-08-21 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:03.659] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793456, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:03], updated_at: ~N[2026-08-21 12:33:03]}} [2026-08-21 12:33:03.659] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:33:02Z", "value" => "896"} [2026-08-21 12:33:03.728] [DEBUG] QUERY OK db=68.6ms idle=67.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:02Z", "896", "ram_free_mb", 77994, ~N[2026-08-21 12:33:03], ~N[2026-08-21 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:03.728] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793457, itemkey: "ram_free_mb", value: "896", timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:03], updated_at: ~N[2026-08-21 12:33:03]}} [2026-08-21 12:33:03.728] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:33:02Z", "value" => "WIFI"} [2026-08-21 12:33:03.765] [DEBUG] QUERY OK db=35.1ms queue=1.8ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:02Z", "WIFI", "network_type", 77994, ~N[2026-08-21 12:33:03], ~N[2026-08-21 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:03.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793458, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:03], updated_at: ~N[2026-08-21 12:33:03]}} [2026-08-21 12:33:03.767] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:33:02Z", "value" => "true"} [2026-08-21 12:33:03.815] [DEBUG] QUERY OK db=47.1ms idle=17.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:02Z", "true", "kiosk_active", 77994, ~N[2026-08-21 12:33:03], ~N[2026-08-21 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:03.815] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793459, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:03], updated_at: ~N[2026-08-21 12:33:03]}} [2026-08-21 12:33:03.817] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:33:02Z", "value" => ""} [2026-08-21 12:33:03.859] [DEBUG] QUERY OK db=41.7ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:33:02Z", "sim_operator", 77994, ~N[2026-08-21 12:33:03], ~N[2026-08-21 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:03.860] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793460, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:03], updated_at: ~N[2026-08-21 12:33:03]}} [2026-08-21 12:33:03.860] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:33:02Z", "value" => "UNKNOWN"} [2026-08-21 12:33:03.928] [DEBUG] QUERY OK db=63.1ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:02Z", "UNKNOWN", "sim_number", 77994, ~N[2026-08-21 12:33:03], ~N[2026-08-21 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:03.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793461, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:03], updated_at: ~N[2026-08-21 12:33:03]}} [2026-08-21 12:33:03.930] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:33:02Z", "value" => "UNKNOWN"} [2026-08-21 12:33:03.973] [DEBUG] QUERY OK db=43.2ms idle=70.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:02Z", "UNKNOWN", "sim_iccid", 77994, ~N[2026-08-21 12:33:03], ~N[2026-08-21 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:03.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793462, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:03], updated_at: ~N[2026-08-21 12:33:03]}} [2026-08-21 12:33:03.974] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:33:02Z", "value" => "UNKNOWN"} [2026-08-21 12:33:04.039] [DEBUG] QUERY OK db=64.8ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:02Z", "UNKNOWN", "sim_imsi", 77994, ~N[2026-08-21 12:33:03], ~N[2026-08-21 12:33:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:04.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793463, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:03], updated_at: ~N[2026-08-21 12:33:03]}} [2026-08-21 12:33:04.040] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:33:02Z", "value" => "UNKNOWN"} [2026-08-21 12:33:04.100] [DEBUG] QUERY OK db=58.3ms idle=67.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:02Z", "UNKNOWN", "sim_iccid2", 77994, ~N[2026-08-21 12:33:04], ~N[2026-08-21 12:33:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:04.100] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793464, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:04], updated_at: ~N[2026-08-21 12:33:04]}} [2026-08-21 12:33:04.100] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:33:02Z", "value" => "UNKNOWN"} [2026-08-21 12:33:04.141] [DEBUG] QUERY OK db=40.7ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:02Z", "UNKNOWN", "sim_imsi2", 77994, ~N[2026-08-21 12:33:04], ~N[2026-08-21 12:33:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:04.142] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793465, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:04], updated_at: ~N[2026-08-21 12:33:04]}} [2026-08-21 12:33:04.142] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:33:02Z", "value" => "36"} [2026-08-21 12:33:04.199] [DEBUG] QUERY OK db=56.8ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:02Z", "36", "data_usage_mb", 77994, ~N[2026-08-21 12:33:04], ~N[2026-08-21 12:33:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:04.199] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793466, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:04], updated_at: ~N[2026-08-21 12:33:04]}} [2026-08-21 12:33:04.199] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:33:02Z", "value" => "0"} [2026-08-21 12:33:04.244] [DEBUG] QUERY OK db=44.2ms idle=58.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:02Z", "0", "mobile_data_mb", 77994, ~N[2026-08-21 12:33:04], ~N[2026-08-21 12:33:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:04.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793467, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:04], updated_at: ~N[2026-08-21 12:33:04]}} [2026-08-21 12:33:04.245] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:33: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:33:04.290] [DEBUG] QUERY OK db=38.7ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77994, ~N[2026-08-21 12:33:04], ~N[2026-08-21 12:33:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:04.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793468, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:33:02Z", message: nil, status_log_id: 77994, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:04], updated_at: ~N[2026-08-21 12:33:04]}} [2026-08-21 12:33:33.373] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:33:33.374] [INFO ] Incoming JSON payload: {"oid":"3ff35092-d735-4cb7-8d7a-c116bd7e2aee","sn":"98251226730001","uploadTime":"2026-08-21T12:33:33Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"ram_free_mb","value":"893","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:33:33Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:33:33.375] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3ff35092-d735-4cb7-8d7a-c116bd7e2aee", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:33:33Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:33:33Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:33:33Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:33:33Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:33:33Z", "value" => "893"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:33:33Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:33:33Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:33:33Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:33:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:33:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:33:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:33:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:33:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:33:33Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:33:33Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:33:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:33:33Z", "vendor" => "morefun"} [2026-08-21 12:33:33.375] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:33:33.375] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:33:33.375] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:33:33.376] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.2ms idle=1265.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-08-21 12:33:33.378] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=796.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-08-21 12:33:33.379] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:33:33.380] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.2ms idle=2.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:33:33.380] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:33:33.404] [DEBUG] QUERY OK source="tms_terminals" db=23.6ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:33:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:33:33.404] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:33:33.406] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=24.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-08-21 12:33:33.455] [DEBUG] QUERY OK source="tms_terminals" db=48.3ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:33:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:33:33.514] [DEBUG] QUERY OK db=56.1ms idle=51.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "3ff35092-d735-4cb7-8d7a-c116bd7e2aee", "2026-08-21T12:33:33Z", ~N[2026-08-21 12:33:33], ~N[2026-08-21 12:33:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:33:33.515] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77995, oid: "3ff35092-d735-4cb7-8d7a-c116bd7e2aee", upload_time: "2026-08-21T12:33:33Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:33], updated_at: ~N[2026-08-21 12:33:33]} [2026-08-21 12:33:33.515] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:33:33Z", "value" => "morefun"} [2026-08-21 12:33:33.572] [DEBUG] QUERY OK db=57.5ms idle=59.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "morefun", "vendor", 77995, ~N[2026-08-21 12:33:33], ~N[2026-08-21 12:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:33.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793469, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:33], updated_at: ~N[2026-08-21 12:33:33]}} [2026-08-21 12:33:33.573] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:33:33Z", "value" => "kiosk_launcher"} [2026-08-21 12:33:33.608] [DEBUG] QUERY OK db=34.4ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "kiosk_launcher", "model", 77995, ~N[2026-08-21 12:33:33], ~N[2026-08-21 12:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:33.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793470, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:33], updated_at: ~N[2026-08-21 12:33:33]}} [2026-08-21 12:33:33.611] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:33:33Z", "value" => "1.0"} [2026-08-21 12:33:33.663] [DEBUG] QUERY OK db=50.5ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "1.0", "app_version", 77995, ~N[2026-08-21 12:33:33], ~N[2026-08-21 12:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:33.664] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793471, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:33], updated_at: ~N[2026-08-21 12:33:33]}} [2026-08-21 12:33:33.664] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:33:33Z", "value" => "13"} [2026-08-21 12:33:33.711] [DEBUG] QUERY OK db=45.9ms queue=0.2ms idle=56.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "13", "android_version", 77995, ~N[2026-08-21 12:33:33], ~N[2026-08-21 12:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:33.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793472, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:33], updated_at: ~N[2026-08-21 12:33:33]}} [2026-08-21 12:33:33.711] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:33:33Z", "value" => "893"} [2026-08-21 12:33:33.764] [DEBUG] QUERY OK db=51.9ms idle=48.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "893", "ram_free_mb", 77995, ~N[2026-08-21 12:33:33], ~N[2026-08-21 12:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:33.764] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793473, itemkey: "ram_free_mb", value: "893", timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:33], updated_at: ~N[2026-08-21 12:33:33]}} [2026-08-21 12:33:33.765] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:33:33Z", "value" => "WIFI"} [2026-08-21 12:33:33.804] [DEBUG] QUERY OK db=38.7ms idle=1.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "WIFI", "network_type", 77995, ~N[2026-08-21 12:33:33], ~N[2026-08-21 12:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:33.804] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793474, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:33], updated_at: ~N[2026-08-21 12:33:33]}} [2026-08-21 12:33:33.804] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:33:33Z", "value" => "true"} [2026-08-21 12:33:33.842] [DEBUG] QUERY OK db=36.3ms idle=9.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "true", "kiosk_active", 77995, ~N[2026-08-21 12:33:33], ~N[2026-08-21 12:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:33.842] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793475, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:33], updated_at: ~N[2026-08-21 12:33:33]}} [2026-08-21 12:33:33.844] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:33:33Z", "value" => ""} [2026-08-21 12:33:33.899] [DEBUG] QUERY OK db=54.5ms idle=40.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:33:33Z", "sim_operator", 77995, ~N[2026-08-21 12:33:33], ~N[2026-08-21 12:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:33.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793476, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:33], updated_at: ~N[2026-08-21 12:33:33]}} [2026-08-21 12:33:33.900] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:33:33Z", "value" => "UNKNOWN"} [2026-08-21 12:33:33.924] [DEBUG] QUERY OK db=24.0ms idle=59.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "UNKNOWN", "sim_number", 77995, ~N[2026-08-21 12:33:33], ~N[2026-08-21 12:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:33.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793477, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:33], updated_at: ~N[2026-08-21 12:33:33]}} [2026-08-21 12:33:33.925] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:33:33Z", "value" => "UNKNOWN"} [2026-08-21 12:33:33.960] [DEBUG] QUERY OK db=34.5ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "UNKNOWN", "sim_iccid", 77995, ~N[2026-08-21 12:33:33], ~N[2026-08-21 12:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:33.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793478, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:33], updated_at: ~N[2026-08-21 12:33:33]}} [2026-08-21 12:33:33.960] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:33:33Z", "value" => "UNKNOWN"} [2026-08-21 12:33:34.003] [DEBUG] QUERY OK db=42.3ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "UNKNOWN", "sim_imsi", 77995, ~N[2026-08-21 12:33:33], ~N[2026-08-21 12:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:34.003] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793479, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:33], updated_at: ~N[2026-08-21 12:33:33]}} [2026-08-21 12:33:34.003] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:33:33Z", "value" => "UNKNOWN"} [2026-08-21 12:33:34.043] [DEBUG] QUERY OK db=38.9ms queue=0.1ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "UNKNOWN", "sim_iccid2", 77995, ~N[2026-08-21 12:33:34], ~N[2026-08-21 12:33:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:34.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793480, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:34], updated_at: ~N[2026-08-21 12:33:34]}} [2026-08-21 12:33:34.043] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:33:33Z", "value" => "UNKNOWN"} [2026-08-21 12:33:34.079] [DEBUG] QUERY OK db=35.8ms idle=40.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "UNKNOWN", "sim_imsi2", 77995, ~N[2026-08-21 12:33:34], ~N[2026-08-21 12:33:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:34.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793481, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:34], updated_at: ~N[2026-08-21 12:33:34]}} [2026-08-21 12:33:34.080] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:33:33Z", "value" => "36"} [2026-08-21 12:33:34.147] [DEBUG] QUERY OK db=66.7ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "36", "data_usage_mb", 77995, ~N[2026-08-21 12:33:34], ~N[2026-08-21 12:33:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:34.148] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793482, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:34], updated_at: ~N[2026-08-21 12:33:34]}} [2026-08-21 12:33:34.148] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:33:33Z", "value" => "0"} [2026-08-21 12:33:34.182] [DEBUG] QUERY OK db=33.4ms idle=68.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "0", "mobile_data_mb", 77995, ~N[2026-08-21 12:33:34], ~N[2026-08-21 12:33:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:34.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793483, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:34], updated_at: ~N[2026-08-21 12:33:34]}} [2026-08-21 12:33:34.183] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:33:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:33:34.289] [DEBUG] QUERY OK db=105.3ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:33:33Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77995, ~N[2026-08-21 12:33:34], ~N[2026-08-21 12:33:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:34.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793484, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:33:33Z", message: nil, status_log_id: 77995, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:34], updated_at: ~N[2026-08-21 12:33:34]}} [2026-08-21 12:33:35.461] [INFO ] Running offline device check... [2026-08-21 12:33:35.461] [INFO ] Starting offline device check... [2026-08-21 12:33:35.465] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=3.3ms idle=1172.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 12:33:35.473] [INFO ] Starting scheduled rule validation [2026-08-21 12:33:35.474] [DEBUG] Validating missing assignments [2026-08-21 12:33:35.475] [DEBUG] QUERY OK source="terminal_group_rules" db=0.7ms idle=8.5ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-08-21 12:33:35.476] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=0.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-08-21 12:33:35.477] [DEBUG] Re-applied 0 rules during validation [2026-08-21 12:33:35.477] [DEBUG] Validating invalid assignments [2026-08-21 12:33:35.477] [DEBUG] Validating rule consistency [2026-08-21 12:33:35.477] [DEBUG] Updating group terminal counts [2026-08-21 12:33:35.478] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.4ms queue=0.3ms idle=876.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:33:35.490] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.492] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms 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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.493] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.495] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.496] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.496] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms queue=1.0ms idle=1.6ms 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-08-21 12:33:35.497] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms decode=0.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.499] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.2ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.500] [DEBUG] QUERY OK source="terminal_groups" db=1.2ms queue=0.6ms idle=0.9ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:249 [2026-08-21 12:33:35.500] [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-08-21 12:33:35.501] [DEBUG] QUERY OK source="terminal_groups" db=0.2ms queue=0.4ms idle=1.3ms 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-08-21 12:33:35.502] [DEBUG] QUERY OK source="terminal_group_rules" db=0.2ms queue=0.2ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:258 [2026-08-21 12:33:35.503] [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 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.503] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms queue=0.7ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:259 [2026-08-21 12:33:35.507] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms queue=2.7ms 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-08-21 12:33:35.509] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.8ms queue=1.1ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:262 [2026-08-21 12:33:35.511] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.512] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.2ms queue=1.0ms idle=0.7ms SELECT t0.`assignment_type`, count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) GROUP BY t0.`assignment_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:269 [2026-08-21 12:33:35.512] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 0, total: 0, by_type: %{}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-08-21 12:33:35.512] [INFO ] Rule validation completed - applied 0 fixes [2026-08-21 12:33:35.512] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.535] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.546] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.8ms idle=23.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:33:35.550] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=11.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.553] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.554] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.582] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=26.4ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.583] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=27.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:33:35.584] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.587] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.589] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.590] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.633] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=42.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.635] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.6ms idle=37.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:33:35.636] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.646] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.648] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=11.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.650] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 12:33:35.651] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.653] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.659] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.660] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.662] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.663] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.666] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.669] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=0.1ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.670] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.671] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.672] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.673] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.674] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.679] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.680] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.681] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.681] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.682] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.683] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.683] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.685] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.685] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.686] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:33:35.686] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 12:33:35.687] [INFO ] Offline device check completed successfully [2026-08-21 12:33:40.333] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 12:33:40.333] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T03:43:05Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T03:43:05Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T03:43:05Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T03:43:05Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T03:43:05Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T03:43:05Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T03:43:05Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T03:43:05Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T03:43:05Z","vendor":"MoreFun"} [2026-08-21 12:33:40.334] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:43:05Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:43:05Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:43:05Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:43:05Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:43:05Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:43:05Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:43:05Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:43:05Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T03:43:05Z", "vendor" => "MoreFun"} [2026-08-21 12:33:40.334] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:33:40.334] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 12:33:40.335] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 12:33:40.336] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.2ms idle=720.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 12:33:40.337] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=225.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 12:33:40.339] [DEBUG] QUERY OK source="parameter_template_values" db=1.2ms idle=1.7ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:33:40.342] [DEBUG] QUERY OK source="parameter_definitions" db=1.7ms queue=0.3ms 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-08-21 12:33:40.343] [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 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:33:40.384] [DEBUG] QUERY OK source="pos_merchant" db=40.1ms idle=1.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:33:40.386] [DEBUG] QUERY OK db=0.8ms queue=0.8ms idle=1535.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 ["123451234512345"] [2026-08-21 12:33:40.386] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:33:40.388] [DEBUG] QUERY OK source="pos_terminal_data" db=1.2ms 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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:33:40.388] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 12:33:40.389] [DEBUG] QUERY OK source="address" db=1.0ms idle=4.7ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:33:40.389] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 12:33:40.394] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 12:33:40.440] [DEBUG] QUERY OK db=44.8ms idle=7.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3b0c6e6bc8a58c86ca7884207e65c029efb9540c936d1779fd9591fdc4907034", 7554, 932, ~U[2026-08-21 12:33:40Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:33:40], ~N[2026-08-21 12:33:40]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:33:40.440] [INFO ] AutoPushService: Created push log 49078 for MF919 params.zip [2026-08-21 12:33:40.441] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 7554, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:33:40.441] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:33:40.448] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 12:33:40.451] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms idle=58.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:33:40.460] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 12:33:40.518] [DEBUG] QUERY OK db=56.4ms idle=21.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "52857597cf1700136c53333564ca3863a3b3caa8429a9e4dbd177631da024f9b", 7650, 17947, ~U[2026-08-21 12:33:40Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:33:40], ~N[2026-08-21 12:33:40]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:33:40.520] [INFO ] AutoPushService: Created push log 49079 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:33:40.520] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 7650, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:33:40.520] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:33:40.520] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 12:33:40.521] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=69.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 12:33:40.522] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 12:33:40.524] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:33:40.524] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 12:33:40.526] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:33:40.526] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:33:40.526] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:33:40.528] [DEBUG] QUERY OK source="config_file_versions" db=2.2ms idle=4.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:33:40.530] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:33:40.530] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 12:33:40.532] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.4ms idle=6.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:33:40.534] [INFO ] Terminal updated: 98250623730001 [2026-08-21 12:33:40.583] [DEBUG] QUERY OK source="tms_terminals" db=49.3ms idle=5.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:33:40], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:33:40.586] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms queue=0.5ms idle=51.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-08-21 12:33:40.589] [DEBUG] QUERY OK source="config_file_versions" db=2.4ms queue=0.1ms idle=2.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:33:40.593] [DEBUG] QUERY OK source="config_file_versions" db=3.1ms decode=0.4ms idle=3.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:33:40.594] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:33:40.688] [DEBUG] QUERY OK source="parameter_push_logs" db=93.1ms idle=5.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 [19, "application", ~N[2026-08-21 12:03:40]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:33:40.688] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:33:40.688] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 12:33:40.690] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms 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.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:33:40.691] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=2.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:33:40.691] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:33:40.694] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=3.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:33:40.729] [DEBUG] QUERY OK source="tms_terminals" db=35.2ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:33:40], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:33:40.796] [DEBUG] QUERY OK db=66.3ms idle=35.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T03:43:05Z", ~N[2026-08-21 12:33:40], ~N[2026-08-21 12:33:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:33:40.797] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77996, oid: "organization_id", upload_time: "2026-08-21T03:43:05Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:40], updated_at: ~N[2026-08-21 12:33:40]} [2026-08-21 12:33:40.797] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:43:05Z", "value" => "online"} [2026-08-21 12:33:40.851] [DEBUG] QUERY OK db=51.2ms idle=70.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T03:43:05Z", "online", "status", 77996, ~N[2026-08-21 12:33:40], ~N[2026-08-21 12:33:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:40.851] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793485, itemkey: "status", value: "online", timestamp: "2026-08-21T03:43:05Z", message: "Terminal status update", status_log_id: 77996, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:40], updated_at: ~N[2026-08-21 12:33:40]}} [2026-08-21 12:33:40.851] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 12:33:40.851] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:43:05Z", "value" => "51"} [2026-08-21 12:33:40.876] [DEBUG] QUERY OK db=23.8ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T03:43:05Z", "51", "battery", 77996, ~N[2026-08-21 12:33:40], ~N[2026-08-21 12:33:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:40.876] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793486, itemkey: "battery", value: "51", timestamp: "2026-08-21T03:43:05Z", message: "Battery level", status_log_id: 77996, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:40], updated_at: ~N[2026-08-21 12:33:40]}} [2026-08-21 12:33:40.877] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:43:05Z", "value" => "online"} [2026-08-21 12:33:40.934] [DEBUG] QUERY OK db=56.5ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T03:43:05Z", "online", "network", 77996, ~N[2026-08-21 12:33:40], ~N[2026-08-21 12:33:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:40.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793487, itemkey: "network", value: "online", timestamp: "2026-08-21T03:43:05Z", message: "Network connectivity", status_log_id: 77996, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:40], updated_at: ~N[2026-08-21 12:33:40]}} [2026-08-21 12:33:40.934] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 12:33:40.934] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:43:05Z", "value" => "0"} [2026-08-21 12:33:40.978] [DEBUG] QUERY OK db=43.6ms idle=59.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T03:43:05Z", "0", "cpu", 77996, ~N[2026-08-21 12:33:40], ~N[2026-08-21 12:33:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:40.978] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793488, itemkey: "cpu", value: "0", timestamp: "2026-08-21T03:43:05Z", message: "CPU usage percentage", status_log_id: 77996, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:40], updated_at: ~N[2026-08-21 12:33:40]}} [2026-08-21 12:33:40.979] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:43:05Z", "value" => "1.0.0"} [2026-08-21 12:33:41.041] [DEBUG] QUERY OK db=61.3ms queue=0.1ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T03:43:05Z", "1.0.0", "parameter_config", 77996, ~N[2026-08-21 12:33:40], ~N[2026-08-21 12:33:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:41.041] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793489, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T03:43:05Z", message: "Current parameters version", status_log_id: 77996, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:40], updated_at: ~N[2026-08-21 12:33:40]}} [2026-08-21 12:33:41.042] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:43:05Z", "value" => "1.0.1"} [2026-08-21 12:33:41.085] [DEBUG] QUERY OK db=43.1ms idle=63.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T03:43:05Z", "1.0.1", "emv_config", 77996, ~N[2026-08-21 12:33:41], ~N[2026-08-21 12:33:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:41.085] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793490, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T03:43:05Z", message: "Current EMV config version", status_log_id: 77996, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:41], updated_at: ~N[2026-08-21 12:33:41]}} [2026-08-21 12:33:41.086] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:43:05Z", "value" => ""} [2026-08-21 12:33:41.127] [DEBUG] QUERY OK db=39.6ms queue=1.1ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T03:43:05Z", "keys_config", 77996, ~N[2026-08-21 12:33:41], ~N[2026-08-21 12:33:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:41.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793491, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T03:43:05Z", message: "Current keys config version", status_log_id: 77996, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:41], updated_at: ~N[2026-08-21 12:33:41]}} [2026-08-21 12:33:41.129] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:43:05Z", "value" => "3.8.7.3"} [2026-08-21 12:33:41.185] [DEBUG] QUERY OK db=55.4ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T03:43:05Z", "3.8.7.3", "application", 77996, ~N[2026-08-21 12:33:41], ~N[2026-08-21 12:33:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:33:41.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793492, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T03:43:05Z", message: "Current application version", status_log_id: 77996, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:33:41], updated_at: ~N[2026-08-21 12:33:41]}} [2026-08-21 12:33:41.186] [WARN ] Unexpected async result [2026-08-21 12:33:41.186] [WARN ] Unexpected async result [2026-08-21 12:34:03.514] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:34:03.514] [INFO ] Incoming JSON payload: {"oid":"b9447dea-0bc2-4fe2-82da-fd3c8081d943","sn":"98251226730001","uploadTime":"2026-08-21T12:34:03Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:34:03Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:34:03Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:34:03Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:34:03Z"},{"itemkey":"ram_free_mb","value":"889","timestamp":"2026-08-21T12:34:03Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:34:03Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:34:03Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:34:03Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:34:03Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:34:03Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:34:03Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:34:03Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:34:03Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:34:03Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:34: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:34:03.515] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b9447dea-0bc2-4fe2-82da-fd3c8081d943", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:34:03Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:34:03Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:34:03Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:34:03Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:34:03Z", "value" => "889"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:34:03Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:34:03Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:34:03Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:34:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:34:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:34:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:34:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:34:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:34:03Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:34:03Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:34: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:34:03Z", "vendor" => "morefun"} [2026-08-21 12:34:03.516] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:34:03.516] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:34:03.516] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:34:03.517] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1405.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-08-21 12:34:03.520] [DEBUG] QUERY OK source="parameter_templates" db=3.1ms idle=817.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-08-21 12:34:03.520] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:34:03.526] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms idle=6.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:34:03.526] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:34:04.880] [DEBUG] QUERY OK source="tms_terminals" db=1347.6ms idle=11.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:34:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:34:04.880] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:34:04.885] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms idle=153.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:34:05.251] [DEBUG] QUERY OK source="tms_terminals" db=364.1ms queue=0.3ms idle=6.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:34:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:34:06.279] [DEBUG] QUERY OK db=1027.6ms queue=0.1ms idle=366.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b9447dea-0bc2-4fe2-82da-fd3c8081d943", "2026-08-21T12:34:03Z", ~N[2026-08-21 12:34:05], ~N[2026-08-21 12:34:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:34:06.280] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77997, oid: "b9447dea-0bc2-4fe2-82da-fd3c8081d943", upload_time: "2026-08-21T12:34:03Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:05], updated_at: ~N[2026-08-21 12:34:05]} [2026-08-21 12:34:06.280] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:34:03Z", "value" => "morefun"} [2026-08-21 12:34:07.246] [DEBUG] QUERY OK db=924.4ms queue=41.2ms idle=549.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:03Z", "morefun", "vendor", 77997, ~N[2026-08-21 12:34:06], ~N[2026-08-21 12:34:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:07.246] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793493, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:06], updated_at: ~N[2026-08-21 12:34:06]}} [2026-08-21 12:34:07.246] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:34:03Z", "value" => "kiosk_launcher"} [2026-08-21 12:34:08.108] [DEBUG] QUERY OK db=861.2ms idle=513.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:03Z", "kiosk_launcher", "model", 77997, ~N[2026-08-21 12:34:07], ~N[2026-08-21 12:34:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:08.108] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793494, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:07], updated_at: ~N[2026-08-21 12:34:07]}} [2026-08-21 12:34:08.108] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:34:03Z", "value" => "1.0"} [2026-08-21 12:34:09.151] [DEBUG] QUERY OK db=1042.6ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:03Z", "1.0", "app_version", 77997, ~N[2026-08-21 12:34:08], ~N[2026-08-21 12:34:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:09.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793495, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:08], updated_at: ~N[2026-08-21 12:34:08]}} [2026-08-21 12:34:09.152] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:34:03Z", "value" => "13"} [2026-08-21 12:34:15.324] [DEBUG] QUERY OK db=6172.0ms queue=0.1ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:03Z", "13", "android_version", 77997, ~N[2026-08-21 12:34:09], ~N[2026-08-21 12:34:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:15.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793496, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:09], updated_at: ~N[2026-08-21 12:34:09]}} [2026-08-21 12:34:15.324] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:34:03Z", "value" => "889"} [2026-08-21 12:34:22.205] [DEBUG] QUERY OK db=6874.6ms idle=962.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:03Z", "889", "ram_free_mb", 77997, ~N[2026-08-21 12:34:15], ~N[2026-08-21 12:34:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:22.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793497, itemkey: "ram_free_mb", value: "889", timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:15], updated_at: ~N[2026-08-21 12:34:15]}} [2026-08-21 12:34:22.206] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:34:03Z", "value" => "WIFI"} [2026-08-21 12:34:22.270] [DEBUG] QUERY OK db=63.8ms idle=42.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:03Z", "WIFI", "network_type", 77997, ~N[2026-08-21 12:34:22], ~N[2026-08-21 12:34:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:22.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793498, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:22], updated_at: ~N[2026-08-21 12:34:22]}} [2026-08-21 12:34:22.270] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:34:03Z", "value" => "true"} [2026-08-21 12:34:22.333] [DEBUG] QUERY OK db=62.7ms idle=70.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:03Z", "true", "kiosk_active", 77997, ~N[2026-08-21 12:34:22], ~N[2026-08-21 12:34:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:22.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793499, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:22], updated_at: ~N[2026-08-21 12:34:22]}} [2026-08-21 12:34:22.334] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:34:03Z", "value" => ""} [2026-08-21 12:34:22.376] [DEBUG] QUERY OK db=42.2ms idle=64.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:34:03Z", "sim_operator", 77997, ~N[2026-08-21 12:34:22], ~N[2026-08-21 12:34:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:22.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793500, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:22], updated_at: ~N[2026-08-21 12:34:22]}} [2026-08-21 12:34:22.377] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:34:03Z", "value" => "UNKNOWN"} [2026-08-21 12:34:22.431] [DEBUG] QUERY OK db=53.4ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:03Z", "UNKNOWN", "sim_number", 77997, ~N[2026-08-21 12:34:22], ~N[2026-08-21 12:34:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:22.431] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793501, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:22], updated_at: ~N[2026-08-21 12:34:22]}} [2026-08-21 12:34:22.431] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:34:03Z", "value" => "UNKNOWN"} [2026-08-21 12:34:22.508] [DEBUG] QUERY OK db=76.9ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:03Z", "UNKNOWN", "sim_iccid", 77997, ~N[2026-08-21 12:34:22], ~N[2026-08-21 12:34:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:22.509] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793502, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:22], updated_at: ~N[2026-08-21 12:34:22]}} [2026-08-21 12:34:22.509] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:34:03Z", "value" => "UNKNOWN"} [2026-08-21 12:34:22.538] [DEBUG] QUERY OK db=28.1ms idle=78.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:03Z", "UNKNOWN", "sim_imsi", 77997, ~N[2026-08-21 12:34:22], ~N[2026-08-21 12:34:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:22.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793503, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:22], updated_at: ~N[2026-08-21 12:34:22]}} [2026-08-21 12:34:22.538] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:34:03Z", "value" => "UNKNOWN"} [2026-08-21 12:34:22.572] [DEBUG] QUERY OK db=33.0ms queue=0.4ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:03Z", "UNKNOWN", "sim_iccid2", 77997, ~N[2026-08-21 12:34:22], ~N[2026-08-21 12:34:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:22.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793504, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:22], updated_at: ~N[2026-08-21 12:34:22]}} [2026-08-21 12:34:22.572] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:34:03Z", "value" => "UNKNOWN"} [2026-08-21 12:34:22.618] [DEBUG] QUERY OK db=45.4ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:03Z", "UNKNOWN", "sim_imsi2", 77997, ~N[2026-08-21 12:34:22], ~N[2026-08-21 12:34:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:22.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793505, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:22], updated_at: ~N[2026-08-21 12:34:22]}} [2026-08-21 12:34:22.619] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:34:03Z", "value" => "36"} [2026-08-21 12:34:22.674] [DEBUG] QUERY OK db=54.3ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:03Z", "36", "data_usage_mb", 77997, ~N[2026-08-21 12:34:22], ~N[2026-08-21 12:34:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:22.674] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793506, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:22], updated_at: ~N[2026-08-21 12:34:22]}} [2026-08-21 12:34:22.674] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:34:03Z", "value" => "0"} [2026-08-21 12:34:22.732] [DEBUG] QUERY OK db=57.8ms idle=56.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:03Z", "0", "mobile_data_mb", 77997, ~N[2026-08-21 12:34:22], ~N[2026-08-21 12:34:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:22.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793507, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:22], updated_at: ~N[2026-08-21 12:34:22]}} [2026-08-21 12:34:22.733] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:34: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:34:22.779] [DEBUG] QUERY OK db=45.3ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77997, ~N[2026-08-21 12:34:22], ~N[2026-08-21 12:34:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:22.782] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793508, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:34:03Z", message: nil, status_log_id: 77997, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:22], updated_at: ~N[2026-08-21 12:34:22]}} [2026-08-21 12:34:33.820] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:34:33.820] [INFO ] Incoming JSON payload: {"oid":"4b0f03be-5aa5-4219-a668-7bb2d62d076f","sn":"98251226730001","uploadTime":"2026-08-21T12:34:33Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"ram_free_mb","value":"898","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:34:33Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:34:33.822] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4b0f03be-5aa5-4219-a668-7bb2d62d076f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:34:33Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:34:33Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:34:33Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:34:33Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:34:33Z", "value" => "898"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:34:33Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:34:33Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:34:33Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:34:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:34:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:34:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:34:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:34:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:34:33Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:34:33Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:34:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:34:33Z", "vendor" => "morefun"} [2026-08-21 12:34:33.822] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:34:33.822] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:34:33.822] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:34:33.823] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=656.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-08-21 12:34:33.824] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=600.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 12:34:33.825] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:34:33.825] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:34:33.825] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:34:33.854] [DEBUG] QUERY OK source="tms_terminals" db=28.5ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:34:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:34:33.855] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:34:33.856] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=0.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:34:33.913] [DEBUG] QUERY OK source="tms_terminals" db=56.4ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:34:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:34:33.932] [DEBUG] QUERY OK db=18.0ms idle=24.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "4b0f03be-5aa5-4219-a668-7bb2d62d076f", "2026-08-21T12:34:33Z", ~N[2026-08-21 12:34:33], ~N[2026-08-21 12:34:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:34:33.932] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77998, oid: "4b0f03be-5aa5-4219-a668-7bb2d62d076f", upload_time: "2026-08-21T12:34:33Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:33], updated_at: ~N[2026-08-21 12:34:33]} [2026-08-21 12:34:33.932] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:34:33Z", "value" => "morefun"} [2026-08-21 12:34:33.968] [DEBUG] QUERY OK db=33.9ms idle=21.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "morefun", "vendor", 77998, ~N[2026-08-21 12:34:33], ~N[2026-08-21 12:34:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:33.968] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793509, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:33], updated_at: ~N[2026-08-21 12:34:33]}} [2026-08-21 12:34:33.968] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:34:33Z", "value" => "kiosk_launcher"} [2026-08-21 12:34:34.006] [DEBUG] QUERY OK db=37.0ms queue=0.1ms idle=37.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "kiosk_launcher", "model", 77998, ~N[2026-08-21 12:34:33], ~N[2026-08-21 12:34:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.006] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793510, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:33], updated_at: ~N[2026-08-21 12:34:33]}} [2026-08-21 12:34:34.006] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:34:33Z", "value" => "1.0"} [2026-08-21 12:34:34.043] [DEBUG] QUERY OK db=36.1ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "1.0", "app_version", 77998, ~N[2026-08-21 12:34:34], ~N[2026-08-21 12:34:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793511, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:34], updated_at: ~N[2026-08-21 12:34:34]}} [2026-08-21 12:34:34.043] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:34:33Z", "value" => "13"} [2026-08-21 12:34:34.084] [DEBUG] QUERY OK db=39.9ms idle=37.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "13", "android_version", 77998, ~N[2026-08-21 12:34:34], ~N[2026-08-21 12:34:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793512, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:34], updated_at: ~N[2026-08-21 12:34:34]}} [2026-08-21 12:34:34.084] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:34:33Z", "value" => "898"} [2026-08-21 12:34:34.140] [DEBUG] QUERY OK db=54.9ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "898", "ram_free_mb", 77998, ~N[2026-08-21 12:34:34], ~N[2026-08-21 12:34:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793513, itemkey: "ram_free_mb", value: "898", timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:34], updated_at: ~N[2026-08-21 12:34:34]}} [2026-08-21 12:34:34.140] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:34:33Z", "value" => "WIFI"} [2026-08-21 12:34:34.188] [DEBUG] QUERY OK db=46.4ms queue=0.2ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "WIFI", "network_type", 77998, ~N[2026-08-21 12:34:34], ~N[2026-08-21 12:34:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793514, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:34], updated_at: ~N[2026-08-21 12:34:34]}} [2026-08-21 12:34:34.188] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:34:33Z", "value" => "true"} [2026-08-21 12:34:34.249] [DEBUG] QUERY OK db=60.3ms queue=0.1ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "true", "kiosk_active", 77998, ~N[2026-08-21 12:34:34], ~N[2026-08-21 12:34:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793515, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:34], updated_at: ~N[2026-08-21 12:34:34]}} [2026-08-21 12:34:34.250] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:34:33Z", "value" => ""} [2026-08-21 12:34:34.304] [DEBUG] QUERY OK db=53.5ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:34:33Z", "sim_operator", 77998, ~N[2026-08-21 12:34:34], ~N[2026-08-21 12:34:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793516, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:34], updated_at: ~N[2026-08-21 12:34:34]}} [2026-08-21 12:34:34.304] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:34:33Z", "value" => "UNKNOWN"} [2026-08-21 12:34:34.349] [DEBUG] QUERY OK db=44.9ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "UNKNOWN", "sim_number", 77998, ~N[2026-08-21 12:34:34], ~N[2026-08-21 12:34:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793517, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:34], updated_at: ~N[2026-08-21 12:34:34]}} [2026-08-21 12:34:34.351] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:34:33Z", "value" => "UNKNOWN"} [2026-08-21 12:34:34.413] [DEBUG] QUERY OK db=61.6ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "UNKNOWN", "sim_iccid", 77998, ~N[2026-08-21 12:34:34], ~N[2026-08-21 12:34:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793518, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:34], updated_at: ~N[2026-08-21 12:34:34]}} [2026-08-21 12:34:34.413] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:34:33Z", "value" => "UNKNOWN"} [2026-08-21 12:34:34.456] [DEBUG] QUERY OK db=41.8ms idle=64.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "UNKNOWN", "sim_imsi", 77998, ~N[2026-08-21 12:34:34], ~N[2026-08-21 12:34:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793519, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:34], updated_at: ~N[2026-08-21 12:34:34]}} [2026-08-21 12:34:34.457] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:34:33Z", "value" => "UNKNOWN"} [2026-08-21 12:34:34.516] [DEBUG] QUERY OK db=58.7ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "UNKNOWN", "sim_iccid2", 77998, ~N[2026-08-21 12:34:34], ~N[2026-08-21 12:34:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793520, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:34], updated_at: ~N[2026-08-21 12:34:34]}} [2026-08-21 12:34:34.516] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:34:33Z", "value" => "UNKNOWN"} [2026-08-21 12:34:34.567] [DEBUG] QUERY OK db=50.3ms idle=60.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "UNKNOWN", "sim_imsi2", 77998, ~N[2026-08-21 12:34:34], ~N[2026-08-21 12:34:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793521, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:34], updated_at: ~N[2026-08-21 12:34:34]}} [2026-08-21 12:34:34.567] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:34:33Z", "value" => "36"} [2026-08-21 12:34:34.607] [DEBUG] QUERY OK db=40.0ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "36", "data_usage_mb", 77998, ~N[2026-08-21 12:34:34], ~N[2026-08-21 12:34:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793522, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:34], updated_at: ~N[2026-08-21 12:34:34]}} [2026-08-21 12:34:34.609] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:34:33Z", "value" => "0"} [2026-08-21 12:34:34.688] [DEBUG] QUERY OK db=78.9ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "0", "mobile_data_mb", 77998, ~N[2026-08-21 12:34:34], ~N[2026-08-21 12:34:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793523, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:34], updated_at: ~N[2026-08-21 12:34:34]}} [2026-08-21 12:34:34.689] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:34:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:34:34.744] [DEBUG] QUERY OK db=54.0ms queue=0.3ms idle=82.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:34:33Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77998, ~N[2026-08-21 12:34:34], ~N[2026-08-21 12:34:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:34:34.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793524, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:34:33Z", message: nil, status_log_id: 77998, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:34:34], updated_at: ~N[2026-08-21 12:34:34]}} [2026-08-21 12:35:03.942] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:35:03.942] [INFO ] Incoming JSON payload: {"oid":"b645cd0e-a2b7-4855-b0b7-c31919cff977","sn":"98251226730001","uploadTime":"2026-08-21T12:35:03Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:35:03Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:35:03Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:35:03Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:35:03Z"},{"itemkey":"ram_free_mb","value":"895","timestamp":"2026-08-21T12:35:03Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:35:03Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:35:03Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:35:03Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:35:03Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:35:03Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:35:03Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:35:03Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:35:03Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:35:03Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:35: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:35:03.948] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b645cd0e-a2b7-4855-b0b7-c31919cff977", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:35:03Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:35:03Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:35:03Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:35:03Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:35:03Z", "value" => "895"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:35:03Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:35:03Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:35:03Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:35:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:35:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:35:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:35:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:35:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:35:03Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:35:03Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:35: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:35:03Z", "vendor" => "morefun"} [2026-08-21 12:35:03.950] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:35:03.950] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:35:03.952] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:35:03.957] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms idle=609.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-08-21 12:35:03.962] [DEBUG] QUERY OK source="parameter_templates" db=5.1ms queue=0.1ms idle=0.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 12:35:03.962] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:35:03.966] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=1.8ms idle=0.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:35:03.966] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:35:04.018] [DEBUG] QUERY OK source="tms_terminals" db=49.5ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:35:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:35:04.018] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:35:04.023] [DEBUG] QUERY OK source="tms_terminals" db=5.0ms idle=46.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:35:04.064] [DEBUG] QUERY OK source="tms_terminals" db=40.2ms idle=5.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:35:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:35:04.108] [DEBUG] QUERY OK db=43.0ms idle=40.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b645cd0e-a2b7-4855-b0b7-c31919cff977", "2026-08-21T12:35:03Z", ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:35:04.108] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 77999, oid: "b645cd0e-a2b7-4855-b0b7-c31919cff977", upload_time: "2026-08-21T12:35:03Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]} [2026-08-21 12:35:04.108] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:35:03Z", "value" => "morefun"} [2026-08-21 12:35:04.168] [DEBUG] QUERY OK db=58.3ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:03Z", "morefun", "vendor", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.170] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793525, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.170] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:35:03Z", "value" => "kiosk_launcher"} [2026-08-21 12:35:04.216] [DEBUG] QUERY OK db=43.3ms idle=64.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:03Z", "kiosk_launcher", "model", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793526, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.218] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:35:03Z", "value" => "1.0"} [2026-08-21 12:35:04.267] [DEBUG] QUERY OK db=48.2ms queue=0.3ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:03Z", "1.0", "app_version", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793527, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.267] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:35:03Z", "value" => "13"} [2026-08-21 12:35:04.341] [DEBUG] QUERY OK db=73.3ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:03Z", "13", "android_version", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793528, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.341] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:35:03Z", "value" => "895"} [2026-08-21 12:35:04.419] [DEBUG] QUERY OK db=75.1ms queue=2.0ms idle=75.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:03Z", "895", "ram_free_mb", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793529, itemkey: "ram_free_mb", value: "895", timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.420] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:35:03Z", "value" => "WIFI"} [2026-08-21 12:35:04.467] [DEBUG] QUERY OK db=46.4ms idle=67.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:03Z", "WIFI", "network_type", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793530, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.468] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:35:03Z", "value" => "true"} [2026-08-21 12:35:04.547] [DEBUG] QUERY OK db=79.1ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:03Z", "true", "kiosk_active", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.547] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793531, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.548] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:35:03Z", "value" => ""} [2026-08-21 12:35:04.598] [DEBUG] QUERY OK db=49.1ms idle=81.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:35:03Z", "sim_operator", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.599] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793532, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.599] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:35:03Z", "value" => "UNKNOWN"} [2026-08-21 12:35:04.649] [DEBUG] QUERY OK db=49.7ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:03Z", "UNKNOWN", "sim_number", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.650] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793533, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.651] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:35:03Z", "value" => "UNKNOWN"} [2026-08-21 12:35:04.708] [DEBUG] QUERY OK db=57.0ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:03Z", "UNKNOWN", "sim_iccid", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.709] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793534, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.709] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:35:03Z", "value" => "UNKNOWN"} [2026-08-21 12:35:04.745] [DEBUG] QUERY OK db=36.0ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:03Z", "UNKNOWN", "sim_imsi", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793535, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.746] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:35:03Z", "value" => "UNKNOWN"} [2026-08-21 12:35:04.798] [DEBUG] QUERY OK db=52.4ms idle=37.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:03Z", "UNKNOWN", "sim_iccid2", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793536, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.799] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:35:03Z", "value" => "UNKNOWN"} [2026-08-21 12:35:04.829] [DEBUG] QUERY OK db=29.8ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:03Z", "UNKNOWN", "sim_imsi2", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793537, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.829] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:35:03Z", "value" => "36"} [2026-08-21 12:35:04.888] [DEBUG] QUERY OK db=57.2ms queue=0.5ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:03Z", "36", "data_usage_mb", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.889] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793538, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.889] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:35:03Z", "value" => "0"} [2026-08-21 12:35:04.932] [DEBUG] QUERY OK db=42.6ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:03Z", "0", "mobile_data_mb", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.932] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793539, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:04.932] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:35: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:35:04.974] [DEBUG] QUERY OK db=40.5ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 77999, ~N[2026-08-21 12:35:04], ~N[2026-08-21 12:35:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:04.976] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793540, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:35:03Z", message: nil, status_log_id: 77999, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:04], updated_at: ~N[2026-08-21 12:35:04]}} [2026-08-21 12:35:34.048] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:35:34.048] [INFO ] Incoming JSON payload: {"oid":"38a21ec5-5a01-428b-9526-b0c0b49b7668","sn":"98251226730001","uploadTime":"2026-08-21T12:35:33Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"ram_free_mb","value":"895","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:35:33Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:35:34.057] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "38a21ec5-5a01-428b-9526-b0c0b49b7668", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:35:33Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:35:33Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:35:33Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:35:33Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:35:33Z", "value" => "895"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:35:33Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:35:33Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:35:33Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:35:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:35:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:35:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:35:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:35:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:35:33Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:35:33Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:35:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:35:33Z", "vendor" => "morefun"} [2026-08-21 12:35:34.057] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:35:34.059] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:35:34.060] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:35:34.063] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms queue=1.8ms idle=611.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-08-21 12:35:34.065] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=45.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 12:35:34.065] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:35:34.070] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms idle=3.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:35:34.070] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:35:34.134] [DEBUG] QUERY OK source="tms_terminals" db=63.2ms idle=5.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:35:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:35:34.134] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:35:34.139] [DEBUG] QUERY OK source="tms_terminals" db=4.5ms idle=64.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:35:34.223] [DEBUG] QUERY OK source="tms_terminals" db=83.1ms idle=5.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:35:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:35:34.298] [DEBUG] QUERY OK db=74.7ms idle=0.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "38a21ec5-5a01-428b-9526-b0c0b49b7668", "2026-08-21T12:35:33Z", ~N[2026-08-21 12:35:34], ~N[2026-08-21 12:35:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:35:34.299] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78000, oid: "38a21ec5-5a01-428b-9526-b0c0b49b7668", upload_time: "2026-08-21T12:35:33Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:34], updated_at: ~N[2026-08-21 12:35:34]} [2026-08-21 12:35:34.299] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:35:33Z", "value" => "morefun"} [2026-08-21 12:35:34.386] [DEBUG] QUERY OK db=84.7ms idle=13.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "morefun", "vendor", 78000, ~N[2026-08-21 12:35:34], ~N[2026-08-21 12:35:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:34.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793541, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:34], updated_at: ~N[2026-08-21 12:35:34]}} [2026-08-21 12:35:34.387] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:35:33Z", "value" => "kiosk_launcher"} [2026-08-21 12:35:34.441] [DEBUG] QUERY OK db=54.4ms idle=88.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "kiosk_launcher", "model", 78000, ~N[2026-08-21 12:35:34], ~N[2026-08-21 12:35:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:34.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793542, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:34], updated_at: ~N[2026-08-21 12:35:34]}} [2026-08-21 12:35:34.442] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:35:33Z", "value" => "1.0"} [2026-08-21 12:35:34.525] [DEBUG] QUERY OK db=81.5ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "1.0", "app_version", 78000, ~N[2026-08-21 12:35:34], ~N[2026-08-21 12:35:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:34.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793543, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:34], updated_at: ~N[2026-08-21 12:35:34]}} [2026-08-21 12:35:34.525] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:35:33Z", "value" => "13"} [2026-08-21 12:35:34.607] [DEBUG] QUERY OK db=79.6ms idle=73.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "13", "android_version", 78000, ~N[2026-08-21 12:35:34], ~N[2026-08-21 12:35:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:34.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793544, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:34], updated_at: ~N[2026-08-21 12:35:34]}} [2026-08-21 12:35:34.608] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:35:33Z", "value" => "895"} [2026-08-21 12:35:34.660] [DEBUG] QUERY OK db=49.9ms idle=85.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "895", "ram_free_mb", 78000, ~N[2026-08-21 12:35:34], ~N[2026-08-21 12:35:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:34.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793545, itemkey: "ram_free_mb", value: "895", timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:34], updated_at: ~N[2026-08-21 12:35:34]}} [2026-08-21 12:35:34.660] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:35:33Z", "value" => "WIFI"} [2026-08-21 12:35:34.692] [DEBUG] QUERY OK db=30.3ms queue=1.0ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "WIFI", "network_type", 78000, ~N[2026-08-21 12:35:34], ~N[2026-08-21 12:35:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:34.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793546, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:34], updated_at: ~N[2026-08-21 12:35:34]}} [2026-08-21 12:35:34.692] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:35:33Z", "value" => "true"} [2026-08-21 12:35:34.731] [DEBUG] QUERY OK db=37.2ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "true", "kiosk_active", 78000, ~N[2026-08-21 12:35:34], ~N[2026-08-21 12:35:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:34.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793547, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:34], updated_at: ~N[2026-08-21 12:35:34]}} [2026-08-21 12:35:34.732] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:35:33Z", "value" => ""} [2026-08-21 12:35:34.819] [DEBUG] QUERY OK db=86.7ms idle=39.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:35:33Z", "sim_operator", 78000, ~N[2026-08-21 12:35:34], ~N[2026-08-21 12:35:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:34.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793548, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:34], updated_at: ~N[2026-08-21 12:35:34]}} [2026-08-21 12:35:34.819] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:35:33Z", "value" => "UNKNOWN"} [2026-08-21 12:35:34.889] [DEBUG] QUERY OK db=69.1ms queue=0.1ms idle=89.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "UNKNOWN", "sim_number", 78000, ~N[2026-08-21 12:35:34], ~N[2026-08-21 12:35:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:34.891] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793549, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:34], updated_at: ~N[2026-08-21 12:35:34]}} [2026-08-21 12:35:34.891] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:35:33Z", "value" => "UNKNOWN"} [2026-08-21 12:35:34.999] [DEBUG] QUERY OK db=107.5ms idle=73.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "UNKNOWN", "sim_iccid", 78000, ~N[2026-08-21 12:35:34], ~N[2026-08-21 12:35:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:35.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793550, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:34], updated_at: ~N[2026-08-21 12:35:34]}} [2026-08-21 12:35:35.001] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:35:33Z", "value" => "UNKNOWN"} [2026-08-21 12:35:35.070] [DEBUG] QUERY OK db=67.1ms idle=113.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "UNKNOWN", "sim_imsi", 78000, ~N[2026-08-21 12:35:35], ~N[2026-08-21 12:35:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:35.070] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793551, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:35], updated_at: ~N[2026-08-21 12:35:35]}} [2026-08-21 12:35:35.070] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:35:33Z", "value" => "UNKNOWN"} [2026-08-21 12:35:35.137] [DEBUG] QUERY OK db=66.0ms idle=71.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "UNKNOWN", "sim_iccid2", 78000, ~N[2026-08-21 12:35:35], ~N[2026-08-21 12:35:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:35.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793552, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:35], updated_at: ~N[2026-08-21 12:35:35]}} [2026-08-21 12:35:35.137] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:35:33Z", "value" => "UNKNOWN"} [2026-08-21 12:35:35.207] [DEBUG] QUERY OK db=69.1ms idle=67.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "UNKNOWN", "sim_imsi2", 78000, ~N[2026-08-21 12:35:35], ~N[2026-08-21 12:35:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:35.207] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793553, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:35], updated_at: ~N[2026-08-21 12:35:35]}} [2026-08-21 12:35:35.207] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:35:33Z", "value" => "36"} [2026-08-21 12:35:35.276] [DEBUG] QUERY OK db=66.6ms queue=1.3ms idle=70.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "36", "data_usage_mb", 78000, ~N[2026-08-21 12:35:35], ~N[2026-08-21 12:35:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:35.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793554, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:35], updated_at: ~N[2026-08-21 12:35:35]}} [2026-08-21 12:35:35.276] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:35:33Z", "value" => "0"} [2026-08-21 12:35:35.353] [DEBUG] QUERY OK db=76.8ms idle=69.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "0", "mobile_data_mb", 78000, ~N[2026-08-21 12:35:35], ~N[2026-08-21 12:35:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:35.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793555, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:35], updated_at: ~N[2026-08-21 12:35:35]}} [2026-08-21 12:35:35.354] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:35:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:35:35.401] [DEBUG] QUERY OK db=45.8ms idle=78.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:35:33Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78000, ~N[2026-08-21 12:35:35], ~N[2026-08-21 12:35:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:35.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793556, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:35:33Z", message: nil, status_log_id: 78000, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:35], updated_at: ~N[2026-08-21 12:35:35]}} [2026-08-21 12:35:43.936] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:35:43.936] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:35:43Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:35:43Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:35:43Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:35:43Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:35:43Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:35:43Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:35:43Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:35:43Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:35:43Z","vendor":"MoreFun"} [2026-08-21 12:35:43.938] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:35:43Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:35:43Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:35:43Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:35:43Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:35:43Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:35:43Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:35:43Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:35:43Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:35:43Z", "vendor" => "MoreFun"} [2026-08-21 12:35:43.939] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:35:43.939] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:35:43.939] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:35:43.940] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.9ms idle=756.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-08-21 12:35:43.942] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=453.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:35:43.944] [DEBUG] QUERY OK source="parameter_template_values" db=1.6ms 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-08-21 12:35:43.947] [DEBUG] QUERY OK source="parameter_definitions" db=1.4ms queue=0.6ms idle=2.4ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:35:43.948] [DEBUG] QUERY OK source="pos_terminal" db=0.9ms idle=3.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:35:43.988] [DEBUG] QUERY OK source="pos_merchant" db=39.0ms idle=1.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:35:43.989] [DEBUG] QUERY OK db=0.9ms queue=0.5ms idle=1817.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 ["626165170000000"] [2026-08-21 12:35:43.989] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:35:43.991] [DEBUG] QUERY OK source="pos_terminal_data" db=1.3ms idle=41.5ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:35:43.991] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 12:35:43.992] [DEBUG] QUERY OK source="address" db=0.8ms idle=3.8ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:35:43.992] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:35:43.994] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:35:44.045] [DEBUG] QUERY OK db=49.7ms idle=4.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e519adca87b49d113d2d6972bb989681ff5ab2bba637f22ac2ab053f6aedb3d5", 581, 936, ~U[2026-08-21 12:35:43Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:35:43], ~N[2026-08-21 12:35:43]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:35:44.045] [INFO ] AutoPushService: Created push log 49080 for MF919 params.zip [2026-08-21 12:35:44.045] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 581, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:35:44.045] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:35:44.046] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:35:44.048] [DEBUG] QUERY OK source="config_file_versions" db=2.3ms queue=0.2ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:35:44.056] [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-08-21 12:35:44.118] [DEBUG] QUERY OK db=58.1ms idle=14.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "5663b71ad506ae26ad3bea69924bf0a1b2888a63e4bb52b37ddbfc1360262019", 2307, 17947, ~U[2026-08-21 12:35:44Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:35:44], ~N[2026-08-21 12:35:44]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:35:44.118] [INFO ] AutoPushService: Created push log 49081 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:35:44.118] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2307, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:35:44.118] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:35:44.119] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:35:44.119] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=70.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-08-21 12:35:44.119] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:35:44.120] [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.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:35:44.120] [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-08-21 12:35:44.122] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:35:44.122] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:35:44.123] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:35:44.126] [DEBUG] QUERY OK source="config_file_versions" db=3.3ms idle=3.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:35:44.127] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:35:44.127] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:35:44.129] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=6.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:35:44.277] [DEBUG] QUERY OK source="tms_terminals" db=106.5ms queue=40.9ms idle=3.4ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:35:44], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:35:44.277] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:35:44.277] [INFO ] Event published: terminal_updated [2026-08-21 12:35:44.277] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:35:44.278] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:35:44.278] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:35:44.278] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms idle=148.3ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:35:44], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:35:44.279] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:35:44.280] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:35:44.280] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:35:44.417] [DEBUG] QUERY OK source="tms_terminals" db=96.5ms queue=41.8ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:35:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:35:44.418] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=137.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`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-08-21 12:35:44.419] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:35:44.419] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=0.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:35:44.419] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:35:44.477] [DEBUG] QUERY OK source="parameter_push_logs" db=56.7ms 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-08-21 12:05:44]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:35:44.477] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:35:44.477] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:35:44.479] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:35:44.480] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms 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-08-21 12:35:44.480] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:35:44.481] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:35:44.583] [DEBUG] QUERY OK source="tms_terminals" db=60.6ms queue=40.9ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:35:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:35:44.607] [DEBUG] QUERY OK db=23.4ms queue=0.1ms idle=93.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:35:43Z", ~N[2026-08-21 12:35:44], ~N[2026-08-21 12:35:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:35:44.607] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78001, oid: "organization_id", upload_time: "2026-08-21T12:35:43Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:44], updated_at: ~N[2026-08-21 12:35:44]} [2026-08-21 12:35:44.607] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:35:43Z", "value" => "online"} [2026-08-21 12:35:44.630] [DEBUG] QUERY OK db=22.5ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:35:43Z", "online", "status", 78001, ~N[2026-08-21 12:35:44], ~N[2026-08-21 12:35:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:44.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793557, itemkey: "status", value: "online", timestamp: "2026-08-21T12:35:43Z", message: "Terminal status update", status_log_id: 78001, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:44], updated_at: ~N[2026-08-21 12:35:44]}} [2026-08-21 12:35:44.631] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:35:44.631] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:35:43Z", "value" => "51"} [2026-08-21 12:35:44.680] [DEBUG] QUERY OK db=48.3ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:35:43Z", "51", "battery", 78001, ~N[2026-08-21 12:35:44], ~N[2026-08-21 12:35:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:44.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793558, itemkey: "battery", value: "51", timestamp: "2026-08-21T12:35:43Z", message: "Battery level", status_log_id: 78001, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:44], updated_at: ~N[2026-08-21 12:35:44]}} [2026-08-21 12:35:44.680] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:35:43Z", "value" => "online"} [2026-08-21 12:35:44.713] [DEBUG] QUERY OK db=32.6ms queue=0.1ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:35:43Z", "online", "network", 78001, ~N[2026-08-21 12:35:44], ~N[2026-08-21 12:35:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:44.714] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793559, itemkey: "network", value: "online", timestamp: "2026-08-21T12:35:43Z", message: "Network connectivity", status_log_id: 78001, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:44], updated_at: ~N[2026-08-21 12:35:44]}} [2026-08-21 12:35:44.714] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:35:44.714] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:35:43Z", "value" => "0"} [2026-08-21 12:35:44.748] [DEBUG] QUERY OK db=33.9ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:35:43Z", "0", "cpu", 78001, ~N[2026-08-21 12:35:44], ~N[2026-08-21 12:35:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:44.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793560, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:35:43Z", message: "CPU usage percentage", status_log_id: 78001, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:44], updated_at: ~N[2026-08-21 12:35:44]}} [2026-08-21 12:35:44.749] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:35:43Z", "value" => "1.0.0"} [2026-08-21 12:35:44.782] [DEBUG] QUERY OK db=32.6ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:35:43Z", "1.0.0", "parameter_config", 78001, ~N[2026-08-21 12:35:44], ~N[2026-08-21 12:35:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:44.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793561, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:35:43Z", message: "Current parameters version", status_log_id: 78001, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:44], updated_at: ~N[2026-08-21 12:35:44]}} [2026-08-21 12:35:44.783] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:35:43Z", "value" => "1.0.1"} [2026-08-21 12:35:44.828] [DEBUG] QUERY OK db=45.2ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:35:43Z", "1.0.1", "emv_config", 78001, ~N[2026-08-21 12:35:44], ~N[2026-08-21 12:35:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:44.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793562, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:35:43Z", message: "Current EMV config version", status_log_id: 78001, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:44], updated_at: ~N[2026-08-21 12:35:44]}} [2026-08-21 12:35:44.829] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:35:43Z", "value" => ""} [2026-08-21 12:35:44.927] [DEBUG] QUERY OK db=55.7ms queue=42.0ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:35:43Z", "keys_config", 78001, ~N[2026-08-21 12:35:44], ~N[2026-08-21 12:35:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:44.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793563, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:35:43Z", message: "Current keys config version", status_log_id: 78001, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:44], updated_at: ~N[2026-08-21 12:35:44]}} [2026-08-21 12:35:44.927] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:35:43Z", "value" => "3.8.7.3"} [2026-08-21 12:35:44.951] [DEBUG] QUERY OK db=22.9ms idle=99.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:35:43Z", "3.8.7.3", "application", 78001, ~N[2026-08-21 12:35:44], ~N[2026-08-21 12:35:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:35:44.951] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793564, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:35:43Z", message: "Current application version", status_log_id: 78001, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:35:44], updated_at: ~N[2026-08-21 12:35:44]}} [2026-08-21 12:35:44.951] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:35:44Z"} [2026-08-21 12:35:44.952] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:35:44Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 30, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:36:04.152] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:36:04.152] [INFO ] Incoming JSON payload: {"oid":"4cd8f5e1-4191-49c5-b6a9-492482f553e1","sn":"98251226730001","uploadTime":"2026-08-21T12:36:03Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:36:03Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:36:03Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:36:03Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:36:03Z"},{"itemkey":"ram_free_mb","value":"892","timestamp":"2026-08-21T12:36:03Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:36:03Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:36:03Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:36:03Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:36:03Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:36:03Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:36:03Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:36:03Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:36:03Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:36:03Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:36: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:36:04.156] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4cd8f5e1-4191-49c5-b6a9-492482f553e1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:36:03Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:36:03Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:36:03Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:36:03Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:36:03Z", "value" => "892"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:36:03Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:36:03Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:36:03Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:36:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:36:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:36:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:36:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:36:03Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:36:03Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:36:03Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:36: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:36:03Z", "vendor" => "morefun"} [2026-08-21 12:36:04.159] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:36:04.159] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:36:04.159] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:36:04.160] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=599.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-08-21 12:36:04.163] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=92.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-08-21 12:36:04.163] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:36:04.171] [DEBUG] QUERY OK source="tms_terminals" db=7.5ms idle=3.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:36:04.283] [DEBUG] QUERY OK source="tms_terminals" db=64.4ms queue=46.1ms idle=8.5ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 12:36:04], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:36:04.283] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:36:04.284] [INFO ] Event published: terminal_updated [2026-08-21 12:36:04.286] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:36:04.288] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:36:04.288] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:36:04.291] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.6ms queue=2.4ms idle=114.9ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:36:04], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:36:04.300] [DEBUG] QUERY OK source="tms_terminals" db=8.5ms idle=9.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:36:04.310] [DEBUG] QUERY OK source="terminal_group_rules" db=5.0ms idle=4.8ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:36:04.310] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:36:04.370] [DEBUG] QUERY OK source="tms_terminals" db=33.6ms queue=44.7ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 12:36:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:36:04.370] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:36:04.372] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=60.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:36:04.457] [DEBUG] QUERY OK source="tms_terminals" db=42.4ms queue=41.2ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:36:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:36:04.530] [DEBUG] QUERY OK db=72.5ms idle=85.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "4cd8f5e1-4191-49c5-b6a9-492482f553e1", "2026-08-21T12:36:03Z", ~N[2026-08-21 12:36:04], ~N[2026-08-21 12:36:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:36:04.531] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78002, oid: "4cd8f5e1-4191-49c5-b6a9-492482f553e1", upload_time: "2026-08-21T12:36:03Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:04], updated_at: ~N[2026-08-21 12:36:04]} [2026-08-21 12:36:04.531] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:36:03Z", "value" => "morefun"} [2026-08-21 12:36:04.579] [DEBUG] QUERY OK db=47.5ms idle=74.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:03Z", "morefun", "vendor", 78002, ~N[2026-08-21 12:36:04], ~N[2026-08-21 12:36:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:04.579] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793565, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:04], updated_at: ~N[2026-08-21 12:36:04]}} [2026-08-21 12:36:04.579] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:36:03Z", "value" => "kiosk_launcher"} [2026-08-21 12:36:04.658] [DEBUG] QUERY OK db=25.2ms queue=47.2ms idle=18.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:03Z", "kiosk_launcher", "model", 78002, ~N[2026-08-21 12:36:04], ~N[2026-08-21 12:36:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:04.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793566, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:04], updated_at: ~N[2026-08-21 12:36:04]}} [2026-08-21 12:36:04.658] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:36:03Z", "value" => "1.0"} [2026-08-21 12:36:04.701] [DEBUG] QUERY OK db=42.5ms idle=79.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:03Z", "1.0", "app_version", 78002, ~N[2026-08-21 12:36:04], ~N[2026-08-21 12:36:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:04.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793567, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:04], updated_at: ~N[2026-08-21 12:36:04]}} [2026-08-21 12:36:04.702] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:36:03Z", "value" => "13"} [2026-08-21 12:36:04.783] [DEBUG] QUERY OK db=80.6ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:03Z", "13", "android_version", 78002, ~N[2026-08-21 12:36:04], ~N[2026-08-21 12:36:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:04.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793568, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:04], updated_at: ~N[2026-08-21 12:36:04]}} [2026-08-21 12:36:04.783] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:36:03Z", "value" => "892"} [2026-08-21 12:36:04.811] [DEBUG] QUERY OK db=27.7ms idle=82.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:03Z", "892", "ram_free_mb", 78002, ~N[2026-08-21 12:36:04], ~N[2026-08-21 12:36:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:04.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793569, itemkey: "ram_free_mb", value: "892", timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:04], updated_at: ~N[2026-08-21 12:36:04]}} [2026-08-21 12:36:04.812] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:36:03Z", "value" => "WIFI"} [2026-08-21 12:36:04.859] [DEBUG] QUERY OK db=46.3ms idle=29.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:03Z", "WIFI", "network_type", 78002, ~N[2026-08-21 12:36:04], ~N[2026-08-21 12:36:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:04.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793570, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:04], updated_at: ~N[2026-08-21 12:36:04]}} [2026-08-21 12:36:04.859] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:36:03Z", "value" => "true"} [2026-08-21 12:36:04.906] [DEBUG] QUERY OK db=46.0ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:03Z", "true", "kiosk_active", 78002, ~N[2026-08-21 12:36:04], ~N[2026-08-21 12:36:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:04.906] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793571, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:04], updated_at: ~N[2026-08-21 12:36:04]}} [2026-08-21 12:36:04.906] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:36:03Z", "value" => ""} [2026-08-21 12:36:04.964] [DEBUG] QUERY OK db=57.5ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:36:03Z", "sim_operator", 78002, ~N[2026-08-21 12:36:04], ~N[2026-08-21 12:36:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:04.965] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793572, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:04], updated_at: ~N[2026-08-21 12:36:04]}} [2026-08-21 12:36:04.965] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:36:03Z", "value" => "UNKNOWN"} [2026-08-21 12:36:04.999] [DEBUG] QUERY OK db=33.8ms idle=59.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:03Z", "UNKNOWN", "sim_number", 78002, ~N[2026-08-21 12:36:04], ~N[2026-08-21 12:36:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:05.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793573, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:04], updated_at: ~N[2026-08-21 12:36:04]}} [2026-08-21 12:36:05.000] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:36:03Z", "value" => "UNKNOWN"} [2026-08-21 12:36:05.038] [DEBUG] QUERY OK db=38.1ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:03Z", "UNKNOWN", "sim_iccid", 78002, ~N[2026-08-21 12:36:05], ~N[2026-08-21 12:36:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:05.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793574, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:05], updated_at: ~N[2026-08-21 12:36:05]}} [2026-08-21 12:36:05.038] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:36:03Z", "value" => "UNKNOWN"} [2026-08-21 12:36:05.082] [DEBUG] QUERY OK db=34.9ms queue=0.9ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:03Z", "UNKNOWN", "sim_imsi", 78002, ~N[2026-08-21 12:36:05], ~N[2026-08-21 12:36:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:05.083] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793575, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:05], updated_at: ~N[2026-08-21 12:36:05]}} [2026-08-21 12:36:05.084] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:36:03Z", "value" => "UNKNOWN"} [2026-08-21 12:36:05.130] [DEBUG] QUERY OK db=44.0ms queue=0.1ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:03Z", "UNKNOWN", "sim_iccid2", 78002, ~N[2026-08-21 12:36:05], ~N[2026-08-21 12:36:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:05.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793576, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:05], updated_at: ~N[2026-08-21 12:36:05]}} [2026-08-21 12:36:05.133] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:36:03Z", "value" => "UNKNOWN"} [2026-08-21 12:36:05.175] [DEBUG] QUERY OK db=41.6ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:03Z", "UNKNOWN", "sim_imsi2", 78002, ~N[2026-08-21 12:36:05], ~N[2026-08-21 12:36:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:05.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793577, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:05], updated_at: ~N[2026-08-21 12:36:05]}} [2026-08-21 12:36:05.175] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:36:03Z", "value" => "36"} [2026-08-21 12:36:05.221] [DEBUG] QUERY OK db=44.1ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:03Z", "36", "data_usage_mb", 78002, ~N[2026-08-21 12:36:05], ~N[2026-08-21 12:36:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:05.222] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793578, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:05], updated_at: ~N[2026-08-21 12:36:05]}} [2026-08-21 12:36:05.222] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:36:03Z", "value" => "0"} [2026-08-21 12:36:05.297] [DEBUG] QUERY OK db=75.0ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:03Z", "0", "mobile_data_mb", 78002, ~N[2026-08-21 12:36:05], ~N[2026-08-21 12:36:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:05.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793579, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:05], updated_at: ~N[2026-08-21 12:36:05]}} [2026-08-21 12:36:05.303] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:36: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:36:05.387] [DEBUG] QUERY OK db=81.7ms idle=85.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78002, ~N[2026-08-21 12:36:05], ~N[2026-08-21 12:36:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:05.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793580, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:36:03Z", message: nil, status_log_id: 78002, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:05], updated_at: ~N[2026-08-21 12:36:05]}} [2026-08-21 12:36:05.388] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:35:44Z"} [2026-08-21 12:36:05.388] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:35:44Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 31, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:36:19.708] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:36:19.708] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:36:19Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:36:19Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:36:19Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:36:19Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:36:19Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:36:19Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:36:19Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:36:19Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:36:19Z","vendor":"MoreFun"} [2026-08-21 12:36:19.708] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:36:19Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:36:19Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:36:19Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:36:19Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:36:19Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:36:19Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:36:19Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:36:19Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:36:19Z", "vendor" => "MoreFun"} [2026-08-21 12:36:19.708] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:36:19.708] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:36:19.708] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:36:19.709] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1085.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-08-21 12:36:19.711] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=83.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 12:36:19.712] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms idle=2.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:36:19.715] [DEBUG] QUERY OK source="parameter_definitions" db=1.2ms 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-08-21 12:36:19.716] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms idle=3.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:36:19.757] [DEBUG] QUERY OK source="pos_merchant" db=39.8ms idle=1.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:36:19.758] [DEBUG] QUERY OK db=0.7ms queue=0.4ms idle=584.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 ["626165170000000"] [2026-08-21 12:36:19.758] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:36:19.759] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms queue=0.2ms idle=42.2ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:36:19.759] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 12:36:19.761] [DEBUG] QUERY OK source="address" db=1.0ms 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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:36:19.761] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:36:19.764] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:36:19.808] [DEBUG] QUERY OK db=43.1ms idle=5.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "08073c99c7929ac9fbdaaf3aa336091258ece083c9c326a7a2e3b8b7079b04f7", 2435, 936, ~U[2026-08-21 12:36:19Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:36:19], ~N[2026-08-21 12:36:19]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:36:19.808] [INFO ] AutoPushService: Created push log 49082 for MF919 params.zip [2026-08-21 12:36:19.809] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 2435, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:36:19.809] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:36:19.809] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:36:19.810] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.2ms idle=48.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:36:19.819] [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-08-21 12:36:19.858] [DEBUG] QUERY OK db=37.5ms idle=12.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "45981ec18c1275f65baf20dc96125243c20f9d1e3f293dae21f968b6ebca3097", 2531, 17947, ~U[2026-08-21 12:36:19Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:36:19], ~N[2026-08-21 12:36:19]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:36:19.858] [INFO ] AutoPushService: Created push log 49083 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:36:19.858] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2531, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:36:19.859] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:36:19.859] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:36:19.860] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 12:36:19.860] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:36:19.861] [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.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:36:19.862] [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-08-21 12:36:19.869] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:36:19.869] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:36:19.869] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:36:19.872] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=10.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-08-21 12:36:19.872] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:36:19.872] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:36:19.873] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=10.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 12:36:19.916] [DEBUG] QUERY OK source="tms_terminals" db=41.5ms idle=3.0ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:36:19], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:36:19.918] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:36:19.918] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:36:19.918] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:36:19.919] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:36:19.918] [INFO ] Event published: terminal_updated [2026-08-21 12:36:19.925] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.9ms queue=2.6ms idle=45.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:36:19], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:36:19.928] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms queue=0.1ms idle=9.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:36:19.930] [DEBUG] QUERY OK source="terminal_group_rules" db=1.4ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:36:19.930] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:36:20.013] [DEBUG] QUERY OK source="tms_terminals" db=46.3ms queue=41.5ms idle=0.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:36:19], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:36:20.017] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=84.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-08-21 12:36:20.018] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:36:20.022] [DEBUG] QUERY OK source="config_file_versions" db=3.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-08-21 12:36:20.022] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:36:20.201] [DEBUG] QUERY OK source="parameter_push_logs" db=178.5ms idle=4.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-08-21 12:06:20]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:36:20.201] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:36:20.201] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:36:20.203] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=179.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-08-21 12:36:20.204] [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-08-21 12:36:20.204] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:36:20.206] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=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-08-21 12:36:20.352] [DEBUG] QUERY OK source="tms_terminals" db=104.4ms queue=41.3ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:36:20], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:36:20.416] [DEBUG] QUERY OK db=63.3ms idle=146.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:36:19Z", ~N[2026-08-21 12:36:20], ~N[2026-08-21 12:36:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:36:20.416] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78003, oid: "organization_id", upload_time: "2026-08-21T12:36:19Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:20], updated_at: ~N[2026-08-21 12:36:20]} [2026-08-21 12:36:20.417] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:36:19Z", "value" => "online"} [2026-08-21 12:36:20.508] [DEBUG] QUERY OK db=90.5ms idle=65.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:36:19Z", "online", "status", 78003, ~N[2026-08-21 12:36:20], ~N[2026-08-21 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:20.508] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793581, itemkey: "status", value: "online", timestamp: "2026-08-21T12:36:19Z", message: "Terminal status update", status_log_id: 78003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:20], updated_at: ~N[2026-08-21 12:36:20]}} [2026-08-21 12:36:20.508] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:36:20.509] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:36:19Z", "value" => "51"} [2026-08-21 12:36:20.601] [DEBUG] QUERY OK db=92.0ms idle=93.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:36:19Z", "51", "battery", 78003, ~N[2026-08-21 12:36:20], ~N[2026-08-21 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:20.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793582, itemkey: "battery", value: "51", timestamp: "2026-08-21T12:36:19Z", message: "Battery level", status_log_id: 78003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:20], updated_at: ~N[2026-08-21 12:36:20]}} [2026-08-21 12:36:20.602] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:36:19Z", "value" => "online"} [2026-08-21 12:36:20.671] [DEBUG] QUERY OK db=61.6ms queue=6.9ms idle=94.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:36:19Z", "online", "network", 78003, ~N[2026-08-21 12:36:20], ~N[2026-08-21 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:20.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793583, itemkey: "network", value: "online", timestamp: "2026-08-21T12:36:19Z", message: "Network connectivity", status_log_id: 78003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:20], updated_at: ~N[2026-08-21 12:36:20]}} [2026-08-21 12:36:20.671] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:36:20.672] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:36:19Z", "value" => "0"} [2026-08-21 12:36:20.763] [DEBUG] QUERY OK db=90.5ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:36:19Z", "0", "cpu", 78003, ~N[2026-08-21 12:36:20], ~N[2026-08-21 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:20.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793584, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:36:19Z", message: "CPU usage percentage", status_log_id: 78003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:20], updated_at: ~N[2026-08-21 12:36:20]}} [2026-08-21 12:36:20.763] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:36:19Z", "value" => "1.0.0"} [2026-08-21 12:36:20.861] [DEBUG] QUERY OK db=96.8ms idle=92.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:36:19Z", "1.0.0", "parameter_config", 78003, ~N[2026-08-21 12:36:20], ~N[2026-08-21 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:20.861] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793585, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:36:19Z", message: "Current parameters version", status_log_id: 78003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:20], updated_at: ~N[2026-08-21 12:36:20]}} [2026-08-21 12:36:20.861] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:36:19Z", "value" => "1.0.1"} [2026-08-21 12:36:20.938] [DEBUG] QUERY OK db=75.9ms idle=99.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:36:19Z", "1.0.1", "emv_config", 78003, ~N[2026-08-21 12:36:20], ~N[2026-08-21 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:20.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793586, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:36:19Z", message: "Current EMV config version", status_log_id: 78003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:20], updated_at: ~N[2026-08-21 12:36:20]}} [2026-08-21 12:36:20.939] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:36:19Z", "value" => ""} [2026-08-21 12:36:21.038] [DEBUG] QUERY OK db=98.3ms queue=1.1ms idle=78.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:36:19Z", "keys_config", 78003, ~N[2026-08-21 12:36:20], ~N[2026-08-21 12:36:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:21.039] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793587, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:36:19Z", message: "Current keys config version", status_log_id: 78003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:20], updated_at: ~N[2026-08-21 12:36:20]}} [2026-08-21 12:36:21.039] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:36:19Z", "value" => "3.8.7.3"} [2026-08-21 12:36:21.159] [DEBUG] QUERY OK db=119.9ms idle=101.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:36:19Z", "3.8.7.3", "application", 78003, ~N[2026-08-21 12:36:21], ~N[2026-08-21 12:36:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:21.160] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793588, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:36:19Z", message: "Current application version", status_log_id: 78003, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:21], updated_at: ~N[2026-08-21 12:36:21]}} [2026-08-21 12:36:21.160] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:36:19Z"} [2026-08-21 12:36:21.160] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:36:19Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 34, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:36:22.131] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:36:22.131] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:36:21Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:36:21Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:36:21Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:36:21Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:36:21Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:36:21Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:36:21Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:36:21Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:36:21Z","vendor":"MoreFun"} [2026-08-21 12:36:22.132] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:36:21Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:36:21Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:36:21Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:36:21Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:36:21Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:36:21Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:36:21Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:36:21Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:36:21Z", "vendor" => "MoreFun"} [2026-08-21 12:36:22.132] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:36:22.132] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:36:22.132] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:36:22.133] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=973.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-08-21 12:36:22.134] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=499.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:36:22.135] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms idle=1.0ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:36:22.137] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=0.5ms idle=1.1ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:36:22.138] [DEBUG] QUERY OK source="pos_terminal" db=1.0ms 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-08-21 12:36:22.177] [DEBUG] QUERY OK source="pos_merchant" db=38.7ms idle=2.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:36:22.179] [DEBUG] QUERY OK db=0.6ms queue=0.7ms idle=1005.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 ["626165170000000"] [2026-08-21 12:36:22.179] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:36:22.180] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=41.9ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:36:22.180] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 12:36:22.181] [DEBUG] QUERY OK source="address" db=0.5ms 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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:36:22.182] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:36:22.182] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:36:22.224] [DEBUG] QUERY OK db=40.3ms idle=2.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "da0b4ab892e3b927369c1cbae1873c0b2ad547ea5e6cb230523419f9262117df", 388, 936, ~U[2026-08-21 12:36:22Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:36:22], ~N[2026-08-21 12:36:22]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:36:22.224] [INFO ] AutoPushService: Created push log 49084 for MF919 params.zip [2026-08-21 12:36:22.224] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 388, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:36:22.225] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:36:22.225] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:36:22.227] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=44.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-08-21 12:36:22.230] [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-08-21 12:36:22.270] [DEBUG] QUERY OK db=39.5ms idle=7.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "fbb050267b3603fec5afa42708f2d693550cff1962448c7b6366fb80e7175d4f", 901, 17947, ~U[2026-08-21 12:36:22Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:36:22], ~N[2026-08-21 12:36:22]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:36:22.270] [INFO ] AutoPushService: Created push log 49085 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:36:22.271] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 901, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:36:22.271] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:36:22.271] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:36:22.272] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=44.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 12:36:22.272] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:36:22.273] [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-08-21 12:36:22.273] [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-08-21 12:36:22.274] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:36:22.275] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:36:22.275] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:36:22.276] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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-08-21 12:36:22.277] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:36:22.277] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:36:22.278] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=3.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:36:22.278] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:36:22.316] [DEBUG] QUERY OK source="tms_terminals" db=36.6ms queue=0.4ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:36:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:36:22.317] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=38.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-08-21 12:36:22.318] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms 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-08-21 12:36:22.319] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=1.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:36:22.319] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:36:22.374] [DEBUG] QUERY OK source="parameter_push_logs" db=53.8ms idle=1.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-08-21 12:06:22]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:36:22.374] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:36:22.374] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:36:22.375] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=55.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:36:22.376] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms 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-08-21 12:36:22.376] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:36:22.377] [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-08-21 12:36:22.415] [DEBUG] QUERY OK source="tms_terminals" db=37.9ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:36:22], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:36:22.467] [DEBUG] QUERY OK db=51.0ms idle=38.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:36:21Z", ~N[2026-08-21 12:36:22], ~N[2026-08-21 12:36:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:36:22.467] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78004, oid: "organization_id", upload_time: "2026-08-21T12:36:21Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:22], updated_at: ~N[2026-08-21 12:36:22]} [2026-08-21 12:36:22.467] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:36:21Z", "value" => "online"} [2026-08-21 12:36:22.512] [DEBUG] QUERY OK db=44.5ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:36:21Z", "online", "status", 78004, ~N[2026-08-21 12:36:22], ~N[2026-08-21 12:36:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:22.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793589, itemkey: "status", value: "online", timestamp: "2026-08-21T12:36:21Z", message: "Terminal status update", status_log_id: 78004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:22], updated_at: ~N[2026-08-21 12:36:22]}} [2026-08-21 12:36:22.515] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:36:22.515] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:36:21Z", "value" => "51"} [2026-08-21 12:36:22.542] [DEBUG] QUERY OK db=26.0ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:36:21Z", "51", "battery", 78004, ~N[2026-08-21 12:36:22], ~N[2026-08-21 12:36:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:22.543] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793590, itemkey: "battery", value: "51", timestamp: "2026-08-21T12:36:21Z", message: "Battery level", status_log_id: 78004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:22], updated_at: ~N[2026-08-21 12:36:22]}} [2026-08-21 12:36:22.543] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:36:21Z", "value" => "online"} [2026-08-21 12:36:22.598] [DEBUG] QUERY OK db=53.8ms idle=32.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:36:21Z", "online", "network", 78004, ~N[2026-08-21 12:36:22], ~N[2026-08-21 12:36:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:22.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793591, itemkey: "network", value: "online", timestamp: "2026-08-21T12:36:21Z", message: "Network connectivity", status_log_id: 78004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:22], updated_at: ~N[2026-08-21 12:36:22]}} [2026-08-21 12:36:22.598] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:36:22.599] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:36:21Z", "value" => "0"} [2026-08-21 12:36:22.659] [DEBUG] QUERY OK db=59.3ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:36:21Z", "0", "cpu", 78004, ~N[2026-08-21 12:36:22], ~N[2026-08-21 12:36:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:22.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793592, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:36:21Z", message: "CPU usage percentage", status_log_id: 78004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:22], updated_at: ~N[2026-08-21 12:36:22]}} [2026-08-21 12:36:22.660] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:36:21Z", "value" => "1.0.0"} [2026-08-21 12:36:22.709] [DEBUG] QUERY OK db=47.7ms queue=0.1ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:36:21Z", "1.0.0", "parameter_config", 78004, ~N[2026-08-21 12:36:22], ~N[2026-08-21 12:36:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:22.709] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793593, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:36:21Z", message: "Current parameters version", status_log_id: 78004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:22], updated_at: ~N[2026-08-21 12:36:22]}} [2026-08-21 12:36:22.709] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:36:21Z", "value" => "1.0.1"} [2026-08-21 12:36:22.772] [DEBUG] QUERY OK db=62.2ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:36:21Z", "1.0.1", "emv_config", 78004, ~N[2026-08-21 12:36:22], ~N[2026-08-21 12:36:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:22.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793594, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:36:21Z", message: "Current EMV config version", status_log_id: 78004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:22], updated_at: ~N[2026-08-21 12:36:22]}} [2026-08-21 12:36:22.772] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:36:21Z", "value" => ""} [2026-08-21 12:36:22.835] [DEBUG] QUERY OK db=62.7ms idle=63.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:36:21Z", "keys_config", 78004, ~N[2026-08-21 12:36:22], ~N[2026-08-21 12:36:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:22.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793595, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:36:21Z", message: "Current keys config version", status_log_id: 78004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:22], updated_at: ~N[2026-08-21 12:36:22]}} [2026-08-21 12:36:22.836] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:36:21Z", "value" => "3.8.7.3"} [2026-08-21 12:36:22.882] [DEBUG] QUERY OK db=46.3ms idle=64.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:36:21Z", "3.8.7.3", "application", 78004, ~N[2026-08-21 12:36:22], ~N[2026-08-21 12:36:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:22.883] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793596, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:36:21Z", message: "Current application version", status_log_id: 78004, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:22], updated_at: ~N[2026-08-21 12:36:22]}} [2026-08-21 12:36:22.884] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:36:22Z"} [2026-08-21 12:36:22.884] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:36:22Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 37, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:36:23.122] [DEBUG] HANDLE EVENT "apply_date_preset" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"preset" => "yesterday", "value" => ""} [2026-08-21 12:36:23.124] [DEBUG] QUERY OK source="core_transactions" db=1.8ms queue=0.2ms idle=287.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-20], ~D[2026-08-20], ~D[2026-08-20], ~D[2026-08-20]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:23.126] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=1.0ms idle=242.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (false) [] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:23.129] [DEBUG] QUERY OK source="core_transactions" db=2.1ms queue=0.4ms idle=2.3ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-20], ~D[2026-08-20], ~D[2026-08-20], ~D[2026-08-20], "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:36:23.169] [DEBUG] QUERY OK source="core_transactions" db=39.0ms idle=3.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-20], ~D[2026-08-20], ~D[2026-08-20], ~D[2026-08-20]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:23.171] [DEBUG] QUERY OK source="tid_masters" db=0.3ms queue=1.2ms idle=39.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (false) [] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:23.171] [DEBUG] QUERY OK source="merchant_adjustments" db=0.3ms idle=2.2ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-20], ~D[2026-08-20]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:36:23.172] [DEBUG] Replied in 49ms [2026-08-21 12:36:24.894] [DEBUG] HANDLE EVENT "apply_date_preset" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"preset" => "7d", "value" => ""} [2026-08-21 12:36:24.895] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=705.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-15], ~D[2026-08-21], ~D[2026-08-15], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:24.897] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=0.5ms idle=252.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:24.899] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.4ms idle=2.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-15], ~D[2026-08-21], ~D[2026-08-15], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:36:24.938] [DEBUG] QUERY OK source="core_transactions" db=38.8ms idle=2.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-15], ~D[2026-08-21], ~D[2026-08-15], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:24.940] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=1.2ms idle=39.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:24.941] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms queue=0.3ms idle=2.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-08-15], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:36:24.942] [DEBUG] Replied in 47ms [2026-08-21 12:36:28.191] [DEBUG] HANDLE EVENT "apply_date_preset" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"preset" => "30d", "value" => ""} [2026-08-21 12:36:28.193] [DEBUG] QUERY OK source="core_transactions" db=1.1ms idle=538.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-23], ~D[2026-08-21], ~D[2026-07-23], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:28.195] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.8ms idle=5.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:28.196] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=0.3ms idle=2.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-23], ~D[2026-08-21], ~D[2026-07-23], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:36:28.236] [DEBUG] QUERY OK source="core_transactions" db=39.2ms idle=2.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-23], ~D[2026-08-21], ~D[2026-07-23], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:28.238] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=1.5ms idle=39.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:28.242] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=2.3ms idle=3.0ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-23], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:36:28.242] [DEBUG] Replied in 51ms [2026-08-21 12:36:29.904] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:36:29.904] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:36:29Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:36:29Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:36:29Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:36:29Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:36:29Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:36:29Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:36:29Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:36:29Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:36:29Z","vendor":"MoreFun"} [2026-08-21 12:36:29.905] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:36:29Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:36:29Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:36:29Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:36:29Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:36:29Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:36:29Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:36:29Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:36:29Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:36:29Z", "vendor" => "MoreFun"} [2026-08-21 12:36:29.905] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:36:29.905] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:36:29.905] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:36:29.906] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1249.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-08-21 12:36:29.907] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=245.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-08-21 12:36:29.908] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms queue=0.1ms 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-08-21 12:36:29.910] [DEBUG] QUERY OK source="parameter_definitions" db=0.6ms 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-08-21 12:36:29.911] [DEBUG] QUERY OK source="pos_terminal" db=0.6ms 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-08-21 12:36:29.951] [DEBUG] QUERY OK source="pos_merchant" db=40.1ms queue=0.1ms idle=1.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:36:29.953] [DEBUG] QUERY OK db=0.4ms queue=0.6ms idle=1779.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 ["626165170000000"] [2026-08-21 12:36:29.953] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:36:29.954] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms idle=42.2ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:36:29.954] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 12:36:29.954] [DEBUG] QUERY OK source="address" db=0.2ms queue=0.4ms idle=2.3ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:36:29.955] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:36:29.956] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:36:30.018] [DEBUG] QUERY OK db=60.8ms idle=3.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "1c68fdb782ce42867fbf6be561c9304b422f003f2716208cd4c060c2600434dc", 964, 936, ~U[2026-08-21 12:36:29Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:36:29], ~N[2026-08-21 12:36:29]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:36:30.018] [INFO ] AutoPushService: Created push log 49086 for MF919 params.zip [2026-08-21 12:36:30.018] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 964, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:36:30.018] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:36:30.019] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:36:30.021] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=64.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:36:30.025] [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-08-21 12:36:30.068] [DEBUG] QUERY OK db=42.7ms idle=7.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "a9c04a3ffba87e96548ebe3bc9bfcd7c904033e1b2963f511ac084b68ab40198", 8066, 17947, ~U[2026-08-21 12:36:30Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:36:30], ~N[2026-08-21 12:36:30]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:36:30.069] [INFO ] AutoPushService: Created push log 49087 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:36:30.069] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 8066, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:36:30.069] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:36:30.069] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:36:30.070] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=48.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 12:36:30.070] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:36:30.072] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:36:30.072] [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-08-21 12:36:30.075] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:36:30.075] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:36:30.075] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:36:30.077] [DEBUG] QUERY OK source="config_file_versions" db=2.0ms idle=4.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:36:30.079] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:36:30.079] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:36:30.082] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=10.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 12:36:30.083] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:36:30.183] [DEBUG] QUERY OK source="tms_terminals" db=58.4ms queue=41.4ms idle=5.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:36:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:36:30.184] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=100.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-08-21 12:36:30.184] [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-08-21 12:36:30.185] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms 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-08-21 12:36:30.186] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:36:30.204] [DEBUG] QUERY OK source="parameter_push_logs" db=18.0ms 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-08-21 12:06:30]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:36:30.204] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:36:30.204] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:36:30.206] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=19.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:36:30.207] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=2.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:36:30.207] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:36:30.208] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:36:30.233] [DEBUG] QUERY OK source="tms_terminals" db=24.6ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:36:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:36:30.292] [DEBUG] QUERY OK db=58.3ms 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-08-21T12:36:29Z", ~N[2026-08-21 12:36:30], ~N[2026-08-21 12:36:30]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:36:30.293] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78005, oid: "organization_id", upload_time: "2026-08-21T12:36:29Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:30], updated_at: ~N[2026-08-21 12:36:30]} [2026-08-21 12:36:30.293] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:36:29Z", "value" => "online"} [2026-08-21 12:36:30.343] [DEBUG] QUERY OK db=50.0ms idle=60.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:36:29Z", "online", "status", 78005, ~N[2026-08-21 12:36:30], ~N[2026-08-21 12:36:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:30.344] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793597, itemkey: "status", value: "online", timestamp: "2026-08-21T12:36:29Z", message: "Terminal status update", status_log_id: 78005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:30], updated_at: ~N[2026-08-21 12:36:30]}} [2026-08-21 12:36:30.344] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:36:30.344] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:36:29Z", "value" => "51"} [2026-08-21 12:36:30.345] [DEBUG] HANDLE EVENT "apply_date_preset" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"preset" => "this_month", "value" => ""} [2026-08-21 12:36:30.347] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=0.3ms idle=1.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-01], ~D[2026-08-21], ~D[2026-08-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:30.349] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=1.1ms idle=0.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:30.391] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=40.4ms idle=0.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-01], ~D[2026-08-21], ~D[2026-08-01], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:36:30.401] [DEBUG] QUERY OK db=55.0ms queue=0.9ms idle=52.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:36:29Z", "51", "battery", 78005, ~N[2026-08-21 12:36:30], ~N[2026-08-21 12:36:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:30.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793598, itemkey: "battery", value: "51", timestamp: "2026-08-21T12:36:29Z", message: "Battery level", status_log_id: 78005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:30], updated_at: ~N[2026-08-21 12:36:30]}} [2026-08-21 12:36:30.401] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:36:29Z", "value" => "online"} [2026-08-21 12:36:30.432] [DEBUG] QUERY OK source="core_transactions" db=40.5ms idle=0.4ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-01], ~D[2026-08-21], ~D[2026-08-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:30.434] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.7ms idle=1.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:30.438] [DEBUG] QUERY OK db=36.7ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:36:29Z", "online", "network", 78005, ~N[2026-08-21 12:36:30], ~N[2026-08-21 12:36:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:30.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793599, itemkey: "network", value: "online", timestamp: "2026-08-21T12:36:29Z", message: "Network connectivity", status_log_id: 78005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:30], updated_at: ~N[2026-08-21 12:36:30]}} [2026-08-21 12:36:30.438] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:36:30.439] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:36:29Z", "value" => "0"} [2026-08-21 12:36:30.476] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=40.0ms idle=0.9ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-08-01], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:36:30.476] [DEBUG] Replied in 131ms [2026-08-21 12:36:30.496] [DEBUG] QUERY OK db=56.9ms queue=0.1ms idle=0.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:36:29Z", "0", "cpu", 78005, ~N[2026-08-21 12:36:30], ~N[2026-08-21 12:36:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:30.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793600, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:36:29Z", message: "CPU usage percentage", status_log_id: 78005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:30], updated_at: ~N[2026-08-21 12:36:30]}} [2026-08-21 12:36:30.496] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:36:29Z", "value" => "1.0.0"} [2026-08-21 12:36:30.581] [DEBUG] QUERY OK db=84.0ms idle=20.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:36:29Z", "1.0.0", "parameter_config", 78005, ~N[2026-08-21 12:36:30], ~N[2026-08-21 12:36:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:30.581] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793601, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:36:29Z", message: "Current parameters version", status_log_id: 78005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:30], updated_at: ~N[2026-08-21 12:36:30]}} [2026-08-21 12:36:30.582] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:36:29Z", "value" => "1.0.1"} [2026-08-21 12:36:30.652] [DEBUG] QUERY OK db=69.9ms idle=86.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:36:29Z", "1.0.1", "emv_config", 78005, ~N[2026-08-21 12:36:30], ~N[2026-08-21 12:36:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:30.652] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793602, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:36:29Z", message: "Current EMV config version", status_log_id: 78005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:30], updated_at: ~N[2026-08-21 12:36:30]}} [2026-08-21 12:36:30.653] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:36:29Z", "value" => ""} [2026-08-21 12:36:30.677] [DEBUG] QUERY OK db=23.4ms queue=0.6ms idle=72.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:36:29Z", "keys_config", 78005, ~N[2026-08-21 12:36:30], ~N[2026-08-21 12:36:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:30.677] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793603, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:36:29Z", message: "Current keys config version", status_log_id: 78005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:30], updated_at: ~N[2026-08-21 12:36:30]}} [2026-08-21 12:36:30.678] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:36:29Z", "value" => "3.8.7.3"} [2026-08-21 12:36:30.744] [DEBUG] QUERY OK db=65.9ms idle=14.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:36:29Z", "3.8.7.3", "application", 78005, ~N[2026-08-21 12:36:30], ~N[2026-08-21 12:36:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:30.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793604, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:36:29Z", message: "Current application version", status_log_id: 78005, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:30], updated_at: ~N[2026-08-21 12:36:30]}} [2026-08-21 12:36:30.745] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:36:30Z"} [2026-08-21 12:36:30.745] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:36:30Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 40, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:36:32.104] [DEBUG] HANDLE EVENT "apply_date_preset" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"preset" => "this_month", "value" => ""} [2026-08-21 12:36:32.108] [DEBUG] QUERY OK source="core_transactions" db=2.9ms idle=438.1ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-01], ~D[2026-08-21], ~D[2026-08-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:32.109] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.8ms idle=99.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:32.111] [DEBUG] QUERY OK source="core_transactions" db=0.6ms queue=0.3ms idle=2.0ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-01], ~D[2026-08-21], ~D[2026-08-01], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:36:32.151] [DEBUG] QUERY OK source="core_transactions" db=39.7ms idle=1.6ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-01], ~D[2026-08-21], ~D[2026-08-01], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:32.153] [DEBUG] QUERY OK source="tid_masters" db=1.1ms queue=0.6ms idle=40.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:32.155] [DEBUG] QUERY OK source="merchant_adjustments" db=0.9ms queue=0.3ms idle=2.5ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-08-01], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:36:32.155] [DEBUG] Replied in 50ms [2026-08-21 12:36:34.261] [DEBUG] HANDLE EVENT "apply_date_preset" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"preset" => "30d", "value" => ""} [2026-08-21 12:36:34.262] [DEBUG] QUERY OK source="core_transactions" db=0.7ms idle=590.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-23], ~D[2026-08-21], ~D[2026-07-23], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:34.264] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.5ms idle=148.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:34.265] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=0.3ms idle=1.9ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-23], ~D[2026-08-21], ~D[2026-07-23], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:36:34.305] [DEBUG] QUERY OK source="core_transactions" db=39.0ms idle=1.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-23], ~D[2026-08-21], ~D[2026-07-23], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:34.307] [DEBUG] QUERY OK source="tid_masters" db=1.1ms queue=0.6ms idle=40.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:34.309] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=0.5ms idle=3.3ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-23], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:36:34.309] [DEBUG] Replied in 48ms [2026-08-21 12:36:34.476] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:36:34.476] [INFO ] Incoming JSON payload: {"oid":"b121d261-ca21-4539-85c4-74579c466092","sn":"98251226730001","uploadTime":"2026-08-21T12:36:33Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"ram_free_mb","value":"882","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:36:33Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:36:34.477] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b121d261-ca21-4539-85c4-74579c466092", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:36:33Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:36:33Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:36:33Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:36:33Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:36:33Z", "value" => "882"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:36:33Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:36:33Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:36:33Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:36:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:36:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:36:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:36:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:36:33Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:36:33Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:36:33Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:36:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:36:33Z", "vendor" => "morefun"} [2026-08-21 12:36:34.478] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:36:34.478] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:36:34.478] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:36:34.479] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.1ms idle=170.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-08-21 12:36:34.481] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.4ms idle=170.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-08-21 12:36:34.481] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:36:34.483] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:36:34.573] [DEBUG] QUERY OK source="tms_terminals" db=47.1ms queue=41.7ms idle=3.1ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 12:36:34], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:36:34.573] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:36:34.573] [INFO ] Event published: terminal_updated [2026-08-21 12:36:34.573] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:36:34.574] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms idle=90.3ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:36:34], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:36:34.573] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:36:34.574] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:36:34.576] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.5ms idle=0.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:36:34.577] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:36:34.577] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:36:34.679] [DEBUG] QUERY OK source="tms_terminals" db=104.4ms queue=0.6ms idle=1.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-08-21 12:36:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:36:34.680] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:36:34.680] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:36:34.729] [DEBUG] QUERY OK source="tms_terminals" db=47.9ms queue=0.7ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:36:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:36:34.775] [DEBUG] QUERY OK db=45.4ms idle=49.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b121d261-ca21-4539-85c4-74579c466092", "2026-08-21T12:36:33Z", ~N[2026-08-21 12:36:34], ~N[2026-08-21 12:36:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:36:34.776] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78006, oid: "b121d261-ca21-4539-85c4-74579c466092", upload_time: "2026-08-21T12:36:33Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:34], updated_at: ~N[2026-08-21 12:36:34]} [2026-08-21 12:36:34.776] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:36:33Z", "value" => "morefun"} [2026-08-21 12:36:34.834] [DEBUG] QUERY OK db=57.0ms queue=1.3ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "morefun", "vendor", 78006, ~N[2026-08-21 12:36:34], ~N[2026-08-21 12:36:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:34.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793605, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:34], updated_at: ~N[2026-08-21 12:36:34]}} [2026-08-21 12:36:34.835] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:36:33Z", "value" => "kiosk_launcher"} [2026-08-21 12:36:34.885] [DEBUG] QUERY OK db=49.0ms queue=0.8ms idle=59.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "kiosk_launcher", "model", 78006, ~N[2026-08-21 12:36:34], ~N[2026-08-21 12:36:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:34.885] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793606, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:34], updated_at: ~N[2026-08-21 12:36:34]}} [2026-08-21 12:36:34.885] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:36:33Z", "value" => "1.0"} [2026-08-21 12:36:34.927] [DEBUG] QUERY OK db=41.6ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "1.0", "app_version", 78006, ~N[2026-08-21 12:36:34], ~N[2026-08-21 12:36:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:34.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793607, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:34], updated_at: ~N[2026-08-21 12:36:34]}} [2026-08-21 12:36:34.929] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:36:33Z", "value" => "13"} [2026-08-21 12:36:34.985] [DEBUG] QUERY OK db=56.0ms queue=0.1ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "13", "android_version", 78006, ~N[2026-08-21 12:36:34], ~N[2026-08-21 12:36:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:34.985] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793608, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:34], updated_at: ~N[2026-08-21 12:36:34]}} [2026-08-21 12:36:34.986] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:36:33Z", "value" => "882"} [2026-08-21 12:36:35.037] [DEBUG] QUERY OK db=50.8ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "882", "ram_free_mb", 78006, ~N[2026-08-21 12:36:34], ~N[2026-08-21 12:36:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:35.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793609, itemkey: "ram_free_mb", value: "882", timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:34], updated_at: ~N[2026-08-21 12:36:34]}} [2026-08-21 12:36:35.038] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:36:33Z", "value" => "WIFI"} [2026-08-21 12:36:35.089] [DEBUG] QUERY OK db=50.9ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "WIFI", "network_type", 78006, ~N[2026-08-21 12:36:35], ~N[2026-08-21 12:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:35.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793610, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:35], updated_at: ~N[2026-08-21 12:36:35]}} [2026-08-21 12:36:35.091] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:36:33Z", "value" => "true"} [2026-08-21 12:36:35.141] [DEBUG] QUERY OK db=49.2ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "true", "kiosk_active", 78006, ~N[2026-08-21 12:36:35], ~N[2026-08-21 12:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:35.141] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793611, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:35], updated_at: ~N[2026-08-21 12:36:35]}} [2026-08-21 12:36:35.141] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:36:33Z", "value" => ""} [2026-08-21 12:36:35.167] [DEBUG] QUERY OK db=25.0ms queue=0.2ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:36:33Z", "sim_operator", 78006, ~N[2026-08-21 12:36:35], ~N[2026-08-21 12:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:35.167] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793612, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:35], updated_at: ~N[2026-08-21 12:36:35]}} [2026-08-21 12:36:35.167] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:36:33Z", "value" => "UNKNOWN"} [2026-08-21 12:36:35.226] [DEBUG] QUERY OK db=58.7ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "UNKNOWN", "sim_number", 78006, ~N[2026-08-21 12:36:35], ~N[2026-08-21 12:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:35.227] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793613, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:35], updated_at: ~N[2026-08-21 12:36:35]}} [2026-08-21 12:36:35.227] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:36:33Z", "value" => "UNKNOWN"} [2026-08-21 12:36:35.268] [DEBUG] QUERY OK db=40.5ms idle=60.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "UNKNOWN", "sim_iccid", 78006, ~N[2026-08-21 12:36:35], ~N[2026-08-21 12:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:35.268] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793614, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:35], updated_at: ~N[2026-08-21 12:36:35]}} [2026-08-21 12:36:35.268] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:36:33Z", "value" => "UNKNOWN"} [2026-08-21 12:36:35.308] [DEBUG] QUERY OK db=39.7ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "UNKNOWN", "sim_imsi", 78006, ~N[2026-08-21 12:36:35], ~N[2026-08-21 12:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:35.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793615, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:35], updated_at: ~N[2026-08-21 12:36:35]}} [2026-08-21 12:36:35.309] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:36:33Z", "value" => "UNKNOWN"} [2026-08-21 12:36:35.352] [DEBUG] QUERY OK db=41.9ms queue=0.3ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "UNKNOWN", "sim_iccid2", 78006, ~N[2026-08-21 12:36:35], ~N[2026-08-21 12:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:35.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793616, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:35], updated_at: ~N[2026-08-21 12:36:35]}} [2026-08-21 12:36:35.352] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:36:33Z", "value" => "UNKNOWN"} [2026-08-21 12:36:35.386] [DEBUG] QUERY OK db=33.3ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "UNKNOWN", "sim_imsi2", 78006, ~N[2026-08-21 12:36:35], ~N[2026-08-21 12:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:35.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793617, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:35], updated_at: ~N[2026-08-21 12:36:35]}} [2026-08-21 12:36:35.386] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:36:33Z", "value" => "36"} [2026-08-21 12:36:35.440] [DEBUG] QUERY OK db=53.7ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "36", "data_usage_mb", 78006, ~N[2026-08-21 12:36:35], ~N[2026-08-21 12:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:35.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793618, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:35], updated_at: ~N[2026-08-21 12:36:35]}} [2026-08-21 12:36:35.441] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:36:33Z", "value" => "0"} [2026-08-21 12:36:35.472] [DEBUG] QUERY OK db=31.0ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "0", "mobile_data_mb", 78006, ~N[2026-08-21 12:36:35], ~N[2026-08-21 12:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:35.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793619, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:35], updated_at: ~N[2026-08-21 12:36:35]}} [2026-08-21 12:36:35.473] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:36:33Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:36:35.541] [DEBUG] QUERY OK db=66.8ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:36:33Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78006, ~N[2026-08-21 12:36:35], ~N[2026-08-21 12:36:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:36:35.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793620, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:36:33Z", message: nil, status_log_id: 78006, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:36:35], updated_at: ~N[2026-08-21 12:36:35]}} [2026-08-21 12:36:35.554] [DEBUG] HANDLE EVENT "apply_date_preset" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"preset" => "7d", "value" => ""} [2026-08-21 12:36:35.555] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=81.8ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-15], ~D[2026-08-21], ~D[2026-08-15], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:35.556] [DEBUG] QUERY OK source="tid_masters" db=0.4ms queue=0.4ms idle=14.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:35.559] [DEBUG] QUERY OK source="core_transactions" db=1.6ms queue=0.7ms idle=1.8ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-15], ~D[2026-08-21], ~D[2026-08-15], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:36:35.598] [DEBUG] QUERY OK source="core_transactions" db=38.0ms idle=3.3ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-15], ~D[2026-08-21], ~D[2026-08-15], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:35.601] [DEBUG] QUERY OK source="tid_masters" db=1.0ms queue=1.4ms idle=38.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:35.604] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=0.8ms idle=4.7ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-08-15], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:36:35.604] [DEBUG] Replied in 50ms [2026-08-21 12:36:36.902] [DEBUG] HANDLE EVENT "apply_date_preset" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"preset" => "yesterday", "value" => ""} [2026-08-21 12:36:36.903] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.1ms idle=1227.2ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-20], ~D[2026-08-20], ~D[2026-08-20], ~D[2026-08-20]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:36.904] [DEBUG] QUERY OK source="tid_masters" db=0.3ms queue=0.3ms idle=225.7ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (false) [] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:36.906] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=0.3ms idle=1.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-20], ~D[2026-08-20], ~D[2026-08-20], ~D[2026-08-20], "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:36:36.946] [DEBUG] QUERY OK source="core_transactions" db=39.7ms idle=1.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-20], ~D[2026-08-20], ~D[2026-08-20], ~D[2026-08-20]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:36.947] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.6ms idle=40.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (false) [] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:36.948] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms idle=1.8ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-20], ~D[2026-08-20]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:36:36.949] [DEBUG] Replied in 47ms [2026-08-21 12:36:38.565] [DEBUG] HANDLE EVENT "apply_date_preset" in PlatformWeb.SettlementLive.SettlementSummary Parameters: %{"preset" => "today", "value" => ""} [2026-08-21 12:36:38.566] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=883.9ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-21], ~D[2026-08-21], ~D[2026-08-21], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:38.568] [DEBUG] QUERY OK source="tid_masters" db=0.3ms queue=1.4ms idle=376.7ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (false) [] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:38.570] [DEBUG] QUERY OK source="core_transactions" db=0.6ms queue=0.4ms idle=2.3ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-08-21], ~D[2026-08-21], ~D[2026-08-21], ~D[2026-08-21], "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:36:38.611] [DEBUG] QUERY OK source="core_transactions" db=40.3ms idle=1.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-08-21], ~D[2026-08-21], ~D[2026-08-21], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:36:38.612] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.4ms idle=41.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (false) [] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:36:38.613] [DEBUG] QUERY OK source="merchant_adjustments" db=0.3ms idle=1.7ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') [~D[2026-08-21], ~D[2026-08-21]] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:36:38.613] [DEBUG] Replied in 48ms [2026-08-21 12:36:40.209] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:36:19Z"} [2026-08-21 12:36:40.209] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:36:19Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 35, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:36:42.671] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:36:22Z"} [2026-08-21 12:36:42.672] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:36:22Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 38, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:36:50.489] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:36:30Z"} [2026-08-21 12:36:50.489] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:36:30Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 41, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:37:04.571] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:37:04.571] [INFO ] Incoming JSON payload: {"oid":"6e60005e-114a-4c85-8c6f-511164c93600","sn":"98251226730001","uploadTime":"2026-08-21T12:37:04Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"ram_free_mb","value":"869","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:37:04Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:37:04.581] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6e60005e-114a-4c85-8c6f-511164c93600", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:37:04Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:37:04Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:37:04Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:37:04Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:37:04Z", "value" => "869"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:37:04Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:37:04Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:37:04Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:37:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:37:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:37:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:37:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:37:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:37:04Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:37:04Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:37:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:37:04Z", "vendor" => "morefun"} [2026-08-21 12:37:04.581] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:37:04.581] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:37:04.582] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:37:04.585] [DEBUG] QUERY OK source="parameter_templates" db=2.9ms idle=807.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-08-21 12:37:04.587] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=423.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-08-21 12:37:04.592] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:37:04.595] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=7.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:37:04.595] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:37:04.641] [DEBUG] QUERY OK source="tms_terminals" db=45.3ms idle=8.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:37:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:37:04.641] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:37:04.644] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms idle=46.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:37:04.679] [DEBUG] QUERY OK source="tms_terminals" db=34.4ms queue=0.1ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:37:04], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:37:04.744] [DEBUG] QUERY OK db=62.2ms idle=37.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6e60005e-114a-4c85-8c6f-511164c93600", "2026-08-21T12:37:04Z", ~N[2026-08-21 12:37:04], ~N[2026-08-21 12:37:04]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:37:04.744] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78007, oid: "6e60005e-114a-4c85-8c6f-511164c93600", upload_time: "2026-08-21T12:37:04Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:04], updated_at: ~N[2026-08-21 12:37:04]} [2026-08-21 12:37:04.744] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:37:04Z", "value" => "morefun"} [2026-08-21 12:37:04.789] [DEBUG] QUERY OK db=44.0ms queue=0.5ms idle=65.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "morefun", "vendor", 78007, ~N[2026-08-21 12:37:04], ~N[2026-08-21 12:37:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:04.790] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793621, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:04], updated_at: ~N[2026-08-21 12:37:04]}} [2026-08-21 12:37:04.790] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:37:04Z", "value" => "kiosk_launcher"} [2026-08-21 12:37:04.863] [DEBUG] QUERY OK db=73.1ms idle=10.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "kiosk_launcher", "model", 78007, ~N[2026-08-21 12:37:04], ~N[2026-08-21 12:37:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:04.864] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793622, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:04], updated_at: ~N[2026-08-21 12:37:04]}} [2026-08-21 12:37:04.864] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:37:04Z", "value" => "1.0"} [2026-08-21 12:37:04.895] [DEBUG] QUERY OK db=30.9ms idle=74.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "1.0", "app_version", 78007, ~N[2026-08-21 12:37:04], ~N[2026-08-21 12:37:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:04.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793623, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:04], updated_at: ~N[2026-08-21 12:37:04]}} [2026-08-21 12:37:04.896] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:37:04Z", "value" => "13"} [2026-08-21 12:37:04.949] [DEBUG] QUERY OK db=52.9ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "13", "android_version", 78007, ~N[2026-08-21 12:37:04], ~N[2026-08-21 12:37:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:04.950] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793624, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:04], updated_at: ~N[2026-08-21 12:37:04]}} [2026-08-21 12:37:04.950] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:37:04Z", "value" => "869"} [2026-08-21 12:37:04.982] [DEBUG] QUERY OK db=31.1ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "869", "ram_free_mb", 78007, ~N[2026-08-21 12:37:04], ~N[2026-08-21 12:37:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:04.982] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793625, itemkey: "ram_free_mb", value: "869", timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:04], updated_at: ~N[2026-08-21 12:37:04]}} [2026-08-21 12:37:04.982] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:37:04Z", "value" => "WIFI"} [2026-08-21 12:37:05.039] [DEBUG] QUERY OK db=56.9ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "WIFI", "network_type", 78007, ~N[2026-08-21 12:37:04], ~N[2026-08-21 12:37:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:05.040] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793626, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:04], updated_at: ~N[2026-08-21 12:37:04]}} [2026-08-21 12:37:05.040] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:37:04Z", "value" => "true"} [2026-08-21 12:37:05.073] [DEBUG] QUERY OK db=32.1ms queue=0.1ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "true", "kiosk_active", 78007, ~N[2026-08-21 12:37:05], ~N[2026-08-21 12:37:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:05.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793627, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:05], updated_at: ~N[2026-08-21 12:37:05]}} [2026-08-21 12:37:05.074] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:37:04Z", "value" => ""} [2026-08-21 12:37:05.116] [DEBUG] QUERY OK db=42.3ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:37:04Z", "sim_operator", 78007, ~N[2026-08-21 12:37:05], ~N[2026-08-21 12:37:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:05.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793628, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:05], updated_at: ~N[2026-08-21 12:37:05]}} [2026-08-21 12:37:05.117] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:37:04Z", "value" => "UNKNOWN"} [2026-08-21 12:37:05.155] [DEBUG] QUERY OK db=38.2ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "UNKNOWN", "sim_number", 78007, ~N[2026-08-21 12:37:05], ~N[2026-08-21 12:37:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:05.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793629, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:05], updated_at: ~N[2026-08-21 12:37:05]}} [2026-08-21 12:37:05.157] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:37:04Z", "value" => "UNKNOWN"} [2026-08-21 12:37:05.204] [DEBUG] QUERY OK db=46.4ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "UNKNOWN", "sim_iccid", 78007, ~N[2026-08-21 12:37:05], ~N[2026-08-21 12:37:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:05.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793630, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:05], updated_at: ~N[2026-08-21 12:37:05]}} [2026-08-21 12:37:05.205] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:37:04Z", "value" => "UNKNOWN"} [2026-08-21 12:37:05.245] [DEBUG] QUERY OK db=40.1ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "UNKNOWN", "sim_imsi", 78007, ~N[2026-08-21 12:37:05], ~N[2026-08-21 12:37:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:05.249] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793631, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:05], updated_at: ~N[2026-08-21 12:37:05]}} [2026-08-21 12:37:05.250] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:37:04Z", "value" => "UNKNOWN"} [2026-08-21 12:37:05.295] [DEBUG] QUERY OK db=42.5ms queue=0.7ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "UNKNOWN", "sim_iccid2", 78007, ~N[2026-08-21 12:37:05], ~N[2026-08-21 12:37:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:05.296] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793632, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:05], updated_at: ~N[2026-08-21 12:37:05]}} [2026-08-21 12:37:05.296] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:37:04Z", "value" => "UNKNOWN"} [2026-08-21 12:37:05.323] [DEBUG] QUERY OK db=26.4ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "UNKNOWN", "sim_imsi2", 78007, ~N[2026-08-21 12:37:05], ~N[2026-08-21 12:37:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:05.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793633, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:05], updated_at: ~N[2026-08-21 12:37:05]}} [2026-08-21 12:37:05.324] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:37:04Z", "value" => "36"} [2026-08-21 12:37:05.380] [DEBUG] QUERY OK db=54.1ms idle=30.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "36", "data_usage_mb", 78007, ~N[2026-08-21 12:37:05], ~N[2026-08-21 12:37:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:05.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793634, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:05], updated_at: ~N[2026-08-21 12:37:05]}} [2026-08-21 12:37:05.387] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:37:04Z", "value" => "0"} [2026-08-21 12:37:05.425] [DEBUG] QUERY OK db=37.8ms idle=64.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "0", "mobile_data_mb", 78007, ~N[2026-08-21 12:37:05], ~N[2026-08-21 12:37:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:05.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793635, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:05], updated_at: ~N[2026-08-21 12:37:05]}} [2026-08-21 12:37:05.426] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:37:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:37:05.470] [DEBUG] QUERY OK db=42.6ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:04Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78007, ~N[2026-08-21 12:37:05], ~N[2026-08-21 12:37:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:05.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793636, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:37:04Z", message: nil, status_log_id: 78007, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:05], updated_at: ~N[2026-08-21 12:37:05]}} [2026-08-21 12:37:07.193] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:37:07.194] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:37:07Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:37:07Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:37:07Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:37:07Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:37:07Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:37:07Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:37:07Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:37:07Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:37:07Z","vendor":"MoreFun"} [2026-08-21 12:37:07.194] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:37:07Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:37:07Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:37:07Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:37:07Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:37:07Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:37:07Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:37:07Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:37:07Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:37:07Z", "vendor" => "MoreFun"} [2026-08-21 12:37:07.194] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:37:07.194] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:37:07.194] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:37:07.195] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=405.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`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-08-21 12:37:07.196] [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.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 12:37:07.197] [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-08-21 12:37:07.199] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.7ms idle=1.5ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:37:07.200] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms 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-08-21 12:37:07.241] [DEBUG] QUERY OK source="pos_merchant" db=40.5ms idle=1.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:37:07.242] [DEBUG] QUERY OK db=0.4ms queue=0.5ms idle=62.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 ["626165170000000"] [2026-08-21 12:37:07.243] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:37:07.243] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=42.3ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517892"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:37:07.243] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=16517892, using defaults [2026-08-21 12:37:07.244] [DEBUG] QUERY OK source="address" db=0.2ms idle=2.3ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:37:07.244] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:37:07.245] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:37:07.284] [DEBUG] QUERY OK db=36.8ms idle=2.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "10a324e8e3801c3bb9dfec5a4361fa2ba5df23234d729db56e7fc6bb83255fcb", 1253, 936, ~U[2026-08-21 12:37:07Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:37:07], ~N[2026-08-21 12:37:07]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:37:07.284] [INFO ] AutoPushService: Created push log 49088 for MF919 params.zip [2026-08-21 12:37:07.284] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1253, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:37:07.286] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:37:07.286] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:37:07.288] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=42.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-08-21 12:37:07.291] [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-08-21 12:37:07.371] [DEBUG] QUERY OK db=79.2ms idle=8.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "799eb4cab5a546f88db164278cff1d96f0eca2b36c53940a511d32fa591c12d0", 1285, 17947, ~U[2026-08-21 12:37:07Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:37:07], ~N[2026-08-21 12:37:07]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:37:07.371] [INFO ] AutoPushService: Created push log 49089 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:37:07.372] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 1285, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:37:07.372] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:37:07.372] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:37:07.374] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=85.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-08-21 12:37:07.374] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:37:07.376] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=3.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:37:07.377] [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-08-21 12:37:07.383] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:37:07.383] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:37:07.383] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:37:07.384] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=9.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-08-21 12:37:07.385] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:37:07.385] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:37:07.387] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms 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-08-21 12:37:07.465] [DEBUG] QUERY OK source="tms_terminals" db=36.3ms queue=41.5ms idle=3.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:37:07], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:37:07.466] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:37:07.467] [INFO ] Event published: terminal_updated [2026-08-21 12:37:07.467] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:37:07.467] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:37:07.467] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:37:07.468] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.8ms queue=0.3ms idle=79.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:37:07], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:37:07.470] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.4ms 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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:37:07.473] [DEBUG] QUERY OK source="terminal_group_rules" db=2.8ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:37:07.473] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:37:07.547] [DEBUG] QUERY OK source="tms_terminals" db=36.8ms queue=41.9ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:37:07], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:37:07.548] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=74.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-08-21 12:37:07.549] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms 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-08-21 12:37:07.550] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms 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-08-21 12:37:07.551] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:37:07.577] [DEBUG] QUERY OK source="parameter_push_logs" db=25.1ms idle=2.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-08-21 12:07:07]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:37:07.577] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:37:07.577] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:37:07.579] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:37:07.580] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=3.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:37:07.581] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:37:07.581] [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-08-21 12:37:07.675] [DEBUG] QUERY OK source="tms_terminals" db=52.8ms queue=40.8ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:37:07], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:37:07.814] [DEBUG] QUERY OK db=138.5ms idle=94.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:37:07Z", ~N[2026-08-21 12:37:07], ~N[2026-08-21 12:37:07]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:37:07.815] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78008, oid: "organization_id", upload_time: "2026-08-21T12:37:07Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:07], updated_at: ~N[2026-08-21 12:37:07]} [2026-08-21 12:37:07.815] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:37:07Z", "value" => "online"} [2026-08-21 12:37:07.952] [DEBUG] QUERY OK db=136.8ms idle=22.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:37:07Z", "online", "status", 78008, ~N[2026-08-21 12:37:07], ~N[2026-08-21 12:37:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:07.952] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793637, itemkey: "status", value: "online", timestamp: "2026-08-21T12:37:07Z", message: "Terminal status update", status_log_id: 78008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:07], updated_at: ~N[2026-08-21 12:37:07]}} [2026-08-21 12:37:07.952] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:37:07.953] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:37:07Z", "value" => "51"} [2026-08-21 12:37:08.032] [DEBUG] QUERY OK db=78.8ms queue=0.1ms idle=138.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:37:07Z", "51", "battery", 78008, ~N[2026-08-21 12:37:07], ~N[2026-08-21 12:37:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:08.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793638, itemkey: "battery", value: "51", timestamp: "2026-08-21T12:37:07Z", message: "Battery level", status_log_id: 78008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:07], updated_at: ~N[2026-08-21 12:37:07]}} [2026-08-21 12:37:08.033] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:37:07Z", "value" => "online"} [2026-08-21 12:37:08.095] [DEBUG] QUERY OK db=61.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-08-21T12:37:07Z", "online", "network", 78008, ~N[2026-08-21 12:37:08], ~N[2026-08-21 12:37:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:08.095] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793639, itemkey: "network", value: "online", timestamp: "2026-08-21T12:37:07Z", message: "Network connectivity", status_log_id: 78008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:08], updated_at: ~N[2026-08-21 12:37:08]}} [2026-08-21 12:37:08.096] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:37:08.097] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:37:07Z", "value" => "0"} [2026-08-21 12:37:08.186] [DEBUG] QUERY OK db=87.8ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:37:07Z", "0", "cpu", 78008, ~N[2026-08-21 12:37:08], ~N[2026-08-21 12:37:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:08.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793640, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:37:07Z", message: "CPU usage percentage", status_log_id: 78008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:08], updated_at: ~N[2026-08-21 12:37:08]}} [2026-08-21 12:37:08.186] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:37:07Z", "value" => "1.0.0"} [2026-08-21 12:37:08.262] [DEBUG] QUERY OK db=75.5ms idle=91.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:37:07Z", "1.0.0", "parameter_config", 78008, ~N[2026-08-21 12:37:08], ~N[2026-08-21 12:37:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:08.263] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793641, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:37:07Z", message: "Current parameters version", status_log_id: 78008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:08], updated_at: ~N[2026-08-21 12:37:08]}} [2026-08-21 12:37:08.263] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:37:07Z", "value" => "1.0.1"} [2026-08-21 12:37:08.322] [DEBUG] QUERY OK db=58.7ms idle=77.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:37:07Z", "1.0.1", "emv_config", 78008, ~N[2026-08-21 12:37:08], ~N[2026-08-21 12:37:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:08.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793642, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:37:07Z", message: "Current EMV config version", status_log_id: 78008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:08], updated_at: ~N[2026-08-21 12:37:08]}} [2026-08-21 12:37:08.322] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:37:07Z", "value" => ""} [2026-08-21 12:37:08.411] [DEBUG] QUERY OK db=87.7ms queue=0.8ms idle=61.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:37:07Z", "keys_config", 78008, ~N[2026-08-21 12:37:08], ~N[2026-08-21 12:37:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:08.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793643, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:37:07Z", message: "Current keys config version", status_log_id: 78008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:08], updated_at: ~N[2026-08-21 12:37:08]}} [2026-08-21 12:37:08.412] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:37:07Z", "value" => "3.8.7.3"} [2026-08-21 12:37:08.489] [DEBUG] QUERY OK db=76.8ms idle=90.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:37:07Z", "3.8.7.3", "application", 78008, ~N[2026-08-21 12:37:08], ~N[2026-08-21 12:37:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:08.489] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793644, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:37:07Z", message: "Current application version", status_log_id: 78008, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:08], updated_at: ~N[2026-08-21 12:37:08]}} [2026-08-21 12:37:08.490] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:37:07Z"} [2026-08-21 12:37:08.490] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:37:07Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 45, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:37:27.723] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:37:07Z"} [2026-08-21 12:37:27.723] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:37:07Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 46, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:37:34.629] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:37:34.629] [INFO ] Incoming JSON payload: {"oid":"8589ff10-dab1-4683-a122-8a33047658a7","sn":"98251226730001","uploadTime":"2026-08-21T12:37:34Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"ram_free_mb","value":"877","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:37:34Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:37:34.630] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8589ff10-dab1-4683-a122-8a33047658a7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:37:34Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:37:34Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:37:34Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:37:34Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:37:34Z", "value" => "877"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:37:34Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:37:34Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:37:34Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:37:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:37:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:37:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:37:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:37:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:37:34Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:37:34Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:37:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:37:34Z", "vendor" => "morefun"} [2026-08-21 12:37:34.631] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:37:34.631] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:37:34.631] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:37:34.632] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=759.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 12:37:34.632] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=423.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-08-21 12:37:34.633] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:37:34.633] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:37:34.708] [DEBUG] QUERY OK source="tms_terminals" db=33.4ms queue=40.6ms idle=1.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 12:37:34], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:37:34.708] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:37:34.709] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:37:34.709] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:37:34.709] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:37:34.708] [INFO ] Event published: terminal_updated [2026-08-21 12:37:34.710] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.0ms idle=75.9ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:37:34], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:37:34.712] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms idle=2.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:37:34.713] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms idle=0.4ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:37:34.714] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:37:34.785] [DEBUG] QUERY OK source="tms_terminals" db=32.2ms queue=41.5ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 12:37:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:37:34.785] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:37:34.786] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=72.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:37:34.880] [DEBUG] QUERY OK source="tms_terminals" db=52.3ms queue=40.6ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:37:34], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:37:34.914] [DEBUG] QUERY OK db=33.4ms idle=4.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "8589ff10-dab1-4683-a122-8a33047658a7", "2026-08-21T12:37:34Z", ~N[2026-08-21 12:37:34], ~N[2026-08-21 12:37:34]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:37:34.915] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78009, oid: "8589ff10-dab1-4683-a122-8a33047658a7", upload_time: "2026-08-21T12:37:34Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:34], updated_at: ~N[2026-08-21 12:37:34]} [2026-08-21 12:37:34.916] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:37:34Z", "value" => "morefun"} [2026-08-21 12:37:34.987] [DEBUG] QUERY OK db=69.9ms queue=1.2ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "morefun", "vendor", 78009, ~N[2026-08-21 12:37:34], ~N[2026-08-21 12:37:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:34.987] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793645, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:34], updated_at: ~N[2026-08-21 12:37:34]}} [2026-08-21 12:37:34.988] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:37:34Z", "value" => "kiosk_launcher"} [2026-08-21 12:37:35.069] [DEBUG] QUERY OK db=39.1ms queue=41.5ms idle=74.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "kiosk_launcher", "model", 78009, ~N[2026-08-21 12:37:34], ~N[2026-08-21 12:37:34]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793646, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:34], updated_at: ~N[2026-08-21 12:37:34]}} [2026-08-21 12:37:35.069] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:37:34Z", "value" => "1.0"} [2026-08-21 12:37:35.133] [DEBUG] QUERY OK db=63.0ms idle=82.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "1.0", "app_version", 78009, ~N[2026-08-21 12:37:35], ~N[2026-08-21 12:37:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.133] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793647, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:35], updated_at: ~N[2026-08-21 12:37:35]}} [2026-08-21 12:37:35.133] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:37:34Z", "value" => "13"} [2026-08-21 12:37:35.204] [DEBUG] QUERY OK db=70.2ms idle=64.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "13", "android_version", 78009, ~N[2026-08-21 12:37:35], ~N[2026-08-21 12:37:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793648, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:35], updated_at: ~N[2026-08-21 12:37:35]}} [2026-08-21 12:37:35.204] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:37:34Z", "value" => "877"} [2026-08-21 12:37:35.248] [DEBUG] QUERY OK db=44.1ms idle=71.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "877", "ram_free_mb", 78009, ~N[2026-08-21 12:37:35], ~N[2026-08-21 12:37:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.249] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793649, itemkey: "ram_free_mb", value: "877", timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:35], updated_at: ~N[2026-08-21 12:37:35]}} [2026-08-21 12:37:35.249] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:37:34Z", "value" => "WIFI"} [2026-08-21 12:37:35.288] [DEBUG] QUERY OK db=38.6ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "WIFI", "network_type", 78009, ~N[2026-08-21 12:37:35], ~N[2026-08-21 12:37:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.288] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793650, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:35], updated_at: ~N[2026-08-21 12:37:35]}} [2026-08-21 12:37:35.288] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:37:34Z", "value" => "true"} [2026-08-21 12:37:35.330] [DEBUG] QUERY OK db=41.4ms idle=40.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "true", "kiosk_active", 78009, ~N[2026-08-21 12:37:35], ~N[2026-08-21 12:37:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.331] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793651, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:35], updated_at: ~N[2026-08-21 12:37:35]}} [2026-08-21 12:37:35.331] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:37:34Z", "value" => ""} [2026-08-21 12:37:35.383] [DEBUG] QUERY OK db=52.0ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:37:34Z", "sim_operator", 78009, ~N[2026-08-21 12:37:35], ~N[2026-08-21 12:37:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793652, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:35], updated_at: ~N[2026-08-21 12:37:35]}} [2026-08-21 12:37:35.384] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:37:34Z", "value" => "UNKNOWN"} [2026-08-21 12:37:35.428] [DEBUG] QUERY OK db=44.0ms idle=53.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "UNKNOWN", "sim_number", 78009, ~N[2026-08-21 12:37:35], ~N[2026-08-21 12:37:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793653, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:35], updated_at: ~N[2026-08-21 12:37:35]}} [2026-08-21 12:37:35.429] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:37:34Z", "value" => "UNKNOWN"} [2026-08-21 12:37:35.472] [DEBUG] QUERY OK db=42.4ms queue=0.2ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "UNKNOWN", "sim_iccid", 78009, ~N[2026-08-21 12:37:35], ~N[2026-08-21 12:37:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793654, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:35], updated_at: ~N[2026-08-21 12:37:35]}} [2026-08-21 12:37:35.472] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:37:34Z", "value" => "UNKNOWN"} [2026-08-21 12:37:35.504] [DEBUG] QUERY OK db=32.0ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "UNKNOWN", "sim_imsi", 78009, ~N[2026-08-21 12:37:35], ~N[2026-08-21 12:37:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793655, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:35], updated_at: ~N[2026-08-21 12:37:35]}} [2026-08-21 12:37:35.505] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:37:34Z", "value" => "UNKNOWN"} [2026-08-21 12:37:35.553] [DEBUG] QUERY OK db=48.1ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "UNKNOWN", "sim_iccid2", 78009, ~N[2026-08-21 12:37:35], ~N[2026-08-21 12:37:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793656, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:35], updated_at: ~N[2026-08-21 12:37:35]}} [2026-08-21 12:37:35.554] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:37:34Z", "value" => "UNKNOWN"} [2026-08-21 12:37:35.592] [DEBUG] QUERY OK db=37.3ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "UNKNOWN", "sim_imsi2", 78009, ~N[2026-08-21 12:37:35], ~N[2026-08-21 12:37:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.592] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793657, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:35], updated_at: ~N[2026-08-21 12:37:35]}} [2026-08-21 12:37:35.592] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:37:34Z", "value" => "36"} [2026-08-21 12:37:35.616] [DEBUG] QUERY OK db=23.7ms idle=38.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "36", "data_usage_mb", 78009, ~N[2026-08-21 12:37:35], ~N[2026-08-21 12:37:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793658, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:35], updated_at: ~N[2026-08-21 12:37:35]}} [2026-08-21 12:37:35.617] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:37:34Z", "value" => "0"} [2026-08-21 12:37:35.671] [DEBUG] QUERY OK db=52.7ms idle=26.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "0", "mobile_data_mb", 78009, ~N[2026-08-21 12:37:35], ~N[2026-08-21 12:37:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.671] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793659, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:35], updated_at: ~N[2026-08-21 12:37:35]}} [2026-08-21 12:37:35.671] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:37:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:37:35.709] [DEBUG] QUERY OK db=36.8ms queue=0.1ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:37:34Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78009, ~N[2026-08-21 12:37:35], ~N[2026-08-21 12:37:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:35.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793660, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:37:34Z", message: nil, status_log_id: 78009, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:35], updated_at: ~N[2026-08-21 12:37:35]}} [2026-08-21 12:37:40.168] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:37:40.168] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:37:40Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:37:40Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:37:40Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:37:40Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:37:40Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:37:40Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:37:40Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:37:40Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:37:40Z","vendor":"MoreFun"} [2026-08-21 12:37:40.169] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:37:40Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:37:40Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:37:40Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:37:40Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:37:40Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:37:40Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:37:40Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:37:40Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:37:40Z", "vendor" => "MoreFun"} [2026-08-21 12:37:40.169] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:37:40.169] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:37:40.170] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:37:40.171] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=973.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-08-21 12:37:40.172] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=276.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-08-21 12:37:40.173] [DEBUG] QUERY OK source="parameter_template_values" db=0.9ms 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-08-21 12:37:40.175] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.4ms idle=1.5ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:37:40.176] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms idle=2.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:37:40.217] [DEBUG] QUERY OK source="pos_merchant" db=40.2ms idle=1.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:37:40.218] [DEBUG] QUERY OK db=0.5ms queue=0.6ms idle=1034.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 ["626165170000000"] [2026-08-21 12:37:40.218] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:37:40.219] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=42.1ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:37:40.220] [DEBUG] QUERY OK source="address" db=0.4ms idle=2.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:37:40.220] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:37:40.221] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:37:40.291] [DEBUG] QUERY OK db=68.1ms idle=3.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "430b70982be8ad76ab3cda4e7242092a327ea1e287ff67ebf63f63a4945f6b30", 1508, 938, ~U[2026-08-21 12:37:40Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:37:40], ~N[2026-08-21 12:37:40]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:37:40.291] [INFO ] AutoPushService: Created push log 49090 for MF919 params.zip [2026-08-21 12:37:40.291] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1508, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:37:40.292] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:37:40.292] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:37:40.293] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=72.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:37:40.296] [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-08-21 12:37:40.321] [DEBUG] QUERY OK db=23.1ms idle=6.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c7cc784e7484c68a151031fe32221823fb2c989fbdd8a11eecc431a81e909b2a", 1604, 17947, ~U[2026-08-21 12:37:40Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:37:40], ~N[2026-08-21 12:37:40]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:37:40.321] [INFO ] AutoPushService: Created push log 49091 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:37:40.321] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 1604, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:37:40.321] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:37:40.321] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:37:40.322] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 12:37:40.322] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:37:40.323] [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.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:37:40.323] [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-08-21 12:37:40.324] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:37:40.324] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:37:40.325] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:37:40.327] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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-08-21 12:37:40.327] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:37:40.328] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:37:40.329] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.7ms 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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:37:40.406] [DEBUG] QUERY OK source="tms_terminals" db=35.4ms queue=41.2ms idle=2.6ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:37:40], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:37:40.406] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:37:40.406] [INFO ] Event published: terminal_updated [2026-08-21 12:37:40.407] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:37:40.407] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:37:40.407] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:37:40.408] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.0ms idle=77.7ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:37:40], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:37:40.410] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=2.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:37:40.412] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms idle=0.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-08-21 12:37:40.412] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:37:40.538] [DEBUG] QUERY OK source="tms_terminals" db=88.1ms queue=41.2ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:37:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:37:40.539] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=126.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-08-21 12:37:40.539] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=1.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:37:40.540] [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-08-21 12:37:40.540] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:37:40.567] [DEBUG] QUERY OK source="parameter_push_logs" db=26.3ms idle=1.0ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-08-21 12:07:40]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:37:40.567] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:37:40.567] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:37:40.568] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=27.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:37:40.569] [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.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:37:40.570] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:37:40.570] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:37:40.652] [DEBUG] QUERY OK source="tms_terminals" db=39.9ms queue=41.7ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:37:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:37:40.697] [DEBUG] QUERY OK db=43.7ms queue=0.2ms idle=82.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:37:40Z", ~N[2026-08-21 12:37:40], ~N[2026-08-21 12:37:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:37:40.697] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78010, oid: "organization_id", upload_time: "2026-08-21T12:37:40Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:40], updated_at: ~N[2026-08-21 12:37:40]} [2026-08-21 12:37:40.697] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:37:40Z", "value" => "online"} [2026-08-21 12:37:40.756] [DEBUG] QUERY OK db=58.8ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:37:40Z", "online", "status", 78010, ~N[2026-08-21 12:37:40], ~N[2026-08-21 12:37:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:40.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793661, itemkey: "status", value: "online", timestamp: "2026-08-21T12:37:40Z", message: "Terminal status update", status_log_id: 78010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:40], updated_at: ~N[2026-08-21 12:37:40]}} [2026-08-21 12:37:40.757] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:37:40.757] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:37:40Z", "value" => "51"} [2026-08-21 12:37:40.789] [DEBUG] QUERY OK db=31.7ms idle=60.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:37:40Z", "51", "battery", 78010, ~N[2026-08-21 12:37:40], ~N[2026-08-21 12:37:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:40.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793662, itemkey: "battery", value: "51", timestamp: "2026-08-21T12:37:40Z", message: "Battery level", status_log_id: 78010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:40], updated_at: ~N[2026-08-21 12:37:40]}} [2026-08-21 12:37:40.789] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:37:40Z", "value" => "online"} [2026-08-21 12:37:40.828] [DEBUG] QUERY OK db=38.1ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:37:40Z", "online", "network", 78010, ~N[2026-08-21 12:37:40], ~N[2026-08-21 12:37:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:40.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793663, itemkey: "network", value: "online", timestamp: "2026-08-21T12:37:40Z", message: "Network connectivity", status_log_id: 78010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:40], updated_at: ~N[2026-08-21 12:37:40]}} [2026-08-21 12:37:40.828] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:37:40.828] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:37:40Z", "value" => "0"} [2026-08-21 12:37:40.852] [DEBUG] QUERY OK db=22.9ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:37:40Z", "0", "cpu", 78010, ~N[2026-08-21 12:37:40], ~N[2026-08-21 12:37:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:40.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793664, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:37:40Z", message: "CPU usage percentage", status_log_id: 78010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:40], updated_at: ~N[2026-08-21 12:37:40]}} [2026-08-21 12:37:40.852] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:37:40Z", "value" => "1.0.0"} [2026-08-21 12:37:40.903] [DEBUG] QUERY OK db=50.2ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:37:40Z", "1.0.0", "parameter_config", 78010, ~N[2026-08-21 12:37:40], ~N[2026-08-21 12:37:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:40.903] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793665, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:37:40Z", message: "Current parameters version", status_log_id: 78010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:40], updated_at: ~N[2026-08-21 12:37:40]}} [2026-08-21 12:37:40.903] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:37:40Z", "value" => "1.0.1"} [2026-08-21 12:37:40.930] [DEBUG] QUERY OK db=25.9ms idle=5.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:37:40Z", "1.0.1", "emv_config", 78010, ~N[2026-08-21 12:37:40], ~N[2026-08-21 12:37:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:40.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793666, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:37:40Z", message: "Current EMV config version", status_log_id: 78010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:40], updated_at: ~N[2026-08-21 12:37:40]}} [2026-08-21 12:37:40.930] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:37:40Z", "value" => ""} [2026-08-21 12:37:41.046] [DEBUG] QUERY OK db=114.9ms queue=1.1ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:37:40Z", "keys_config", 78010, ~N[2026-08-21 12:37:40], ~N[2026-08-21 12:37:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:41.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793667, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:37:40Z", message: "Current keys config version", status_log_id: 78010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:40], updated_at: ~N[2026-08-21 12:37:40]}} [2026-08-21 12:37:41.047] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:37:40Z", "value" => "3.8.7.3"} [2026-08-21 12:37:41.128] [DEBUG] QUERY OK db=80.3ms idle=117.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:37:40Z", "3.8.7.3", "application", 78010, ~N[2026-08-21 12:37:41], ~N[2026-08-21 12:37:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:41.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793668, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:37:40Z", message: "Current application version", status_log_id: 78010, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:41], updated_at: ~N[2026-08-21 12:37:41]}} [2026-08-21 12:37:41.128] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:37:40Z"} [2026-08-21 12:37:41.128] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:37:40Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 49, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:37:55.604] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 12:37:55.604] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T16:37:53Z","org.device":[{"itemkey":"battery","value":43,"timestamp":"2026-08-21T16:37:53Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T16:37:53Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T16:37:53Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T16:37:53Z","message":""}]} [2026-08-21 12:37:55.604] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T16:37:53Z", "value" => 43}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T16:37:53Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T16:37:53Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T16:37:53Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T16:37:53Z"} [2026-08-21 12:37:55.604] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:37:55.606] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=656.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:37:55.606] [INFO ] Terminal updated: 61250415798001 [2026-08-21 12:37:55.697] [DEBUG] QUERY OK source="tms_terminals" db=49.4ms queue=41.0ms idle=411.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:37:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:37:55.699] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=91.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:37:55.735] [DEBUG] QUERY OK source="tms_terminals" db=36.2ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:37:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:37:55.791] [DEBUG] QUERY OK db=54.7ms idle=37.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T16:37:53Z", ~N[2026-08-21 12:37:55], ~N[2026-08-21 12:37:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:37:55.791] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78011, oid: "org-id-placeholder", upload_time: "2026-08-21T16:37:53Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:55], updated_at: ~N[2026-08-21 12:37:55]} [2026-08-21 12:37:55.791] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T16:37:53Z", "value" => 43} [2026-08-21 12:37:55.840] [DEBUG] QUERY OK db=48.5ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:37:53Z", "43", "battery", 78011, ~N[2026-08-21 12:37:55], ~N[2026-08-21 12:37:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:55.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793669, itemkey: "battery", value: "43", timestamp: "2026-08-21T16:37:53Z", message: nil, status_log_id: 78011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:55], updated_at: ~N[2026-08-21 12:37:55]}} [2026-08-21 12:37:55.841] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T16:37:53Z", "value" => 50} [2026-08-21 12:37:55.976] [DEBUG] QUERY OK db=134.6ms queue=0.3ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T16:37:53Z", "50", "memory", 78011, ~N[2026-08-21 12:37:55], ~N[2026-08-21 12:37:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:55.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793670, itemkey: "memory", value: "50", timestamp: "2026-08-21T16:37:53Z", message: "Normal", status_log_id: 78011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:55], updated_at: ~N[2026-08-21 12:37:55]}} [2026-08-21 12:37:55.977] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T16:37:53Z", "value" => 50} [2026-08-21 12:37:56.034] [DEBUG] QUERY OK db=56.8ms queue=0.1ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:37:53Z", "50", "cpu", 78011, ~N[2026-08-21 12:37:55], ~N[2026-08-21 12:37:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:56.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793671, itemkey: "cpu", value: "50", timestamp: "2026-08-21T16:37:53Z", message: nil, status_log_id: 78011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:55], updated_at: ~N[2026-08-21 12:37:55]}} [2026-08-21 12:37:56.035] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T16:37:53Z", "value" => "online"} [2026-08-21 12:37:56.072] [DEBUG] QUERY OK db=36.2ms queue=0.5ms idle=58.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:37:53Z", "online", "network", 78011, ~N[2026-08-21 12:37:56], ~N[2026-08-21 12:37:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:37:56.072] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793672, itemkey: "network", value: "online", timestamp: "2026-08-21T16:37:53Z", message: nil, status_log_id: 78011, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:37:56], updated_at: ~N[2026-08-21 12:37:56]}} [2026-08-21 12:37:56.073] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 12:38:00.663] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:37:40Z"} [2026-08-21 12:38:00.663] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:37:40Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 50, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:38:05.013] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:38:05.014] [INFO ] Incoming JSON payload: {"oid":"48bcb9a6-514f-4789-93e4-bec95eefccb6","sn":"98251226730001","uploadTime":"2026-08-21T12:38:04Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"ram_free_mb","value":"871","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:38:04Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:38:05.017] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "48bcb9a6-514f-4789-93e4-bec95eefccb6", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:38:04Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:38:04Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:38:04Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:38:04Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:38:04Z", "value" => "871"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:38:04Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:38:04Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:38:04Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:38:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:38:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:38:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:38:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:38:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:38:04Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:38:04Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:38:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:38:04Z", "vendor" => "morefun"} [2026-08-21 12:38:05.017] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:38:05.018] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:38:05.018] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:38:05.021] [DEBUG] QUERY OK source="parameter_templates" db=3.6ms idle=761.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-08-21 12:38:05.026] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms queue=0.7ms idle=32.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 12:38:05.026] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:38:05.030] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:38:05.097] [DEBUG] QUERY OK source="tms_terminals" db=25.1ms queue=40.8ms idle=4.1ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 12:38:05], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:38:05.097] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:38:05.097] [INFO ] Event published: terminal_updated [2026-08-21 12:38:05.097] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:38:05.097] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:38:05.097] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:38:05.100] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.0ms idle=68.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-08-21 12:38:05], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:38:05.103] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:38:05.104] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:38:05.104] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:38:05.168] [DEBUG] QUERY OK source="tms_terminals" db=26.6ms queue=41.0ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 12:38:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:38:05.169] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:38:05.170] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:38:05.261] [DEBUG] QUERY OK source="tms_terminals" db=47.5ms queue=42.4ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:38:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:38:05.294] [DEBUG] QUERY OK db=32.5ms idle=91.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "48bcb9a6-514f-4789-93e4-bec95eefccb6", "2026-08-21T12:38:04Z", ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:38:05.295] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78012, oid: "48bcb9a6-514f-4789-93e4-bec95eefccb6", upload_time: "2026-08-21T12:38:04Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]} [2026-08-21 12:38:05.295] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:38:04Z", "value" => "morefun"} [2026-08-21 12:38:05.362] [DEBUG] QUERY OK db=65.9ms idle=34.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "morefun", "vendor", 78012, ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:05.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793673, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]}} [2026-08-21 12:38:05.363] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:38:04Z", "value" => "kiosk_launcher"} [2026-08-21 12:38:05.387] [DEBUG] QUERY OK db=23.9ms idle=68.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "kiosk_launcher", "model", 78012, ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:05.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793674, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]}} [2026-08-21 12:38:05.388] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:38:04Z", "value" => "1.0"} [2026-08-21 12:38:05.451] [DEBUG] QUERY OK db=61.2ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "1.0", "app_version", 78012, ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:05.451] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793675, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]}} [2026-08-21 12:38:05.451] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:38:04Z", "value" => "13"} [2026-08-21 12:38:05.499] [DEBUG] QUERY OK db=47.3ms idle=64.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "13", "android_version", 78012, ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:05.499] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793676, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]}} [2026-08-21 12:38:05.499] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:38:04Z", "value" => "871"} [2026-08-21 12:38:05.537] [DEBUG] QUERY OK db=36.7ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "871", "ram_free_mb", 78012, ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:05.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793677, itemkey: "ram_free_mb", value: "871", timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]}} [2026-08-21 12:38:05.538] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:38:04Z", "value" => "WIFI"} [2026-08-21 12:38:05.587] [DEBUG] QUERY OK db=45.1ms idle=42.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "WIFI", "network_type", 78012, ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:05.587] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793678, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]}} [2026-08-21 12:38:05.587] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:38:04Z", "value" => "true"} [2026-08-21 12:38:05.633] [DEBUG] QUERY OK db=45.4ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "true", "kiosk_active", 78012, ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:05.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793679, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]}} [2026-08-21 12:38:05.633] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:38:04Z", "value" => ""} [2026-08-21 12:38:05.685] [DEBUG] QUERY OK db=51.6ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:38:04Z", "sim_operator", 78012, ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:05.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793680, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]}} [2026-08-21 12:38:05.685] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:38:04Z", "value" => "UNKNOWN"} [2026-08-21 12:38:05.717] [DEBUG] QUERY OK db=31.2ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "UNKNOWN", "sim_number", 78012, ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:05.720] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793681, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]}} [2026-08-21 12:38:05.720] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:38:04Z", "value" => "UNKNOWN"} [2026-08-21 12:38:05.802] [DEBUG] QUERY OK db=81.5ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "UNKNOWN", "sim_iccid", 78012, ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:05.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793682, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]}} [2026-08-21 12:38:05.803] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:38:04Z", "value" => "UNKNOWN"} [2026-08-21 12:38:05.840] [DEBUG] QUERY OK db=36.5ms idle=86.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "UNKNOWN", "sim_imsi", 78012, ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:05.840] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793683, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]}} [2026-08-21 12:38:05.840] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:38:04Z", "value" => "UNKNOWN"} [2026-08-21 12:38:05.891] [DEBUG] QUERY OK db=50.3ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "UNKNOWN", "sim_iccid2", 78012, ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:05.891] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793684, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]}} [2026-08-21 12:38:05.891] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:38:04Z", "value" => "UNKNOWN"} [2026-08-21 12:38:05.925] [DEBUG] QUERY OK db=33.7ms idle=51.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "UNKNOWN", "sim_imsi2", 78012, ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:05.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793685, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]}} [2026-08-21 12:38:05.927] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:38:04Z", "value" => "36"} [2026-08-21 12:38:06.007] [DEBUG] QUERY OK db=78.3ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "36", "data_usage_mb", 78012, ~N[2026-08-21 12:38:05], ~N[2026-08-21 12:38:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:06.007] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793686, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:05], updated_at: ~N[2026-08-21 12:38:05]}} [2026-08-21 12:38:06.008] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:38:04Z", "value" => "0"} [2026-08-21 12:38:06.213] [DEBUG] QUERY OK db=205.1ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "0", "mobile_data_mb", 78012, ~N[2026-08-21 12:38:06], ~N[2026-08-21 12:38:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:06.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793687, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:06], updated_at: ~N[2026-08-21 12:38:06]}} [2026-08-21 12:38:06.214] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:38:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:38:06.255] [DEBUG] QUERY OK db=39.7ms idle=208.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:04Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78012, ~N[2026-08-21 12:38:06], ~N[2026-08-21 12:38:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:06.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793688, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:38:04Z", message: nil, status_log_id: 78012, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:06], updated_at: ~N[2026-08-21 12:38:06]}} [2026-08-21 12:38:06.256] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:38:06.256] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:38:05Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:38:05Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:38:05Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:38:05Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:38:05Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:38:05Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:38:05Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:38:05Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:38:05Z","vendor":"MoreFun"} [2026-08-21 12:38:06.257] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:38:05Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:38:05Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:38:05Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:38:05Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:38:05Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:38:05Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:38:05Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:38:05Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:38:05Z", "vendor" => "MoreFun"} [2026-08-21 12:38:06.259] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:38:06.259] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:38:06.259] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:38:06.263] [DEBUG] QUERY OK source="parameter_templates" db=3.3ms idle=46.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 12:38:06.265] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=9.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 12:38:06.266] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms 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-08-21 12:38:06.268] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.5ms idle=1.5ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:38:06.269] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms 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-08-21 12:38:06.309] [DEBUG] QUERY OK source="pos_merchant" db=39.7ms idle=1.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:38:06.312] [DEBUG] QUERY OK db=0.4ms queue=1.1ms idle=1126.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 ["626165170000000"] [2026-08-21 12:38:06.312] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:38:06.313] [DEBUG] QUERY OK source="pos_terminal_data" db=0.8ms idle=43.9ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:38:06.315] [DEBUG] QUERY OK source="address" db=0.9ms idle=5.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:38:06.315] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:38:06.317] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:38:06.381] [DEBUG] QUERY OK db=62.7ms idle=4.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "dccfc7e3e3d137a9553dfda43a460c3ecc0310eab41ec1242656f2acb110bc9d", 1924, 938, ~U[2026-08-21 12:38:06Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:38:06], ~N[2026-08-21 12:38:06]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:38:06.381] [INFO ] AutoPushService: Created push log 49092 for MF919 params.zip [2026-08-21 12:38:06.381] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1924, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:38:06.381] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:38:06.381] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:38:06.382] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.1ms idle=66.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-08-21 12:38:06.389] [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-08-21 12:38:06.418] [DEBUG] QUERY OK db=27.4ms idle=9.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "9a20e43cf35acf59ddb8eb0ef751c70adedcbd4fde6c7f22ab0bdb82d43d5d9d", 3267, 17947, ~U[2026-08-21 12:38:06Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:38:06], ~N[2026-08-21 12:38:06]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:38:06.418] [INFO ] AutoPushService: Created push log 49093 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:38:06.418] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 3267, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:38:06.418] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:38:06.418] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:38:06.419] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=36.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-08-21 12:38:06.419] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:38:06.420] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:38:06.420] [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-08-21 12:38:06.422] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:38:06.422] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:38:06.422] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:38:06.423] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=3.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:38:06.423] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:38:06.423] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:38:06.426] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms decode=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-08-21 12:38:06.504] [DEBUG] QUERY OK source="tms_terminals" db=36.6ms queue=40.9ms idle=3.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:38:06], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:38:06.504] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:38:06.505] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:38:06.505] [INFO ] Event published: terminal_updated [2026-08-21 12:38:06.505] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:38:06.506] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:38:06.506] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms queue=0.1ms idle=79.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:38:06], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:38:06.509] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:38:06.509] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:38:06.509] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:38:06.601] [DEBUG] QUERY OK source="tms_terminals" db=52.8ms queue=41.4ms idle=0.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:38:06], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:38:06.604] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=92.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-08-21 12:38:06.605] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=2.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:38:06.606] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=1.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:38:06.606] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:38:06.639] [DEBUG] QUERY OK source="parameter_push_logs" db=32.7ms 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-08-21 12:08:06]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:38:06.639] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:38:06.639] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:38:06.644] [DEBUG] QUERY OK source="tms_terminals" db=4.5ms idle=33.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:38:06.649] [DEBUG] QUERY OK source="config_file_versions" db=4.2ms idle=5.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:38:06.651] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:38:06.653] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.4ms idle=7.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:38:06.739] [DEBUG] QUERY OK source="tms_terminals" db=44.1ms queue=41.2ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:38:06], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:38:06.793] [DEBUG] QUERY OK db=52.7ms idle=86.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:38:05Z", ~N[2026-08-21 12:38:06], ~N[2026-08-21 12:38:06]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:38:06.796] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78013, oid: "organization_id", upload_time: "2026-08-21T12:38:05Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:06], updated_at: ~N[2026-08-21 12:38:06]} [2026-08-21 12:38:06.796] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:38:05Z", "value" => "online"} [2026-08-21 12:38:06.846] [DEBUG] QUERY OK db=49.7ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:38:05Z", "online", "status", 78013, ~N[2026-08-21 12:38:06], ~N[2026-08-21 12:38:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:06.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793689, itemkey: "status", value: "online", timestamp: "2026-08-21T12:38:05Z", message: "Terminal status update", status_log_id: 78013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:06], updated_at: ~N[2026-08-21 12:38:06]}} [2026-08-21 12:38:06.847] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:38:06.847] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:38:05Z", "value" => "51"} [2026-08-21 12:38:06.893] [DEBUG] QUERY OK db=45.7ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:38:05Z", "51", "battery", 78013, ~N[2026-08-21 12:38:06], ~N[2026-08-21 12:38:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:06.893] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793690, itemkey: "battery", value: "51", timestamp: "2026-08-21T12:38:05Z", message: "Battery level", status_log_id: 78013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:06], updated_at: ~N[2026-08-21 12:38:06]}} [2026-08-21 12:38:06.894] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:38:05Z", "value" => "online"} [2026-08-21 12:38:06.940] [DEBUG] QUERY OK db=46.0ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:38:05Z", "online", "network", 78013, ~N[2026-08-21 12:38:06], ~N[2026-08-21 12:38:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:06.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793691, itemkey: "network", value: "online", timestamp: "2026-08-21T12:38:05Z", message: "Network connectivity", status_log_id: 78013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:06], updated_at: ~N[2026-08-21 12:38:06]}} [2026-08-21 12:38:06.940] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:38:06.941] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:38:05Z", "value" => "0"} [2026-08-21 12:38:07.035] [DEBUG] QUERY OK db=93.9ms idle=47.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:38:05Z", "0", "cpu", 78013, ~N[2026-08-21 12:38:06], ~N[2026-08-21 12:38:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:07.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793692, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:38:05Z", message: "CPU usage percentage", status_log_id: 78013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:06], updated_at: ~N[2026-08-21 12:38:06]}} [2026-08-21 12:38:07.035] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:38:05Z", "value" => "1.0.0"} [2026-08-21 12:38:07.087] [DEBUG] QUERY OK db=50.6ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:38:05Z", "1.0.0", "parameter_config", 78013, ~N[2026-08-21 12:38:07], ~N[2026-08-21 12:38:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:07.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793693, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:38:05Z", message: "Current parameters version", status_log_id: 78013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:07], updated_at: ~N[2026-08-21 12:38:07]}} [2026-08-21 12:38:07.087] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:38:05Z", "value" => "1.0.1"} [2026-08-21 12:38:07.293] [DEBUG] QUERY OK db=205.6ms idle=52.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:38:05Z", "1.0.1", "emv_config", 78013, ~N[2026-08-21 12:38:07], ~N[2026-08-21 12:38:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:07.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793694, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:38:05Z", message: "Current EMV config version", status_log_id: 78013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:07], updated_at: ~N[2026-08-21 12:38:07]}} [2026-08-21 12:38:07.293] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:38:05Z", "value" => ""} [2026-08-21 12:38:07.334] [DEBUG] QUERY OK db=38.0ms queue=1.8ms idle=207.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:38:05Z", "keys_config", 78013, ~N[2026-08-21 12:38:07], ~N[2026-08-21 12:38:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:07.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793695, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:38:05Z", message: "Current keys config version", status_log_id: 78013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:07], updated_at: ~N[2026-08-21 12:38:07]}} [2026-08-21 12:38:07.334] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:38:05Z", "value" => "3.8.7.3"} [2026-08-21 12:38:07.374] [DEBUG] QUERY OK db=40.0ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:38:05Z", "3.8.7.3", "application", 78013, ~N[2026-08-21 12:38:07], ~N[2026-08-21 12:38:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:07.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793696, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:38:05Z", message: "Current application version", status_log_id: 78013, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:07], updated_at: ~N[2026-08-21 12:38:07]}} [2026-08-21 12:38:07.375] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:38:06Z"} [2026-08-21 12:38:07.375] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:38:06Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 53, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:38:12.714] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:38:12.715] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:38:12Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:38:12Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:38:12Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:38:12Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:38:12Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:38:12Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:38:12Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:38:12Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:38:12Z","vendor":"MoreFun"} [2026-08-21 12:38:12.715] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:38:12Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:38:12Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:38:12Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:38:12Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:38:12Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:38:12Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:38:12Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:38:12Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:38:12Z", "vendor" => "MoreFun"} [2026-08-21 12:38:12.715] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:38:12.715] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:38:12.715] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:38:12.716] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1519.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-08-21 12:38:12.717] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=699.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:38:12.720] [DEBUG] QUERY OK source="parameter_template_values" db=1.7ms idle=1.3ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:38:12.724] [DEBUG] QUERY OK source="parameter_definitions" db=2.1ms queue=1.3ms idle=3.5ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:38:12.726] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms queue=0.1ms idle=6.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:38:12.766] [DEBUG] QUERY OK source="pos_merchant" db=39.0ms idle=2.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:38:12.767] [DEBUG] QUERY OK db=0.6ms queue=0.6ms idle=582.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 ["626165170000000"] [2026-08-21 12:38:12.767] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:38:12.768] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=41.1ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:38:12.769] [DEBUG] QUERY OK source="address" db=0.3ms queue=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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:38:12.769] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:38:12.771] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:38:12.806] [DEBUG] QUERY OK db=34.0ms idle=3.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "23148dd8bb26e883bd09805425785506f1fe9ae247cdfd1b7c6db56e0c101f03", 1541, 938, ~U[2026-08-21 12:38:12Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:38:12], ~N[2026-08-21 12:38:12]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:38:12.806] [INFO ] AutoPushService: Created push log 49094 for MF919 params.zip [2026-08-21 12:38:12.806] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1541, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:38:12.807] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:38:12.807] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:38:12.809] [DEBUG] QUERY OK source="config_file_versions" db=1.9ms idle=38.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:38:12.812] [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-08-21 12:38:12.865] [DEBUG] QUERY OK db=48.3ms queue=0.2ms idle=10.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "7f80a0a093d0bf4e61031bcc967b32ed26886c700d3e49381572fc4e51526f16", 2116, 17947, ~U[2026-08-21 12:38:12Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:38:12], ~N[2026-08-21 12:38:12]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:38:12.865] [INFO ] AutoPushService: Created push log 49095 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:38:12.865] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2116, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:38:12.865] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:38:12.866] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:38:12.867] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms queue=0.2ms idle=56.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-08-21 12:38:12.867] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:38:12.869] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=3.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:38:12.869] [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-08-21 12:38:12.875] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:38:12.875] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:38:12.877] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:38:12.878] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=9.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-08-21 12:38:12.879] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:38:12.879] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:38:12.880] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=10.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:38:12.880] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:38:12.937] [DEBUG] QUERY OK source="tms_terminals" db=57.0ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:38:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:38:12.939] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=57.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-08-21 12:38:12.939] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-08-21 12:38:12.940] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms 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-08-21 12:38:12.940] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:38:12.962] [DEBUG] QUERY OK source="parameter_push_logs" db=21.0ms 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-08-21 12:08:12]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:38:12.962] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:38:12.962] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:38:12.963] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:38:12.965] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=0.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-08-21 12:38:12.965] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:38:12.966] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:38:13.027] [DEBUG] QUERY OK source="tms_terminals" db=60.6ms idle=0.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:38:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:38:13.095] [DEBUG] QUERY OK db=66.7ms queue=1.1ms idle=0.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:38:12Z", ~N[2026-08-21 12:38:13], ~N[2026-08-21 12:38:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:38:13.096] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78014, oid: "organization_id", upload_time: "2026-08-21T12:38:12Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:13], updated_at: ~N[2026-08-21 12:38:13]} [2026-08-21 12:38:13.097] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:38:12Z", "value" => "online"} [2026-08-21 12:38:13.123] [DEBUG] QUERY OK db=24.9ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:38:12Z", "online", "status", 78014, ~N[2026-08-21 12:38:13], ~N[2026-08-21 12:38:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:13.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793697, itemkey: "status", value: "online", timestamp: "2026-08-21T12:38:12Z", message: "Terminal status update", status_log_id: 78014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:13], updated_at: ~N[2026-08-21 12:38:13]}} [2026-08-21 12:38:13.123] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:38:13.124] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:38:12Z", "value" => "51"} [2026-08-21 12:38:13.172] [DEBUG] QUERY OK db=47.7ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:38:12Z", "51", "battery", 78014, ~N[2026-08-21 12:38:13], ~N[2026-08-21 12:38:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:13.172] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793698, itemkey: "battery", value: "51", timestamp: "2026-08-21T12:38:12Z", message: "Battery level", status_log_id: 78014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:13], updated_at: ~N[2026-08-21 12:38:13]}} [2026-08-21 12:38:13.172] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:38:12Z", "value" => "online"} [2026-08-21 12:38:13.205] [DEBUG] QUERY OK db=32.0ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:38:12Z", "online", "network", 78014, ~N[2026-08-21 12:38:13], ~N[2026-08-21 12:38:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:13.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793699, itemkey: "network", value: "online", timestamp: "2026-08-21T12:38:12Z", message: "Network connectivity", status_log_id: 78014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:13], updated_at: ~N[2026-08-21 12:38:13]}} [2026-08-21 12:38:13.206] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:38:13.206] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:38:12Z", "value" => "0"} [2026-08-21 12:38:13.246] [DEBUG] QUERY OK db=39.1ms queue=0.4ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:38:12Z", "0", "cpu", 78014, ~N[2026-08-21 12:38:13], ~N[2026-08-21 12:38:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:13.247] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793700, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:38:12Z", message: "CPU usage percentage", status_log_id: 78014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:13], updated_at: ~N[2026-08-21 12:38:13]}} [2026-08-21 12:38:13.247] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:38:12Z", "value" => "1.0.0"} [2026-08-21 12:38:13.280] [DEBUG] QUERY OK db=32.5ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:38:12Z", "1.0.0", "parameter_config", 78014, ~N[2026-08-21 12:38:13], ~N[2026-08-21 12:38:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:13.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793701, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:38:12Z", message: "Current parameters version", status_log_id: 78014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:13], updated_at: ~N[2026-08-21 12:38:13]}} [2026-08-21 12:38:13.280] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:38:12Z", "value" => "1.0.1"} [2026-08-21 12:38:13.304] [DEBUG] QUERY OK db=23.0ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:38:12Z", "1.0.1", "emv_config", 78014, ~N[2026-08-21 12:38:13], ~N[2026-08-21 12:38:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:13.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793702, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:38:12Z", message: "Current EMV config version", status_log_id: 78014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:13], updated_at: ~N[2026-08-21 12:38:13]}} [2026-08-21 12:38:13.304] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:38:12Z", "value" => ""} [2026-08-21 12:38:13.375] [DEBUG] QUERY OK db=30.0ms queue=40.8ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:38:12Z", "keys_config", 78014, ~N[2026-08-21 12:38:13], ~N[2026-08-21 12:38:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:13.376] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793703, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:38:12Z", message: "Current keys config version", status_log_id: 78014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:13], updated_at: ~N[2026-08-21 12:38:13]}} [2026-08-21 12:38:13.376] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:38:12Z", "value" => "3.8.7.3"} [2026-08-21 12:38:13.435] [DEBUG] QUERY OK db=58.5ms idle=72.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:38:12Z", "3.8.7.3", "application", 78014, ~N[2026-08-21 12:38:13], ~N[2026-08-21 12:38:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:13.436] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793704, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:38:12Z", message: "Current application version", status_log_id: 78014, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:13], updated_at: ~N[2026-08-21 12:38:13]}} [2026-08-21 12:38:13.436] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:38:12Z"} [2026-08-21 12:38:13.436] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:38:12Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 56, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:38:26.912] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:38:06Z"} [2026-08-21 12:38:26.913] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:38:06Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 54, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:38:33.297] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:38:12Z"} [2026-08-21 12:38:33.297] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:38:12Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 57, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:38:35.113] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:38:35.114] [INFO ] Incoming JSON payload: {"oid":"b01f7364-cec1-48b0-861d-9714ae0335ae","sn":"98251226730001","uploadTime":"2026-08-21T12:38:34Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"ram_free_mb","value":"884","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:38:34Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:38:35.116] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b01f7364-cec1-48b0-861d-9714ae0335ae", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:38:34Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:38:34Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:38:34Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:38:34Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:38:34Z", "value" => "884"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:38:34Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:38:34Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:38:34Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:38:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:38:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:38:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:38:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:38:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:38:34Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:38:34Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:38:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:38:34Z", "vendor" => "morefun"} [2026-08-21 12:38:35.116] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:38:35.116] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:38:35.116] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:38:35.118] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=918.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-08-21 12:38:35.119] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=817.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-08-21 12:38:35.119] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:38:35.122] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.2ms idle=2.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:38:35.186] [DEBUG] QUERY OK source="tms_terminals" db=22.9ms queue=40.8ms idle=0.4ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 12:38:35], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:38:35.188] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:38:35.189] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:38:35.190] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:38:35.190] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:38:35.188] [INFO ] Event published: terminal_updated [2026-08-21 12:38:35.193] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.6ms idle=68.2ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:38:35], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:38:35.195] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.2ms 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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:38:35.199] [DEBUG] QUERY OK source="terminal_group_rules" db=1.7ms queue=0.3ms idle=2.5ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:38:35.199] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:38:35.285] [DEBUG] QUERY OK source="tms_terminals" db=48.7ms queue=42.6ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 12:38:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:38:35.285] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:38:35.286] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=86.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:38:35.364] [DEBUG] QUERY OK source="tms_terminals" db=75.5ms queue=1.1ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:38:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:38:35.423] [DEBUG] QUERY OK db=58.3ms idle=78.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b01f7364-cec1-48b0-861d-9714ae0335ae", "2026-08-21T12:38:34Z", ~N[2026-08-21 12:38:35], ~N[2026-08-21 12:38:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:38:35.424] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78015, oid: "b01f7364-cec1-48b0-861d-9714ae0335ae", upload_time: "2026-08-21T12:38:34Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:35], updated_at: ~N[2026-08-21 12:38:35]} [2026-08-21 12:38:35.424] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:38:34Z", "value" => "morefun"} [2026-08-21 12:38:35.460] [DEBUG] QUERY OK db=32.8ms queue=3.4ms idle=59.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "morefun", "vendor", 78015, ~N[2026-08-21 12:38:35], ~N[2026-08-21 12:38:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:35.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793705, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:35], updated_at: ~N[2026-08-21 12:38:35]}} [2026-08-21 12:38:35.461] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:38:34Z", "value" => "kiosk_launcher"} [2026-08-21 12:38:35.529] [DEBUG] QUERY OK db=55.1ms queue=6.7ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "kiosk_launcher", "model", 78015, ~N[2026-08-21 12:38:35], ~N[2026-08-21 12:38:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:35.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793706, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:35], updated_at: ~N[2026-08-21 12:38:35]}} [2026-08-21 12:38:35.529] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:38:34Z", "value" => "1.0"} [2026-08-21 12:38:35.563] [DEBUG] QUERY OK db=30.4ms queue=0.2ms idle=72.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "1.0", "app_version", 78015, ~N[2026-08-21 12:38:35], ~N[2026-08-21 12:38:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:35.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793707, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:35], updated_at: ~N[2026-08-21 12:38:35]}} [2026-08-21 12:38:35.564] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:38:34Z", "value" => "13"} [2026-08-21 12:38:35.689] [INFO ] Running offline device check... [2026-08-21 12:38:35.689] [INFO ] Starting offline device check... [2026-08-21 12:38:35.699] [DEBUG] QUERY OK source="tms_terminals" db=6.9ms idle=128.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-08-21 12:38:35.722] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.0ms queue=1.4ms idle=10.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.737] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.4ms queue=2.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 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.739] [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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.742] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.743] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.744] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.745] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.746] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.747] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.749] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.754] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.755] [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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.775] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=18.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.782] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.784] [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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.785] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.786] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.809] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.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-08-21 12:38:35.810] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.812] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 12:38:35.814] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.815] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.816] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.861] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=44.8ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.862] [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 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.863] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.871] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.0ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.873] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=1.0ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.876] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.877] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.878] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.882] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.883] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.885] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.886] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.886] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.889] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.889] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.890] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.891] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.892] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.893] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.895] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.898] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.899] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.901] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.4ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.903] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.904] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.905] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.906] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.906] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:38:35.906] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 12:38:35.906] [INFO ] Offline device check completed successfully [2026-08-21 12:38:36.753] [DEBUG] QUERY OK db=1179.2ms queue=4.2ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "13", "android_version", 78015, ~N[2026-08-21 12:38:35], ~N[2026-08-21 12:38:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:36.754] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793708, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:35], updated_at: ~N[2026-08-21 12:38:35]}} [2026-08-21 12:38:36.754] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:38:34Z", "value" => "884"} [2026-08-21 12:38:36.869] [DEBUG] QUERY OK db=114.9ms idle=628.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "884", "ram_free_mb", 78015, ~N[2026-08-21 12:38:36], ~N[2026-08-21 12:38:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:36.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793709, itemkey: "ram_free_mb", value: "884", timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:36], updated_at: ~N[2026-08-21 12:38:36]}} [2026-08-21 12:38:36.870] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:38:34Z", "value" => "WIFI"} [2026-08-21 12:38:36.894] [DEBUG] QUERY OK db=24.2ms idle=116.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "WIFI", "network_type", 78015, ~N[2026-08-21 12:38:36], ~N[2026-08-21 12:38:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:36.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793710, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:36], updated_at: ~N[2026-08-21 12:38:36]}} [2026-08-21 12:38:36.896] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:38:34Z", "value" => "true"} [2026-08-21 12:38:36.951] [DEBUG] QUERY OK db=55.5ms idle=26.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "true", "kiosk_active", 78015, ~N[2026-08-21 12:38:36], ~N[2026-08-21 12:38:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:36.952] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793711, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:36], updated_at: ~N[2026-08-21 12:38:36]}} [2026-08-21 12:38:36.952] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:38:34Z", "value" => ""} [2026-08-21 12:38:36.998] [DEBUG] QUERY OK db=45.3ms idle=58.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:38:34Z", "sim_operator", 78015, ~N[2026-08-21 12:38:36], ~N[2026-08-21 12:38:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:36.998] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793712, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:36], updated_at: ~N[2026-08-21 12:38:36]}} [2026-08-21 12:38:36.999] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:38:34Z", "value" => "UNKNOWN"} [2026-08-21 12:38:37.031] [DEBUG] QUERY OK db=31.7ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "UNKNOWN", "sim_number", 78015, ~N[2026-08-21 12:38:36], ~N[2026-08-21 12:38:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:37.033] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793713, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:36], updated_at: ~N[2026-08-21 12:38:36]}} [2026-08-21 12:38:37.034] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:38:34Z", "value" => "UNKNOWN"} [2026-08-21 12:38:37.072] [DEBUG] QUERY OK db=37.5ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "UNKNOWN", "sim_iccid", 78015, ~N[2026-08-21 12:38:37], ~N[2026-08-21 12:38:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:37.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793714, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:37], updated_at: ~N[2026-08-21 12:38:37]}} [2026-08-21 12:38:37.073] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:38:34Z", "value" => "UNKNOWN"} [2026-08-21 12:38:37.115] [DEBUG] QUERY OK db=41.9ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "UNKNOWN", "sim_imsi", 78015, ~N[2026-08-21 12:38:37], ~N[2026-08-21 12:38:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:37.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793715, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:37], updated_at: ~N[2026-08-21 12:38:37]}} [2026-08-21 12:38:37.116] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:38:34Z", "value" => "UNKNOWN"} [2026-08-21 12:38:37.163] [DEBUG] QUERY OK db=46.2ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "UNKNOWN", "sim_iccid2", 78015, ~N[2026-08-21 12:38:37], ~N[2026-08-21 12:38:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:37.163] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793716, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:37], updated_at: ~N[2026-08-21 12:38:37]}} [2026-08-21 12:38:37.163] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:38:34Z", "value" => "UNKNOWN"} [2026-08-21 12:38:37.192] [DEBUG] QUERY OK db=27.2ms idle=35.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "UNKNOWN", "sim_imsi2", 78015, ~N[2026-08-21 12:38:37], ~N[2026-08-21 12:38:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:37.193] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793717, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:37], updated_at: ~N[2026-08-21 12:38:37]}} [2026-08-21 12:38:37.193] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:38:34Z", "value" => "36"} [2026-08-21 12:38:37.244] [DEBUG] QUERY OK db=50.8ms idle=30.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "36", "data_usage_mb", 78015, ~N[2026-08-21 12:38:37], ~N[2026-08-21 12:38:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:37.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793718, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:37], updated_at: ~N[2026-08-21 12:38:37]}} [2026-08-21 12:38:37.245] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:38:34Z", "value" => "0"} [2026-08-21 12:38:37.279] [DEBUG] QUERY OK db=34.3ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "0", "mobile_data_mb", 78015, ~N[2026-08-21 12:38:37], ~N[2026-08-21 12:38:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:37.281] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793719, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:37], updated_at: ~N[2026-08-21 12:38:37]}} [2026-08-21 12:38:37.282] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:38:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:38:37.337] [DEBUG] QUERY OK db=52.2ms queue=0.6ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:38:34Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78015, ~N[2026-08-21 12:38:37], ~N[2026-08-21 12:38:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:37.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793720, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:38:34Z", message: nil, status_log_id: 78015, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:37], updated_at: ~N[2026-08-21 12:38:37]}} [2026-08-21 12:38:39.140] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch850190316951_20260821123838763","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T12:38:38Z"} [2026-08-21 12:38:39.141] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch850190316951_20260821123838763", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:38:38Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 59, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 56, 53, 48, 49, 57, 48, 51, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:38:45.290] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 12:38:45.290] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T03:48:10Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T03:48:10Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T03:48:10Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T03:48:10Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T03:48:10Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T03:48:10Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T03:48:10Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T03:48:10Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T03:48:10Z","vendor":"MoreFun"} [2026-08-21 12:38:45.291] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:48:10Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:48:10Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:48:10Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:48:10Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:48:10Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:48:10Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:48:10Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:48:10Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T03:48:10Z", "vendor" => "MoreFun"} [2026-08-21 12:38:45.291] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:38:45.291] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 12:38:45.292] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 12:38:45.293] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=91.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-08-21 12:38:45.295] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=87.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 12:38:45.296] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms idle=2.6ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:38:45.301] [DEBUG] QUERY OK source="parameter_definitions" db=1.6ms queue=2.7ms idle=1.2ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:38:45.305] [DEBUG] QUERY OK source="pos_terminal" db=4.0ms idle=5.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:38:45.341] [DEBUG] QUERY OK source="pos_merchant" db=35.8ms idle=4.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:38:45.344] [DEBUG] QUERY OK db=0.7ms queue=1.6ms idle=1150.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 ["123451234512345"] [2026-08-21 12:38:45.344] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:38:45.345] [DEBUG] QUERY OK source="pos_terminal_data" db=0.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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:38:45.345] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 12:38:45.347] [DEBUG] QUERY OK source="address" db=1.6ms idle=4.1ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:38:45.347] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 12:38:45.350] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 12:38:45.441] [DEBUG] QUERY OK db=86.8ms idle=8.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "fbf6e7ed1d9ce29429bcaec0dbe5620562208de91c289f6b2184212e1e5e31d5", 8194, 932, ~U[2026-08-21 12:38:45Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:38:45], ~N[2026-08-21 12:38:45]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:38:45.441] [INFO ] AutoPushService: Created push log 49096 for MF919 params.zip [2026-08-21 12:38:45.442] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 8194, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:38:45.442] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:38:45.442] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 12:38:45.446] [DEBUG] QUERY OK source="config_file_versions" db=2.9ms idle=95.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-08-21 12:38:45.456] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 12:38:45.561] [DEBUG] QUERY OK db=103.2ms idle=16.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e2db09fcafc97e575ecc56cddfe5eb205b0a89656d94e6f3367630561e999fda", 8226, 17947, ~U[2026-08-21 12:38:45Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:38:45], ~N[2026-08-21 12:38:45]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:38:45.562] [INFO ] AutoPushService: Created push log 49097 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:38:45.562] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 8226, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:38:45.562] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:38:45.562] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 12:38:45.564] [DEBUG] QUERY OK source="config_file_versions" db=1.9ms idle=116.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-08-21 12:38:45.564] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 12:38:45.568] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=3.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:38:45.569] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 12:38:45.573] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:38:45.573] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:38:45.573] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:38:45.574] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=8.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:38:45.574] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:38:45.574] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 12:38:45.576] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=7.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:38:45.579] [INFO ] Terminal updated: 98250623730001 [2026-08-21 12:38:45.658] [DEBUG] QUERY OK source="tms_terminals" db=78.5ms queue=0.1ms idle=4.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:38:45], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:38:45.659] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=81.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-08-21 12:38:45.660] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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-08-21 12:38:45.661] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=1.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:38:45.661] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:38:45.685] [DEBUG] QUERY OK source="parameter_push_logs" db=22.3ms idle=2.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 [19, "application", ~N[2026-08-21 12:08:45]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:38:45.685] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:38:45.685] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 12:38:45.688] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=23.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:38:45.690] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=4.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:38:45.690] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:38:45.692] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=2.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:38:45.761] [DEBUG] QUERY OK source="tms_terminals" db=65.0ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:38:45], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:38:45.815] [DEBUG] QUERY OK db=53.6ms idle=69.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T03:48:10Z", ~N[2026-08-21 12:38:45], ~N[2026-08-21 12:38:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:38:45.816] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78016, oid: "organization_id", upload_time: "2026-08-21T03:48:10Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:45], updated_at: ~N[2026-08-21 12:38:45]} [2026-08-21 12:38:45.816] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T03:48:10Z", "value" => "online"} [2026-08-21 12:38:45.894] [DEBUG] QUERY OK db=76.3ms idle=57.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T03:48:10Z", "online", "status", 78016, ~N[2026-08-21 12:38:45], ~N[2026-08-21 12:38:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:45.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793721, itemkey: "status", value: "online", timestamp: "2026-08-21T03:48:10Z", message: "Terminal status update", status_log_id: 78016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:45], updated_at: ~N[2026-08-21 12:38:45]}} [2026-08-21 12:38:45.894] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 12:38:45.894] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T03:48:10Z", "value" => "51"} [2026-08-21 12:38:45.977] [DEBUG] QUERY OK db=81.8ms idle=80.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T03:48:10Z", "51", "battery", 78016, ~N[2026-08-21 12:38:45], ~N[2026-08-21 12:38:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:45.977] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793722, itemkey: "battery", value: "51", timestamp: "2026-08-21T03:48:10Z", message: "Battery level", status_log_id: 78016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:45], updated_at: ~N[2026-08-21 12:38:45]}} [2026-08-21 12:38:45.977] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T03:48:10Z", "value" => "online"} [2026-08-21 12:38:46.048] [DEBUG] QUERY OK db=70.2ms idle=84.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T03:48:10Z", "online", "network", 78016, ~N[2026-08-21 12:38:45], ~N[2026-08-21 12:38:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:46.048] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793723, itemkey: "network", value: "online", timestamp: "2026-08-21T03:48:10Z", message: "Network connectivity", status_log_id: 78016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:45], updated_at: ~N[2026-08-21 12:38:45]}} [2026-08-21 12:38:46.048] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 12:38:46.048] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T03:48:10Z", "value" => "0"} [2026-08-21 12:38:46.099] [DEBUG] QUERY OK db=49.9ms idle=71.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T03:48:10Z", "0", "cpu", 78016, ~N[2026-08-21 12:38:46], ~N[2026-08-21 12:38:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:46.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793724, itemkey: "cpu", value: "0", timestamp: "2026-08-21T03:48:10Z", message: "CPU usage percentage", status_log_id: 78016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:46], updated_at: ~N[2026-08-21 12:38:46]}} [2026-08-21 12:38:46.100] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T03:48:10Z", "value" => "1.0.0"} [2026-08-21 12:38:46.197] [DEBUG] QUERY OK db=96.8ms queue=0.3ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T03:48:10Z", "1.0.0", "parameter_config", 78016, ~N[2026-08-21 12:38:46], ~N[2026-08-21 12:38:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:46.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793725, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T03:48:10Z", message: "Current parameters version", status_log_id: 78016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:46], updated_at: ~N[2026-08-21 12:38:46]}} [2026-08-21 12:38:46.198] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T03:48:10Z", "value" => "1.0.1"} [2026-08-21 12:38:46.255] [DEBUG] QUERY OK db=57.1ms idle=99.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T03:48:10Z", "1.0.1", "emv_config", 78016, ~N[2026-08-21 12:38:46], ~N[2026-08-21 12:38:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:46.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793726, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T03:48:10Z", message: "Current EMV config version", status_log_id: 78016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:46], updated_at: ~N[2026-08-21 12:38:46]}} [2026-08-21 12:38:46.256] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T03:48:10Z", "value" => ""} [2026-08-21 12:38:46.325] [DEBUG] QUERY OK db=26.9ms queue=41.7ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T03:48:10Z", "keys_config", 78016, ~N[2026-08-21 12:38:46], ~N[2026-08-21 12:38:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:46.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793727, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T03:48:10Z", message: "Current keys config version", status_log_id: 78016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:46], updated_at: ~N[2026-08-21 12:38:46]}} [2026-08-21 12:38:46.334] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T03:48:10Z", "value" => "3.8.7.3"} [2026-08-21 12:38:46.371] [DEBUG] QUERY OK db=36.8ms idle=78.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T03:48:10Z", "3.8.7.3", "application", 78016, ~N[2026-08-21 12:38:46], ~N[2026-08-21 12:38:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:38:46.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793728, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T03:48:10Z", message: "Current application version", status_log_id: 78016, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:38:46], updated_at: ~N[2026-08-21 12:38:46]}} [2026-08-21 12:38:46.371] [WARN ] Unexpected async result [2026-08-21 12:38:46.371] [WARN ] Unexpected async result [2026-08-21 12:39:05.207] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:39:05.207] [INFO ] Incoming JSON payload: {"oid":"b25c4c08-12dd-42dd-b580-6142c55a4aa5","sn":"98251226730001","uploadTime":"2026-08-21T12:39:04Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"ram_free_mb","value":"875","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:39:04Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:39:05.208] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b25c4c08-12dd-42dd-b580-6142c55a4aa5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:39:04Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:39:04Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:39:04Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:39:04Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:39:04Z", "value" => "875"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:39:04Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:39:04Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:39:04Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:39:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:39:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:39:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:39:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:39:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:39:04Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:39:04Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:39:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:39:04Z", "vendor" => "morefun"} [2026-08-21 12:39:05.208] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:39:05.208] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:39:05.213] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:39:05.214] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=915.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-08-21 12:39:05.217] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=1.3ms idle=861.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-08-21 12:39:05.217] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:39:05.219] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=3.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:39:05.219] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:39:05.308] [DEBUG] QUERY OK source="tms_terminals" db=46.0ms queue=41.2ms idle=3.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:39:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:39:05.308] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:39:05.317] [DEBUG] QUERY OK source="tms_terminals" db=6.8ms idle=6.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:39:05.365] [DEBUG] QUERY OK source="tms_terminals" db=47.1ms idle=11.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:39:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:39:05.405] [DEBUG] QUERY OK db=39.2ms idle=48.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b25c4c08-12dd-42dd-b580-6142c55a4aa5", "2026-08-21T12:39:04Z", ~N[2026-08-21 12:39:05], ~N[2026-08-21 12:39:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:39:05.405] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78017, oid: "b25c4c08-12dd-42dd-b580-6142c55a4aa5", upload_time: "2026-08-21T12:39:04Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:05], updated_at: ~N[2026-08-21 12:39:05]} [2026-08-21 12:39:05.406] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:39:04Z", "value" => "morefun"} [2026-08-21 12:39:05.481] [DEBUG] QUERY OK db=70.4ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "morefun", "vendor", 78017, ~N[2026-08-21 12:39:05], ~N[2026-08-21 12:39:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:05.481] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793729, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:05], updated_at: ~N[2026-08-21 12:39:05]}} [2026-08-21 12:39:05.481] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:39:04Z", "value" => "kiosk_launcher"} [2026-08-21 12:39:05.587] [DEBUG] QUERY OK db=64.0ms queue=41.6ms idle=76.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "kiosk_launcher", "model", 78017, ~N[2026-08-21 12:39:05], ~N[2026-08-21 12:39:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:05.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793730, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:05], updated_at: ~N[2026-08-21 12:39:05]}} [2026-08-21 12:39:05.590] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:39:04Z", "value" => "1.0"} [2026-08-21 12:39:05.636] [DEBUG] QUERY OK db=45.8ms idle=109.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "1.0", "app_version", 78017, ~N[2026-08-21 12:39:05], ~N[2026-08-21 12:39:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:05.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793731, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:05], updated_at: ~N[2026-08-21 12:39:05]}} [2026-08-21 12:39:05.637] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:39:04Z", "value" => "13"} [2026-08-21 12:39:05.673] [DEBUG] QUERY OK db=35.4ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "13", "android_version", 78017, ~N[2026-08-21 12:39:05], ~N[2026-08-21 12:39:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:05.674] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793732, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:05], updated_at: ~N[2026-08-21 12:39:05]}} [2026-08-21 12:39:05.674] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:39:04Z", "value" => "875"} [2026-08-21 12:39:05.725] [DEBUG] QUERY OK db=50.1ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "875", "ram_free_mb", 78017, ~N[2026-08-21 12:39:05], ~N[2026-08-21 12:39:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:05.725] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793733, itemkey: "ram_free_mb", value: "875", timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:05], updated_at: ~N[2026-08-21 12:39:05]}} [2026-08-21 12:39:05.725] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:39:04Z", "value" => "WIFI"} [2026-08-21 12:39:05.789] [DEBUG] QUERY OK db=63.7ms idle=52.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "WIFI", "network_type", 78017, ~N[2026-08-21 12:39:05], ~N[2026-08-21 12:39:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:05.790] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793734, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:05], updated_at: ~N[2026-08-21 12:39:05]}} [2026-08-21 12:39:05.790] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:39:04Z", "value" => "true"} [2026-08-21 12:39:05.852] [DEBUG] QUERY OK db=56.3ms queue=1.7ms idle=69.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "true", "kiosk_active", 78017, ~N[2026-08-21 12:39:05], ~N[2026-08-21 12:39:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:05.853] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793735, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:05], updated_at: ~N[2026-08-21 12:39:05]}} [2026-08-21 12:39:05.853] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:39:04Z", "value" => ""} [2026-08-21 12:39:05.887] [DEBUG] QUERY OK db=34.1ms idle=63.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:39:04Z", "sim_operator", 78017, ~N[2026-08-21 12:39:05], ~N[2026-08-21 12:39:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:05.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793736, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:05], updated_at: ~N[2026-08-21 12:39:05]}} [2026-08-21 12:39:05.888] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:39:04Z", "value" => "UNKNOWN"} [2026-08-21 12:39:05.948] [DEBUG] QUERY OK db=60.1ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "UNKNOWN", "sim_number", 78017, ~N[2026-08-21 12:39:05], ~N[2026-08-21 12:39:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:05.948] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793737, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:05], updated_at: ~N[2026-08-21 12:39:05]}} [2026-08-21 12:39:05.949] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:39:04Z", "value" => "UNKNOWN"} [2026-08-21 12:39:06.012] [DEBUG] QUERY OK db=63.3ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "UNKNOWN", "sim_iccid", 78017, ~N[2026-08-21 12:39:05], ~N[2026-08-21 12:39:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:06.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793738, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:05], updated_at: ~N[2026-08-21 12:39:05]}} [2026-08-21 12:39:06.013] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:39:04Z", "value" => "UNKNOWN"} [2026-08-21 12:39:06.070] [DEBUG] QUERY OK db=56.8ms idle=65.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "UNKNOWN", "sim_imsi", 78017, ~N[2026-08-21 12:39:06], ~N[2026-08-21 12:39:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:06.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793739, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:06], updated_at: ~N[2026-08-21 12:39:06]}} [2026-08-21 12:39:06.071] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:39:04Z", "value" => "UNKNOWN"} [2026-08-21 12:39:06.156] [DEBUG] QUERY OK db=84.4ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "UNKNOWN", "sim_iccid2", 78017, ~N[2026-08-21 12:39:06], ~N[2026-08-21 12:39:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:06.156] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793740, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:06], updated_at: ~N[2026-08-21 12:39:06]}} [2026-08-21 12:39:06.156] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:39:04Z", "value" => "UNKNOWN"} [2026-08-21 12:39:06.185] [DEBUG] QUERY OK db=28.1ms idle=86.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "UNKNOWN", "sim_imsi2", 78017, ~N[2026-08-21 12:39:06], ~N[2026-08-21 12:39:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:06.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793741, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:06], updated_at: ~N[2026-08-21 12:39:06]}} [2026-08-21 12:39:06.186] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:39:04Z", "value" => "36"} [2026-08-21 12:39:06.258] [DEBUG] QUERY OK db=70.7ms idle=31.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "36", "data_usage_mb", 78017, ~N[2026-08-21 12:39:06], ~N[2026-08-21 12:39:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:06.258] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793742, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:06], updated_at: ~N[2026-08-21 12:39:06]}} [2026-08-21 12:39:06.259] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:39:04Z", "value" => "0"} [2026-08-21 12:39:06.301] [DEBUG] QUERY OK db=40.1ms idle=75.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "0", "mobile_data_mb", 78017, ~N[2026-08-21 12:39:06], ~N[2026-08-21 12:39:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:06.301] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793743, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:06], updated_at: ~N[2026-08-21 12:39:06]}} [2026-08-21 12:39:06.302] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:39:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:39:06.347] [DEBUG] QUERY OK db=44.7ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:04Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78017, ~N[2026-08-21 12:39:06], ~N[2026-08-21 12:39:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:06.354] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793744, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:39:04Z", message: nil, status_log_id: 78017, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:06], updated_at: ~N[2026-08-21 12:39:06]}} [2026-08-21 12:39:09.776] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:39:09.776] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:39:09Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:39:09Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:39:09Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:39:09Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:39:09Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:39:09Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:39:09Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:39:09Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:39:09Z","vendor":"MoreFun"} [2026-08-21 12:39:09.777] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:39:09Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:39:09Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:39:09Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:39:09Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:39:09Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:39:09Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:39:09Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:39:09Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:39:09Z", "vendor" => "MoreFun"} [2026-08-21 12:39:09.777] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:39:09.777] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:39:09.777] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:39:09.779] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.5ms idle=1173.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-08-21 12:39:09.781] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=423.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:39:09.782] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms idle=2.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-08-21 12:39:09.784] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.4ms idle=1.5ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:39:09.784] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms idle=2.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:39:09.825] [DEBUG] QUERY OK source="pos_merchant" db=40.8ms idle=1.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:39:09.827] [DEBUG] QUERY OK db=0.7ms queue=0.4ms idle=1625.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 ["626165170000000"] [2026-08-21 12:39:09.827] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:39:09.828] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms 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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:39:09.829] [DEBUG] QUERY OK source="address" db=0.5ms idle=2.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:39:09.829] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:39:09.830] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:39:09.890] [DEBUG] QUERY OK db=59.6ms idle=2.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "052f5a3ddbd908a8302948cf165e992a275d50b63880547557fdf341e4800bc9", 1765, 938, ~U[2026-08-21 12:39:09Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:39:09], ~N[2026-08-21 12:39:09]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:39:09.890] [INFO ] AutoPushService: Created push log 49098 for MF919 params.zip [2026-08-21 12:39:09.890] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1765, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:39:09.891] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:39:09.891] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:39:09.891] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=62.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-08-21 12:39:09.895] [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-08-21 12:39:09.939] [DEBUG] QUERY OK db=43.3ms idle=5.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c2acb3273e92006d12fda547aefa2a7e5f0ea541a3712035adf3859f16505cd7", 2372, 17947, ~U[2026-08-21 12:39:09Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:39:09], ~N[2026-08-21 12:39:09]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:39:09.939] [INFO ] AutoPushService: Created push log 49099 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:39:09.939] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2372, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:39:09.939] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:39:09.940] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:39:09.942] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=49.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-08-21 12:39:09.942] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:39:09.947] [DEBUG] QUERY OK source="tms_terminals" db=4.6ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:39:09.947] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 12:39:09.950] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:39:09.950] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:39:09.951] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:39:09.952] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms idle=9.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-08-21 12:39:09.953] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:39:09.953] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:39:09.954] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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-08-21 12:39:10.043] [DEBUG] QUERY OK source="tms_terminals" db=46.8ms queue=41.7ms idle=2.2ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:39:09], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:39:10.044] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:39:10.045] [INFO ] Event published: terminal_updated [2026-08-21 12:39:10.045] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:39:10.045] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:39:10.045] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:39:10.048] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.8ms queue=0.7ms idle=90.5ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:39:10], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:39:10.050] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=5.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:39:10.052] [DEBUG] QUERY OK source="terminal_group_rules" db=1.8ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:39:10.052] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:39:10.155] [DEBUG] QUERY OK source="tms_terminals" db=63.2ms queue=43.0ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:39:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:39:10.157] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms queue=0.1ms idle=103.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-08-21 12:39:10.159] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=1.5ms idle=2.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:39:10.163] [DEBUG] QUERY OK source="config_file_versions" db=3.0ms 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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:39:10.163] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:39:10.191] [DEBUG] QUERY OK source="parameter_push_logs" db=27.4ms idle=4.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-08-21 12:09:10]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:39:10.191] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:39:10.193] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:39:10.194] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms idle=30.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:39:10.195] [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-08-21 12:39:10.195] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:39:10.197] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:39:10.264] [DEBUG] QUERY OK source="tms_terminals" db=25.3ms queue=40.9ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:39:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:39:10.311] [DEBUG] QUERY OK db=46.3ms idle=67.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:39:09Z", ~N[2026-08-21 12:39:10], ~N[2026-08-21 12:39:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:39:10.311] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78018, oid: "organization_id", upload_time: "2026-08-21T12:39:09Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:10], updated_at: ~N[2026-08-21 12:39:10]} [2026-08-21 12:39:10.311] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:39:09Z", "value" => "online"} [2026-08-21 12:39:10.347] [DEBUG] QUERY OK db=35.4ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:39:09Z", "online", "status", 78018, ~N[2026-08-21 12:39:10], ~N[2026-08-21 12:39:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:10.347] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793745, itemkey: "status", value: "online", timestamp: "2026-08-21T12:39:09Z", message: "Terminal status update", status_log_id: 78018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:10], updated_at: ~N[2026-08-21 12:39:10]}} [2026-08-21 12:39:10.347] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:39:10.348] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:39:09Z", "value" => "51"} [2026-08-21 12:39:10.412] [DEBUG] QUERY OK db=63.8ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:39:09Z", "51", "battery", 78018, ~N[2026-08-21 12:39:10], ~N[2026-08-21 12:39:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:10.412] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793746, itemkey: "battery", value: "51", timestamp: "2026-08-21T12:39:09Z", message: "Battery level", status_log_id: 78018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:10], updated_at: ~N[2026-08-21 12:39:10]}} [2026-08-21 12:39:10.412] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:39:09Z", "value" => "online"} [2026-08-21 12:39:10.463] [DEBUG] QUERY OK db=49.3ms idle=54.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:39:09Z", "online", "network", 78018, ~N[2026-08-21 12:39:10], ~N[2026-08-21 12:39:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:10.464] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793747, itemkey: "network", value: "online", timestamp: "2026-08-21T12:39:09Z", message: "Network connectivity", status_log_id: 78018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:10], updated_at: ~N[2026-08-21 12:39:10]}} [2026-08-21 12:39:10.465] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:39:10.465] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:39:09Z", "value" => "0"} [2026-08-21 12:39:10.531] [DEBUG] QUERY OK db=65.8ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:39:09Z", "0", "cpu", 78018, ~N[2026-08-21 12:39:10], ~N[2026-08-21 12:39:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:10.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793748, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:39:09Z", message: "CPU usage percentage", status_log_id: 78018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:10], updated_at: ~N[2026-08-21 12:39:10]}} [2026-08-21 12:39:10.532] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:39:09Z", "value" => "1.0.0"} [2026-08-21 12:39:10.558] [DEBUG] QUERY OK db=25.6ms idle=68.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:39:09Z", "1.0.0", "parameter_config", 78018, ~N[2026-08-21 12:39:10], ~N[2026-08-21 12:39:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:10.558] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793749, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:39:09Z", message: "Current parameters version", status_log_id: 78018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:10], updated_at: ~N[2026-08-21 12:39:10]}} [2026-08-21 12:39:10.558] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:39:09Z", "value" => "1.0.1"} [2026-08-21 12:39:10.613] [DEBUG] QUERY OK db=54.5ms idle=27.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:39:09Z", "1.0.1", "emv_config", 78018, ~N[2026-08-21 12:39:10], ~N[2026-08-21 12:39:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:10.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793750, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:39:09Z", message: "Current EMV config version", status_log_id: 78018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:10], updated_at: ~N[2026-08-21 12:39:10]}} [2026-08-21 12:39:10.613] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:39:09Z", "value" => ""} [2026-08-21 12:39:10.678] [DEBUG] QUERY OK db=23.5ms queue=40.9ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:39:09Z", "keys_config", 78018, ~N[2026-08-21 12:39:10], ~N[2026-08-21 12:39:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:10.679] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793751, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:39:09Z", message: "Current keys config version", status_log_id: 78018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:10], updated_at: ~N[2026-08-21 12:39:10]}} [2026-08-21 12:39:10.679] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:39:09Z", "value" => "3.8.7.3"} [2026-08-21 12:39:10.740] [DEBUG] QUERY OK db=60.9ms idle=66.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:39:09Z", "3.8.7.3", "application", 78018, ~N[2026-08-21 12:39:10], ~N[2026-08-21 12:39:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:10.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793752, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:39:09Z", message: "Current application version", status_log_id: 78018, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:10], updated_at: ~N[2026-08-21 12:39:10]}} [2026-08-21 12:39:10.742] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:39:09Z"} [2026-08-21 12:39:10.742] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:39:09Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 63, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:39:13.534] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch850190316951_20260821123913235","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T12:39:13Z"} [2026-08-21 12:39:13.534] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch850190316951_20260821123913235", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:39:13Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 65, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 56, 53, 48, 49, 57, 48, 51, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:39:30.222] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:39:09Z"} [2026-08-21 12:39:30.223] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:39:09Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 64, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:39:35.265] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:39:35.265] [INFO ] Incoming JSON payload: {"oid":"1d0f7c53-78ef-437f-920d-86d4a684987a","sn":"98251226730001","uploadTime":"2026-08-21T12:39:34Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"ram_free_mb","value":"874","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:39:34Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:39:35.268] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1d0f7c53-78ef-437f-920d-86d4a684987a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:39:34Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:39:34Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:39:34Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:39:34Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:39:34Z", "value" => "874"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:39:34Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:39:34Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:39:34Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:39:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:39:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:39:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:39:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:39:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:39:34Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:39:34Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:39:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:39:34Z", "vendor" => "morefun"} [2026-08-21 12:39:35.268] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:39:35.268] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:39:35.268] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:39:35.271] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=1.3ms idle=866.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-08-21 12:39:35.271] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=823.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-08-21 12:39:35.271] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:39:35.273] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:39:35.587] [DEBUG] QUERY OK source="tms_terminals" db=269.6ms queue=42.6ms idle=2.9ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 12:39:35], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:39:35.587] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:39:35.588] [INFO ] Event published: terminal_updated [2026-08-21 12:39:35.589] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:39:35.589] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:39:35.589] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:39:35.591] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.1ms idle=137.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:39:35], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:39:35.613] [DEBUG] QUERY OK source="tms_terminals" db=21.8ms queue=0.1ms idle=4.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:39:35.616] [DEBUG] QUERY OK source="terminal_group_rules" db=2.9ms idle=0.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:39:35.617] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:39:35.700] [DEBUG] QUERY OK source="tms_terminals" db=66.7ms queue=42.1ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 12:39:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:39:35.700] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:39:35.702] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=84.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:39:35.754] [DEBUG] QUERY OK source="tms_terminals" db=49.8ms queue=1.6ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:39:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:39:35.819] [DEBUG] QUERY OK db=64.3ms idle=52.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "1d0f7c53-78ef-437f-920d-86d4a684987a", "2026-08-21T12:39:34Z", ~N[2026-08-21 12:39:35], ~N[2026-08-21 12:39:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:39:35.820] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78019, oid: "1d0f7c53-78ef-437f-920d-86d4a684987a", upload_time: "2026-08-21T12:39:34Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:35], updated_at: ~N[2026-08-21 12:39:35]} [2026-08-21 12:39:35.821] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:39:34Z", "value" => "morefun"} [2026-08-21 12:39:35.859] [DEBUG] QUERY OK db=38.5ms idle=67.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "morefun", "vendor", 78019, ~N[2026-08-21 12:39:35], ~N[2026-08-21 12:39:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:35.860] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793753, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:35], updated_at: ~N[2026-08-21 12:39:35]}} [2026-08-21 12:39:35.861] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:39:34Z", "value" => "kiosk_launcher"} [2026-08-21 12:39:35.886] [DEBUG] QUERY OK db=23.9ms queue=0.6ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "kiosk_launcher", "model", 78019, ~N[2026-08-21 12:39:35], ~N[2026-08-21 12:39:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:35.887] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793754, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:35], updated_at: ~N[2026-08-21 12:39:35]}} [2026-08-21 12:39:35.888] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:39:34Z", "value" => "1.0"} [2026-08-21 12:39:35.956] [DEBUG] QUERY OK db=66.5ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "1.0", "app_version", 78019, ~N[2026-08-21 12:39:35], ~N[2026-08-21 12:39:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:35.957] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793755, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:35], updated_at: ~N[2026-08-21 12:39:35]}} [2026-08-21 12:39:35.957] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:39:34Z", "value" => "13"} [2026-08-21 12:39:36.005] [DEBUG] QUERY OK db=48.1ms queue=0.1ms idle=70.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "13", "android_version", 78019, ~N[2026-08-21 12:39:35], ~N[2026-08-21 12:39:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:36.006] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793756, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:35], updated_at: ~N[2026-08-21 12:39:35]}} [2026-08-21 12:39:36.006] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:39:34Z", "value" => "874"} [2026-08-21 12:39:36.051] [DEBUG] QUERY OK db=44.0ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "874", "ram_free_mb", 78019, ~N[2026-08-21 12:39:36], ~N[2026-08-21 12:39:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:36.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793758, itemkey: "ram_free_mb", value: "874", timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:36], updated_at: ~N[2026-08-21 12:39:36]}} [2026-08-21 12:39:36.051] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:39:34Z", "value" => "WIFI"} [2026-08-21 12:39:36.125] [DEBUG] QUERY OK db=73.8ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "WIFI", "network_type", 78019, ~N[2026-08-21 12:39:36], ~N[2026-08-21 12:39:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:36.125] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793760, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:36], updated_at: ~N[2026-08-21 12:39:36]}} [2026-08-21 12:39:36.126] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:39:34Z", "value" => "true"} [2026-08-21 12:39:36.174] [DEBUG] QUERY OK db=48.5ms idle=75.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "true", "kiosk_active", 78019, ~N[2026-08-21 12:39:36], ~N[2026-08-21 12:39:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:36.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793762, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:36], updated_at: ~N[2026-08-21 12:39:36]}} [2026-08-21 12:39:36.175] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:39:34Z", "value" => ""} [2026-08-21 12:39:36.218] [DEBUG] QUERY OK db=42.0ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:39:34Z", "sim_operator", 78019, ~N[2026-08-21 12:39:36], ~N[2026-08-21 12:39:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:36.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793764, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:36], updated_at: ~N[2026-08-21 12:39:36]}} [2026-08-21 12:39:36.220] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:39:34Z", "value" => "UNKNOWN"} [2026-08-21 12:39:36.287] [DEBUG] QUERY OK db=66.2ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "UNKNOWN", "sim_number", 78019, ~N[2026-08-21 12:39:36], ~N[2026-08-21 12:39:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:36.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793766, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:36], updated_at: ~N[2026-08-21 12:39:36]}} [2026-08-21 12:39:36.287] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:39:34Z", "value" => "UNKNOWN"} [2026-08-21 12:39:36.339] [DEBUG] QUERY OK db=51.3ms idle=69.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "UNKNOWN", "sim_iccid", 78019, ~N[2026-08-21 12:39:36], ~N[2026-08-21 12:39:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:36.339] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793768, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:36], updated_at: ~N[2026-08-21 12:39:36]}} [2026-08-21 12:39:36.339] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:39:34Z", "value" => "UNKNOWN"} [2026-08-21 12:39:36.394] [DEBUG] QUERY OK db=54.7ms idle=52.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "UNKNOWN", "sim_imsi", 78019, ~N[2026-08-21 12:39:36], ~N[2026-08-21 12:39:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:36.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793770, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:36], updated_at: ~N[2026-08-21 12:39:36]}} [2026-08-21 12:39:36.395] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:39:34Z", "value" => "UNKNOWN"} [2026-08-21 12:39:36.447] [DEBUG] QUERY OK db=50.8ms idle=56.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "UNKNOWN", "sim_iccid2", 78019, ~N[2026-08-21 12:39:36], ~N[2026-08-21 12:39:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:36.448] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793772, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:36], updated_at: ~N[2026-08-21 12:39:36]}} [2026-08-21 12:39:36.448] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:39:34Z", "value" => "UNKNOWN"} [2026-08-21 12:39:36.496] [DEBUG] QUERY OK db=47.8ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "UNKNOWN", "sim_imsi2", 78019, ~N[2026-08-21 12:39:36], ~N[2026-08-21 12:39:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:36.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793774, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:36], updated_at: ~N[2026-08-21 12:39:36]}} [2026-08-21 12:39:36.496] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:39:34Z", "value" => "36"} [2026-08-21 12:39:36.543] [DEBUG] QUERY OK db=42.9ms queue=1.9ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "36", "data_usage_mb", 78019, ~N[2026-08-21 12:39:36], ~N[2026-08-21 12:39:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:36.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793776, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:36], updated_at: ~N[2026-08-21 12:39:36]}} [2026-08-21 12:39:36.544] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:39:34Z", "value" => "0"} [2026-08-21 12:39:36.583] [DEBUG] QUERY OK db=39.0ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "0", "mobile_data_mb", 78019, ~N[2026-08-21 12:39:36], ~N[2026-08-21 12:39:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:36.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793778, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:36], updated_at: ~N[2026-08-21 12:39:36]}} [2026-08-21 12:39:36.585] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:39:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:39:36.656] [DEBUG] QUERY OK db=69.1ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:39:34Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78019, ~N[2026-08-21 12:39:36], ~N[2026-08-21 12:39:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:36.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793780, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:39:34Z", message: nil, status_log_id: 78019, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:36], updated_at: ~N[2026-08-21 12:39:36]}} [2026-08-21 12:39:47.449] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:39:47.449] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:39:47Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:39:47Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:39:47Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:39:47Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:39:47Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:39:47Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:39:47Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:39:47Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:39:47Z","vendor":"MoreFun"} [2026-08-21 12:39:47.449] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:39:47Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:39:47Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:39:47Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:39:47Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:39:47Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:39:47Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:39:47Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:39:47Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:39:47Z", "vendor" => "MoreFun"} [2026-08-21 12:39:47.452] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:39:47.452] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:39:47.452] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:39:47.453] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.1ms idle=947.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-08-21 12:39:47.455] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=234.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:39:47.456] [DEBUG] QUERY OK source="parameter_template_values" db=0.9ms 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-08-21 12:39:47.461] [DEBUG] QUERY OK source="parameter_definitions" db=2.0ms queue=2.2ms idle=1.5ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:39:47.463] [DEBUG] QUERY OK source="pos_terminal" db=2.1ms idle=5.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:39:47.502] [DEBUG] QUERY OK source="pos_merchant" db=37.7ms idle=2.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:39:47.504] [DEBUG] QUERY OK db=0.7ms queue=1.4ms idle=298.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 ["626165170000000"] [2026-08-21 12:39:47.504] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:39:47.505] [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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:39:47.508] [DEBUG] QUERY OK source="address" db=3.4ms idle=3.4ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:39:47.509] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:39:47.510] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:39:47.551] [DEBUG] QUERY OK db=37.9ms idle=3.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "77a20ffdc9fde99f25976d185d93ee2ddf4f6103a142c82cf9be2291f1d7643a", 2596, 938, ~U[2026-08-21 12:39:47Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:39:47], ~N[2026-08-21 12:39:47]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:39:47.551] [INFO ] AutoPushService: Created push log 49100 for MF919 params.zip [2026-08-21 12:39:47.551] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 2596, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:39:47.555] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:39:47.556] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:39:47.559] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=44.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:39:47.564] [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-08-21 12:39:47.634] [DEBUG] QUERY OK db=65.8ms idle=18.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "30dfce91bb2e220c49e31f5359e9612ce4e86f90302acccede1c827ea41c47ea", 2692, 17947, ~U[2026-08-21 12:39:47Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:39:47], ~N[2026-08-21 12:39:47]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:39:47.635] [INFO ] AutoPushService: Created push log 49102 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:39:47.635] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2692, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:39:47.635] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:39:47.635] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:39:47.638] [DEBUG] QUERY OK source="config_file_versions" db=2.6ms idle=76.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-08-21 12:39:47.639] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:39:47.643] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=0.1ms idle=5.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:39:47.643] [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-08-21 12:39:47.651] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:39:47.651] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:39:47.651] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:39:47.656] [DEBUG] QUERY OK source="config_file_versions" db=3.1ms idle=13.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-08-21 12:39:47.657] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:39:47.658] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:39:47.661] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=16.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:39:47.744] [DEBUG] QUERY OK source="tms_terminals" db=42.8ms queue=40.4ms idle=6.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:39:47], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:39:47.744] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:39:47.746] [INFO ] Event published: terminal_updated [2026-08-21 12:39:47.746] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms idle=85.4ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:39:47], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:39:47.749] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:39:47.749] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:39:47.749] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:39:47.753] [DEBUG] QUERY OK source="tms_terminals" db=5.9ms queue=0.1ms idle=2.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:39:47.769] [DEBUG] QUERY OK source="terminal_group_rules" db=4.5ms queue=1.0ms idle=10.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:39:47.777] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:39:47.830] [DEBUG] QUERY OK source="tms_terminals" db=40.9ms queue=42.4ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:39:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:39:47.834] [DEBUG] QUERY OK source="parameter_templates" db=3.5ms idle=61.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-08-21 12:39:47.839] [DEBUG] QUERY OK source="config_file_versions" db=4.5ms idle=4.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:39:47.844] [DEBUG] QUERY OK source="config_file_versions" db=3.5ms 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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:39:47.844] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:39:47.955] [DEBUG] QUERY OK source="parameter_push_logs" db=109.8ms idle=7.1ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-08-21 12:09:47]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:39:47.956] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:39:47.956] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:39:47.957] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=112.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-08-21 12:39:47.960] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms queue=1.0ms 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-08-21 12:39:47.963] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:39:47.969] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=8.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:39:48.061] [DEBUG] QUERY OK source="tms_terminals" db=47.6ms queue=40.8ms idle=12.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:39:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:39:48.113] [DEBUG] QUERY OK db=50.4ms queue=0.2ms idle=92.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:39:47Z", ~N[2026-08-21 12:39:48], ~N[2026-08-21 12:39:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:39:48.113] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78021, oid: "organization_id", upload_time: "2026-08-21T12:39:47Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:48], updated_at: ~N[2026-08-21 12:39:48]} [2026-08-21 12:39:48.113] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:39:47Z", "value" => "online"} [2026-08-21 12:39:48.175] [DEBUG] QUERY OK db=58.3ms queue=0.2ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:39:47Z", "online", "status", 78021, ~N[2026-08-21 12:39:48], ~N[2026-08-21 12:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:48.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793785, itemkey: "status", value: "online", timestamp: "2026-08-21T12:39:47Z", message: "Terminal status update", status_log_id: 78021, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:48], updated_at: ~N[2026-08-21 12:39:48]}} [2026-08-21 12:39:48.175] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:39:48.175] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:39:47Z", "value" => "51"} [2026-08-21 12:39:48.229] [DEBUG] QUERY OK db=42.8ms queue=3.6ms idle=69.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:39:47Z", "51", "battery", 78021, ~N[2026-08-21 12:39:48], ~N[2026-08-21 12:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:48.230] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793787, itemkey: "battery", value: "51", timestamp: "2026-08-21T12:39:47Z", message: "Battery level", status_log_id: 78021, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:48], updated_at: ~N[2026-08-21 12:39:48]}} [2026-08-21 12:39:48.230] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:39:47Z", "value" => "online"} [2026-08-21 12:39:48.273] [DEBUG] QUERY OK db=42.6ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:39:47Z", "online", "network", 78021, ~N[2026-08-21 12:39:48], ~N[2026-08-21 12:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:48.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793789, itemkey: "network", value: "online", timestamp: "2026-08-21T12:39:47Z", message: "Network connectivity", status_log_id: 78021, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:48], updated_at: ~N[2026-08-21 12:39:48]}} [2026-08-21 12:39:48.274] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:39:48.274] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:39:47Z", "value" => "0"} [2026-08-21 12:39:48.365] [DEBUG] QUERY OK db=90.3ms queue=0.1ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:39:47Z", "0", "cpu", 78021, ~N[2026-08-21 12:39:48], ~N[2026-08-21 12:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:48.366] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793791, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:39:47Z", message: "CPU usage percentage", status_log_id: 78021, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:48], updated_at: ~N[2026-08-21 12:39:48]}} [2026-08-21 12:39:48.366] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:39:47Z", "value" => "1.0.0"} [2026-08-21 12:39:48.424] [DEBUG] QUERY OK db=57.6ms idle=93.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:39:47Z", "1.0.0", "parameter_config", 78021, ~N[2026-08-21 12:39:48], ~N[2026-08-21 12:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:48.425] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793793, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:39:47Z", message: "Current parameters version", status_log_id: 78021, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:48], updated_at: ~N[2026-08-21 12:39:48]}} [2026-08-21 12:39:48.425] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:39:47Z", "value" => "1.0.1"} [2026-08-21 12:39:48.485] [DEBUG] QUERY OK db=58.0ms queue=0.2ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:39:47Z", "1.0.1", "emv_config", 78021, ~N[2026-08-21 12:39:48], ~N[2026-08-21 12:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:48.485] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793795, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:39:47Z", message: "Current EMV config version", status_log_id: 78021, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:48], updated_at: ~N[2026-08-21 12:39:48]}} [2026-08-21 12:39:48.485] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:39:47Z", "value" => ""} [2026-08-21 12:39:48.541] [DEBUG] QUERY OK db=53.2ms queue=1.0ms idle=62.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:39:47Z", "keys_config", 78021, ~N[2026-08-21 12:39:48], ~N[2026-08-21 12:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:48.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793797, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:39:47Z", message: "Current keys config version", status_log_id: 78021, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:48], updated_at: ~N[2026-08-21 12:39:48]}} [2026-08-21 12:39:48.545] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:39:47Z", "value" => "3.8.7.3"} [2026-08-21 12:39:48.625] [DEBUG] QUERY OK db=78.5ms queue=1.2ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:39:47Z", "3.8.7.3", "application", 78021, ~N[2026-08-21 12:39:48], ~N[2026-08-21 12:39:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:39:48.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793799, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:39:47Z", message: "Current application version", status_log_id: 78021, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:39:48], updated_at: ~N[2026-08-21 12:39:48]}} [2026-08-21 12:39:48.630] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:39:47Z"} [2026-08-21 12:39:48.631] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:39:47Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 68, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:40:05.146] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch850190316951_20260821124004734","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T12:40:04Z"} [2026-08-21 12:40:05.147] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch850190316951_20260821124004734", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:40:04Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 71, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 56, 53, 48, 49, 57, 48, 51, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:40:05.310] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:40:05.310] [INFO ] Incoming JSON payload: {"oid":"07557be2-aa57-407e-b4d7-8f0195da78cc","sn":"98251226730001","uploadTime":"2026-08-21T12:40:04Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"ram_free_mb","value":"879","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:40:04Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:40:05.328] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "07557be2-aa57-407e-b4d7-8f0195da78cc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:40:04Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:40:04Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:40:04Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:40:04Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:40:04Z", "value" => "879"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:40:04Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:40:04Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:40:04Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:40:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:40:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:40:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:40:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:40:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:40:04Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:40:04Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:40:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:40:04Z", "vendor" => "morefun"} [2026-08-21 12:40:05.329] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:40:05.332] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:40:05.334] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:40:05.336] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=881.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-08-21 12:40:05.342] [DEBUG] QUERY OK source="parameter_templates" db=5.0ms queue=0.1ms idle=746.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-08-21 12:40:05.342] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:40:05.349] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=11.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:40:05.426] [DEBUG] QUERY OK source="tms_terminals" db=76.2ms idle=7.8ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 12:40:05], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:40:05.426] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:40:05.430] [INFO ] Event published: terminal_updated [2026-08-21 12:40:05.430] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:40:05.431] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:40:05.431] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:40:05.433] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.1ms idle=81.4ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:40:05], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:40:05.437] [DEBUG] QUERY OK source="tms_terminals" db=3.5ms idle=7.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:40:05.443] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms 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_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:40:05.443] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:40:05.506] [DEBUG] QUERY OK source="tms_terminals" db=23.2ms queue=48.5ms idle=0.8ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 12:40:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:40:05.506] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:40:05.508] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms queue=0.1ms idle=63.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:40:05.567] [DEBUG] QUERY OK source="tms_terminals" db=15.0ms queue=43.1ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:40:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:40:05.604] [DEBUG] QUERY OK db=36.5ms idle=58.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "07557be2-aa57-407e-b4d7-8f0195da78cc", "2026-08-21T12:40:04Z", ~N[2026-08-21 12:40:05], ~N[2026-08-21 12:40:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:40:05.604] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78023, oid: "07557be2-aa57-407e-b4d7-8f0195da78cc", upload_time: "2026-08-21T12:40:04Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:05], updated_at: ~N[2026-08-21 12:40:05]} [2026-08-21 12:40:05.604] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:40:04Z", "value" => "morefun"} [2026-08-21 12:40:05.687] [DEBUG] QUERY OK db=40.8ms queue=42.0ms idle=3.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "morefun", "vendor", 78023, ~N[2026-08-21 12:40:05], ~N[2026-08-21 12:40:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:05.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793801, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:05], updated_at: ~N[2026-08-21 12:40:05]}} [2026-08-21 12:40:05.688] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:40:04Z", "value" => "kiosk_launcher"} [2026-08-21 12:40:05.784] [DEBUG] QUERY OK db=94.7ms idle=85.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "kiosk_launcher", "model", 78023, ~N[2026-08-21 12:40:05], ~N[2026-08-21 12:40:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:05.786] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793803, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:05], updated_at: ~N[2026-08-21 12:40:05]}} [2026-08-21 12:40:05.786] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:40:04Z", "value" => "1.0"} [2026-08-21 12:40:05.858] [DEBUG] QUERY OK db=72.0ms idle=98.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "1.0", "app_version", 78023, ~N[2026-08-21 12:40:05], ~N[2026-08-21 12:40:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:05.858] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793805, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:05], updated_at: ~N[2026-08-21 12:40:05]}} [2026-08-21 12:40:05.859] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:40:04Z", "value" => "13"} [2026-08-21 12:40:05.939] [DEBUG] QUERY OK db=76.9ms queue=0.5ms idle=77.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "13", "android_version", 78023, ~N[2026-08-21 12:40:05], ~N[2026-08-21 12:40:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:05.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793807, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:05], updated_at: ~N[2026-08-21 12:40:05]}} [2026-08-21 12:40:05.939] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:40:04Z", "value" => "879"} [2026-08-21 12:40:06.008] [DEBUG] QUERY OK db=68.4ms idle=81.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "879", "ram_free_mb", 78023, ~N[2026-08-21 12:40:05], ~N[2026-08-21 12:40:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:06.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793809, itemkey: "ram_free_mb", value: "879", timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:05], updated_at: ~N[2026-08-21 12:40:05]}} [2026-08-21 12:40:06.008] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:40:04Z", "value" => "WIFI"} [2026-08-21 12:40:06.074] [DEBUG] QUERY OK db=65.5ms idle=69.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "WIFI", "network_type", 78023, ~N[2026-08-21 12:40:06], ~N[2026-08-21 12:40:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:06.075] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793811, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:06], updated_at: ~N[2026-08-21 12:40:06]}} [2026-08-21 12:40:06.075] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:40:04Z", "value" => "true"} [2026-08-21 12:40:06.146] [DEBUG] QUERY OK db=61.6ms queue=8.6ms idle=67.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "true", "kiosk_active", 78023, ~N[2026-08-21 12:40:06], ~N[2026-08-21 12:40:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:06.146] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793813, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:06], updated_at: ~N[2026-08-21 12:40:06]}} [2026-08-21 12:40:06.146] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:40:04Z", "value" => ""} [2026-08-21 12:40:06.210] [DEBUG] QUERY OK db=63.1ms idle=71.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:40:04Z", "sim_operator", 78023, ~N[2026-08-21 12:40:06], ~N[2026-08-21 12:40:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:06.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793815, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:06], updated_at: ~N[2026-08-21 12:40:06]}} [2026-08-21 12:40:06.214] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:40:04Z", "value" => "UNKNOWN"} [2026-08-21 12:40:06.259] [DEBUG] QUERY OK db=36.7ms queue=2.2ms idle=74.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "UNKNOWN", "sim_number", 78023, ~N[2026-08-21 12:40:06], ~N[2026-08-21 12:40:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:06.259] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793817, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:06], updated_at: ~N[2026-08-21 12:40:06]}} [2026-08-21 12:40:06.260] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:40:04Z", "value" => "UNKNOWN"} [2026-08-21 12:40:06.302] [DEBUG] QUERY OK db=42.1ms queue=0.1ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "UNKNOWN", "sim_iccid", 78023, ~N[2026-08-21 12:40:06], ~N[2026-08-21 12:40:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:06.305] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793819, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:06], updated_at: ~N[2026-08-21 12:40:06]}} [2026-08-21 12:40:06.308] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:40:04Z", "value" => "UNKNOWN"} [2026-08-21 12:40:06.377] [DEBUG] QUERY OK db=64.8ms queue=0.5ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "UNKNOWN", "sim_imsi", 78023, ~N[2026-08-21 12:40:06], ~N[2026-08-21 12:40:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:06.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793821, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:06], updated_at: ~N[2026-08-21 12:40:06]}} [2026-08-21 12:40:06.378] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:40:04Z", "value" => "UNKNOWN"} [2026-08-21 12:40:06.454] [DEBUG] QUERY OK db=75.7ms idle=4.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "UNKNOWN", "sim_iccid2", 78023, ~N[2026-08-21 12:40:06], ~N[2026-08-21 12:40:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:06.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793823, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:06], updated_at: ~N[2026-08-21 12:40:06]}} [2026-08-21 12:40:06.455] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:40:04Z", "value" => "UNKNOWN"} [2026-08-21 12:40:06.525] [DEBUG] QUERY OK db=70.1ms queue=0.1ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "UNKNOWN", "sim_imsi2", 78023, ~N[2026-08-21 12:40:06], ~N[2026-08-21 12:40:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:06.527] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793825, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:06], updated_at: ~N[2026-08-21 12:40:06]}} [2026-08-21 12:40:06.531] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:40:04Z", "value" => "36"} [2026-08-21 12:40:06.583] [DEBUG] QUERY OK db=46.0ms queue=5.6ms idle=76.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "36", "data_usage_mb", 78023, ~N[2026-08-21 12:40:06], ~N[2026-08-21 12:40:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:06.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793827, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:06], updated_at: ~N[2026-08-21 12:40:06]}} [2026-08-21 12:40:06.586] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:40:04Z", "value" => "0"} [2026-08-21 12:40:06.625] [DEBUG] QUERY OK db=38.5ms idle=61.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "0", "mobile_data_mb", 78023, ~N[2026-08-21 12:40:06], ~N[2026-08-21 12:40:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:06.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793829, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:06], updated_at: ~N[2026-08-21 12:40:06]}} [2026-08-21 12:40:06.630] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:40:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:40:06.711] [DEBUG] QUERY OK db=78.2ms idle=23.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:04Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78023, ~N[2026-08-21 12:40:06], ~N[2026-08-21 12:40:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:06.718] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793831, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:40:04Z", message: nil, status_log_id: 78023, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:06], updated_at: ~N[2026-08-21 12:40:06]}} [2026-08-21 12:40:07.924] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:39:47Z"} [2026-08-21 12:40:07.924] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:39:47Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 69, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:40:07.930] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:39:47Z"} [2026-08-21 12:40:07.930] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:39:47Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 70, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:40:35.428] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:40:35.428] [INFO ] Incoming JSON payload: {"oid":"ada4b5ca-401b-4f22-9fb8-1952fe84c937","sn":"98251226730001","uploadTime":"2026-08-21T12:40:35Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:40:35Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:40:35Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:40:35Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:40:35Z"},{"itemkey":"ram_free_mb","value":"870","timestamp":"2026-08-21T12:40:35Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:40:35Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:40:35Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:40:35Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:40:35Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:40:35Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:40:35Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:40:35Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:40:35Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:40:35Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:40: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:40:35.429] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ada4b5ca-401b-4f22-9fb8-1952fe84c937", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:40:35Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:40:35Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:40:35Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:40:35Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:40:35Z", "value" => "870"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:40:35Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:40:35Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:40:35Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:40:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:40:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:40:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:40:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:40:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:40:35Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:40:35Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:40: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:40:35Z", "vendor" => "morefun"} [2026-08-21 12:40:35.429] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:40:35.429] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:40:35.429] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:40:35.432] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=714.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-08-21 12:40:35.437] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms queue=0.5ms idle=306.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-08-21 12:40:35.437] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:40:35.440] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=1.0ms idle=6.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:40:35.440] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:40:35.491] [DEBUG] QUERY OK source="tms_terminals" db=9.2ms queue=40.6ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:40:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:40:35.491] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:40:35.494] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:40:35.564] [DEBUG] QUERY OK source="tms_terminals" db=67.3ms queue=2.4ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:40:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:40:35.604] [DEBUG] QUERY OK db=39.5ms idle=70.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ada4b5ca-401b-4f22-9fb8-1952fe84c937", "2026-08-21T12:40:35Z", ~N[2026-08-21 12:40:35], ~N[2026-08-21 12:40:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:40:35.604] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78026, oid: "ada4b5ca-401b-4f22-9fb8-1952fe84c937", upload_time: "2026-08-21T12:40:35Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:35], updated_at: ~N[2026-08-21 12:40:35]} [2026-08-21 12:40:35.604] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:40:35Z", "value" => "morefun"} [2026-08-21 12:40:35.657] [DEBUG] QUERY OK db=52.3ms idle=40.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:35Z", "morefun", "vendor", 78026, ~N[2026-08-21 12:40:35], ~N[2026-08-21 12:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:35.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793834, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:35], updated_at: ~N[2026-08-21 12:40:35]}} [2026-08-21 12:40:35.658] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:40:35Z", "value" => "kiosk_launcher"} [2026-08-21 12:40:35.699] [DEBUG] QUERY OK db=40.4ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:35Z", "kiosk_launcher", "model", 78026, ~N[2026-08-21 12:40:35], ~N[2026-08-21 12:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:35.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793836, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:35], updated_at: ~N[2026-08-21 12:40:35]}} [2026-08-21 12:40:35.699] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:40:35Z", "value" => "1.0"} [2026-08-21 12:40:35.751] [DEBUG] QUERY OK db=50.9ms queue=0.1ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:35Z", "1.0", "app_version", 78026, ~N[2026-08-21 12:40:35], ~N[2026-08-21 12:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:35.752] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793838, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:35], updated_at: ~N[2026-08-21 12:40:35]}} [2026-08-21 12:40:35.752] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:40:35Z", "value" => "13"} [2026-08-21 12:40:35.806] [DEBUG] QUERY OK db=53.9ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:35Z", "13", "android_version", 78026, ~N[2026-08-21 12:40:35], ~N[2026-08-21 12:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:35.806] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793840, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:35], updated_at: ~N[2026-08-21 12:40:35]}} [2026-08-21 12:40:35.806] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:40:35Z", "value" => "870"} [2026-08-21 12:40:35.857] [DEBUG] QUERY OK db=50.2ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:35Z", "870", "ram_free_mb", 78026, ~N[2026-08-21 12:40:35], ~N[2026-08-21 12:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:35.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793842, itemkey: "ram_free_mb", value: "870", timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:35], updated_at: ~N[2026-08-21 12:40:35]}} [2026-08-21 12:40:35.857] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:40:35Z", "value" => "WIFI"} [2026-08-21 12:40:35.952] [DEBUG] QUERY OK db=93.9ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:35Z", "WIFI", "network_type", 78026, ~N[2026-08-21 12:40:35], ~N[2026-08-21 12:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:35.952] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793844, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:35], updated_at: ~N[2026-08-21 12:40:35]}} [2026-08-21 12:40:35.952] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:40:35Z", "value" => "true"} [2026-08-21 12:40:35.994] [DEBUG] QUERY OK db=41.8ms idle=95.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:35Z", "true", "kiosk_active", 78026, ~N[2026-08-21 12:40:35], ~N[2026-08-21 12:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:35.995] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793846, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:35], updated_at: ~N[2026-08-21 12:40:35]}} [2026-08-21 12:40:35.995] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:40:35Z", "value" => ""} [2026-08-21 12:40:36.045] [DEBUG] QUERY OK db=49.5ms idle=43.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:40:35Z", "sim_operator", 78026, ~N[2026-08-21 12:40:35], ~N[2026-08-21 12:40:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:36.045] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793848, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:35], updated_at: ~N[2026-08-21 12:40:35]}} [2026-08-21 12:40:36.045] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:40:35Z", "value" => "UNKNOWN"} [2026-08-21 12:40:36.099] [DEBUG] QUERY OK db=52.2ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:35Z", "UNKNOWN", "sim_number", 78026, ~N[2026-08-21 12:40:36], ~N[2026-08-21 12:40:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:36.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793850, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:36], updated_at: ~N[2026-08-21 12:40:36]}} [2026-08-21 12:40:36.099] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:40:35Z", "value" => "UNKNOWN"} [2026-08-21 12:40:36.173] [DEBUG] QUERY OK db=72.8ms queue=0.1ms idle=55.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:35Z", "UNKNOWN", "sim_iccid", 78026, ~N[2026-08-21 12:40:36], ~N[2026-08-21 12:40:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:36.173] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793852, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:36], updated_at: ~N[2026-08-21 12:40:36]}} [2026-08-21 12:40:36.173] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:40:35Z", "value" => "UNKNOWN"} [2026-08-21 12:40:36.224] [DEBUG] QUERY OK db=50.1ms queue=0.2ms idle=74.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:35Z", "UNKNOWN", "sim_imsi", 78026, ~N[2026-08-21 12:40:36], ~N[2026-08-21 12:40:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:36.224] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793854, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:36], updated_at: ~N[2026-08-21 12:40:36]}} [2026-08-21 12:40:36.224] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:40:35Z", "value" => "UNKNOWN"} [2026-08-21 12:40:36.298] [DEBUG] QUERY OK db=72.9ms queue=0.1ms idle=52.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:35Z", "UNKNOWN", "sim_iccid2", 78026, ~N[2026-08-21 12:40:36], ~N[2026-08-21 12:40:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:36.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793856, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:36], updated_at: ~N[2026-08-21 12:40:36]}} [2026-08-21 12:40:36.299] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:40:35Z", "value" => "UNKNOWN"} [2026-08-21 12:40:36.376] [DEBUG] QUERY OK db=76.3ms idle=75.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:35Z", "UNKNOWN", "sim_imsi2", 78026, ~N[2026-08-21 12:40:36], ~N[2026-08-21 12:40:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:36.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793858, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:36], updated_at: ~N[2026-08-21 12:40:36]}} [2026-08-21 12:40:36.377] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:40:35Z", "value" => "36"} [2026-08-21 12:40:36.423] [DEBUG] QUERY OK db=45.5ms queue=0.3ms idle=79.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:35Z", "36", "data_usage_mb", 78026, ~N[2026-08-21 12:40:36], ~N[2026-08-21 12:40:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:36.424] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793860, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:36], updated_at: ~N[2026-08-21 12:40:36]}} [2026-08-21 12:40:36.424] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:40:35Z", "value" => "0"} [2026-08-21 12:40:36.459] [DEBUG] QUERY OK db=35.0ms queue=0.1ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40:35Z", "0", "mobile_data_mb", 78026, ~N[2026-08-21 12:40:36], ~N[2026-08-21 12:40:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:36.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793862, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:36], updated_at: ~N[2026-08-21 12:40:36]}} [2026-08-21 12:40:36.461] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:40: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:40:36.520] [DEBUG] QUERY OK db=57.8ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:40: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78026, ~N[2026-08-21 12:40:36], ~N[2026-08-21 12:40:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:40:36.520] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793864, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:40:35Z", message: nil, status_log_id: 78026, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:40:36], updated_at: ~N[2026-08-21 12:40:36]}} [2026-08-21 12:41:05.532] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:41:05.534] [INFO ] Incoming JSON payload: {"oid":"192ba561-116e-4243-af56-b57948afa907","sn":"98251226730001","uploadTime":"2026-08-21T12:41:05Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"ram_free_mb","value":"870","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:41:05Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:41:05.536] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "192ba561-116e-4243-af56-b57948afa907", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:41:05Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:41:05Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:41:05Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:41:05Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:41:05Z", "value" => "870"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:41:05Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:41:05Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:41:05Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:41:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:41:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:41:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:41:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:41:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:41:05Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:41:05Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:41:05Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:41:05Z", "vendor" => "morefun"} [2026-08-21 12:41:05.536] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:41:05.536] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:41:05.536] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:41:05.539] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=988.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-08-21 12:41:05.540] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=723.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-08-21 12:41:05.540] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:41:05.546] [DEBUG] QUERY OK source="tms_terminals" db=5.0ms idle=2.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:41:05.546] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:41:05.581] [DEBUG] QUERY OK source="tms_terminals" db=34.8ms queue=0.1ms idle=5.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:41:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:41:05.581] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:41:05.584] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=35.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:41:05.685] [DEBUG] QUERY OK source="tms_terminals" db=97.3ms queue=1.0ms idle=5.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:41:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:41:05.710] [DEBUG] QUERY OK db=23.8ms queue=0.1ms idle=101.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "192ba561-116e-4243-af56-b57948afa907", "2026-08-21T12:41:05Z", ~N[2026-08-21 12:41:05], ~N[2026-08-21 12:41:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:41:05.710] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78027, oid: "192ba561-116e-4243-af56-b57948afa907", upload_time: "2026-08-21T12:41:05Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:05], updated_at: ~N[2026-08-21 12:41:05]} [2026-08-21 12:41:05.711] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:41:05Z", "value" => "morefun"} [2026-08-21 12:41:05.759] [DEBUG] QUERY OK db=47.1ms idle=25.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "morefun", "vendor", 78027, ~N[2026-08-21 12:41:05], ~N[2026-08-21 12:41:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:05.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793865, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:05], updated_at: ~N[2026-08-21 12:41:05]}} [2026-08-21 12:41:05.759] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:41:05Z", "value" => "kiosk_launcher"} [2026-08-21 12:41:05.818] [DEBUG] QUERY OK db=58.3ms queue=0.1ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "kiosk_launcher", "model", 78027, ~N[2026-08-21 12:41:05], ~N[2026-08-21 12:41:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:05.818] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793867, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:05], updated_at: ~N[2026-08-21 12:41:05]}} [2026-08-21 12:41:05.818] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:41:05Z", "value" => "1.0"} [2026-08-21 12:41:05.879] [DEBUG] QUERY OK db=59.7ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "1.0", "app_version", 78027, ~N[2026-08-21 12:41:05], ~N[2026-08-21 12:41:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:05.879] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793869, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:05], updated_at: ~N[2026-08-21 12:41:05]}} [2026-08-21 12:41:05.879] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:41:05Z", "value" => "13"} [2026-08-21 12:41:05.928] [DEBUG] QUERY OK db=48.6ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "13", "android_version", 78027, ~N[2026-08-21 12:41:05], ~N[2026-08-21 12:41:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:05.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793871, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:05], updated_at: ~N[2026-08-21 12:41:05]}} [2026-08-21 12:41:05.928] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:41:05Z", "value" => "870"} [2026-08-21 12:41:06.001] [DEBUG] QUERY OK db=72.5ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "870", "ram_free_mb", 78027, ~N[2026-08-21 12:41:05], ~N[2026-08-21 12:41:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:06.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793873, itemkey: "ram_free_mb", value: "870", timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:05], updated_at: ~N[2026-08-21 12:41:05]}} [2026-08-21 12:41:06.002] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:41:05Z", "value" => "WIFI"} [2026-08-21 12:41:06.073] [DEBUG] QUERY OK db=69.8ms queue=0.1ms idle=74.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "WIFI", "network_type", 78027, ~N[2026-08-21 12:41:06], ~N[2026-08-21 12:41:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:06.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793875, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:06], updated_at: ~N[2026-08-21 12:41:06]}} [2026-08-21 12:41:06.074] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:41:05Z", "value" => "true"} [2026-08-21 12:41:06.154] [DEBUG] QUERY OK db=79.6ms queue=0.2ms idle=72.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "true", "kiosk_active", 78027, ~N[2026-08-21 12:41:06], ~N[2026-08-21 12:41:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:06.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793877, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:06], updated_at: ~N[2026-08-21 12:41:06]}} [2026-08-21 12:41:06.155] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:41:05Z", "value" => ""} [2026-08-21 12:41:06.210] [DEBUG] QUERY OK db=54.4ms idle=82.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:41:05Z", "sim_operator", 78027, ~N[2026-08-21 12:41:06], ~N[2026-08-21 12:41:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:06.210] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793879, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:06], updated_at: ~N[2026-08-21 12:41:06]}} [2026-08-21 12:41:06.211] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:41:05Z", "value" => "UNKNOWN"} [2026-08-21 12:41:06.280] [DEBUG] QUERY OK db=69.0ms idle=56.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "UNKNOWN", "sim_number", 78027, ~N[2026-08-21 12:41:06], ~N[2026-08-21 12:41:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:06.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793881, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:06], updated_at: ~N[2026-08-21 12:41:06]}} [2026-08-21 12:41:06.280] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:41:05Z", "value" => "UNKNOWN"} [2026-08-21 12:41:06.351] [DEBUG] QUERY OK db=70.5ms idle=70.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "UNKNOWN", "sim_iccid", 78027, ~N[2026-08-21 12:41:06], ~N[2026-08-21 12:41:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:06.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793883, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:06], updated_at: ~N[2026-08-21 12:41:06]}} [2026-08-21 12:41:06.352] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:41:05Z", "value" => "UNKNOWN"} [2026-08-21 12:41:06.419] [DEBUG] QUERY OK db=67.0ms idle=72.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "UNKNOWN", "sim_imsi", 78027, ~N[2026-08-21 12:41:06], ~N[2026-08-21 12:41:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:06.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793885, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:06], updated_at: ~N[2026-08-21 12:41:06]}} [2026-08-21 12:41:06.420] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:41:05Z", "value" => "UNKNOWN"} [2026-08-21 12:41:06.493] [DEBUG] QUERY OK db=67.9ms idle=72.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "UNKNOWN", "sim_iccid2", 78027, ~N[2026-08-21 12:41:06], ~N[2026-08-21 12:41:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:06.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793887, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:06], updated_at: ~N[2026-08-21 12:41:06]}} [2026-08-21 12:41:06.494] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:41:05Z", "value" => "UNKNOWN"} [2026-08-21 12:41:06.537] [DEBUG] QUERY OK db=43.4ms idle=74.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "UNKNOWN", "sim_imsi2", 78027, ~N[2026-08-21 12:41:06], ~N[2026-08-21 12:41:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:06.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793889, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:06], updated_at: ~N[2026-08-21 12:41:06]}} [2026-08-21 12:41:06.538] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:41:05Z", "value" => "36"} [2026-08-21 12:41:06.631] [DEBUG] QUERY OK db=89.2ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "36", "data_usage_mb", 78027, ~N[2026-08-21 12:41:06], ~N[2026-08-21 12:41:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:06.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793891, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:06], updated_at: ~N[2026-08-21 12:41:06]}} [2026-08-21 12:41:06.632] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:41:05Z", "value" => "0"} [2026-08-21 12:41:06.698] [DEBUG] QUERY OK db=66.2ms idle=94.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "0", "mobile_data_mb", 78027, ~N[2026-08-21 12:41:06], ~N[2026-08-21 12:41:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:06.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793893, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:06], updated_at: ~N[2026-08-21 12:41:06]}} [2026-08-21 12:41:06.703] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:41:05Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:41:06.754] [DEBUG] QUERY OK db=49.5ms idle=71.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:05Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78027, ~N[2026-08-21 12:41:06], ~N[2026-08-21 12:41:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:06.755] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793896, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:41:05Z", message: nil, status_log_id: 78027, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:06], updated_at: ~N[2026-08-21 12:41:06]}} [2026-08-21 12:41:35.905] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:41:35.905] [INFO ] Incoming JSON payload: {"oid":"f4a99ae2-919a-4c20-a6b4-2e01fcbf05ac","sn":"98251226730001","uploadTime":"2026-08-21T12:41:35Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:41:35Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:41:35Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:41:35Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:41:35Z"},{"itemkey":"ram_free_mb","value":"869","timestamp":"2026-08-21T12:41:35Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:41:35Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:41:35Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:41:35Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:41:35Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:41:35Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:41:35Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:41:35Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:41:35Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:41:35Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:41: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:41:35.909] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f4a99ae2-919a-4c20-a6b4-2e01fcbf05ac", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:41:35Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:41:35Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:41:35Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:41:35Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:41:35Z", "value" => "869"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:41:35Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:41:35Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:41:35Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:41:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:41:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:41:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:41:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:41:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:41:35Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:41:35Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:41: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:41:35Z", "vendor" => "morefun"} [2026-08-21 12:41:35.909] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:41:35.909] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:41:35.909] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:41:35.911] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=1314.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-08-21 12:41:35.916] [DEBUG] QUERY OK source="parameter_templates" db=4.9ms idle=984.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-08-21 12:41:35.916] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:41:35.922] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=9.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:41:35.923] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:41:35.947] [DEBUG] QUERY OK source="tms_terminals" db=23.6ms idle=6.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:41:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:41:35.947] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:41:35.948] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:41:36.036] [DEBUG] QUERY OK source="tms_terminals" db=86.9ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:41:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:41:36.060] [DEBUG] QUERY OK db=23.9ms idle=87.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "f4a99ae2-919a-4c20-a6b4-2e01fcbf05ac", "2026-08-21T12:41:35Z", ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:41:36.060] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78029, oid: "f4a99ae2-919a-4c20-a6b4-2e01fcbf05ac", upload_time: "2026-08-21T12:41:35Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]} [2026-08-21 12:41:36.060] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:41:35Z", "value" => "morefun"} [2026-08-21 12:41:36.133] [DEBUG] QUERY OK db=71.9ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:35Z", "morefun", "vendor", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793897, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.134] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:41:35Z", "value" => "kiosk_launcher"} [2026-08-21 12:41:36.178] [DEBUG] QUERY OK db=43.8ms idle=74.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:35Z", "kiosk_launcher", "model", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.179] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793899, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.179] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:41:35Z", "value" => "1.0"} [2026-08-21 12:41:36.217] [DEBUG] QUERY OK db=37.7ms queue=0.1ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:35Z", "1.0", "app_version", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793901, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.217] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:41:35Z", "value" => "13"} [2026-08-21 12:41:36.249] [DEBUG] QUERY OK db=31.7ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:35Z", "13", "android_version", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793903, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.250] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:41:35Z", "value" => "869"} [2026-08-21 12:41:36.318] [DEBUG] QUERY OK db=67.8ms queue=0.4ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:35Z", "869", "ram_free_mb", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793905, itemkey: "ram_free_mb", value: "869", timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.319] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:41:35Z", "value" => "WIFI"} [2026-08-21 12:41:36.376] [DEBUG] QUERY OK db=57.1ms idle=69.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:35Z", "WIFI", "network_type", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793907, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.377] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:41:35Z", "value" => "true"} [2026-08-21 12:41:36.432] [DEBUG] QUERY OK db=54.8ms queue=0.2ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:35Z", "true", "kiosk_active", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.433] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793909, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.433] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:41:35Z", "value" => ""} [2026-08-21 12:41:36.492] [DEBUG] QUERY OK db=59.2ms idle=56.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:41:35Z", "sim_operator", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793911, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.493] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:41:35Z", "value" => "UNKNOWN"} [2026-08-21 12:41:36.603] [DEBUG] QUERY OK db=109.3ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:35Z", "UNKNOWN", "sim_number", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.603] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793913, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.604] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:41:35Z", "value" => "UNKNOWN"} [2026-08-21 12:41:36.680] [DEBUG] QUERY OK db=74.1ms queue=0.2ms idle=112.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:35Z", "UNKNOWN", "sim_iccid", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793915, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.680] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:41:35Z", "value" => "UNKNOWN"} [2026-08-21 12:41:36.740] [DEBUG] QUERY OK db=59.6ms idle=78.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:35Z", "UNKNOWN", "sim_imsi", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793917, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.741] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:41:35Z", "value" => "UNKNOWN"} [2026-08-21 12:41:36.784] [DEBUG] QUERY OK db=42.2ms idle=63.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:35Z", "UNKNOWN", "sim_iccid2", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793919, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.785] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:41:35Z", "value" => "UNKNOWN"} [2026-08-21 12:41:36.843] [DEBUG] QUERY OK db=58.0ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:35Z", "UNKNOWN", "sim_imsi2", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793921, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.843] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:41:35Z", "value" => "36"} [2026-08-21 12:41:36.894] [DEBUG] QUERY OK db=49.9ms idle=59.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:35Z", "36", "data_usage_mb", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.894] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793923, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.894] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:41:35Z", "value" => "0"} [2026-08-21 12:41:36.939] [DEBUG] QUERY OK db=44.8ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41:35Z", "0", "mobile_data_mb", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:36.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793925, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:41:36.946] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:41: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:41:37.045] [DEBUG] QUERY OK db=95.2ms queue=0.9ms idle=7.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:41: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78029, ~N[2026-08-21 12:41:36], ~N[2026-08-21 12:41:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:41:37.049] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793927, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:41:35Z", message: nil, status_log_id: 78029, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:41:36], updated_at: ~N[2026-08-21 12:41:36]}} [2026-08-21 12:42:06.008] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:42:06.008] [INFO ] Incoming JSON payload: {"oid":"065268b7-85fc-40eb-a685-5574701fbc70","sn":"98251226730001","uploadTime":"2026-08-21T12:42:05Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"ram_free_mb","value":"876","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:42:05Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:42:06.031] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "065268b7-85fc-40eb-a685-5574701fbc70", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:42:05Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:42:05Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:42:05Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:42:05Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:42:05Z", "value" => "876"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:42:05Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:42:05Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:42:05Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:42:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:42:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:42:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:42:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:42:05Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:42:05Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:42:05Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:42:05Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:42:05Z", "vendor" => "morefun"} [2026-08-21 12:42:06.031] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:42:06.031] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:42:06.031] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:42:06.053] [DEBUG] QUERY OK source="parameter_templates" db=21.4ms idle=1387.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-08-21 12:42:06.061] [DEBUG] QUERY OK source="parameter_templates" db=5.0ms queue=2.3ms idle=990.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-08-21 12:42:06.061] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:42:06.069] [DEBUG] QUERY OK source="tms_terminals" db=5.5ms queue=2.0ms idle=9.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:42:06.069] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:42:06.069] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:42:06.100] [DEBUG] QUERY OK source="tms_terminals" db=29.7ms idle=9.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:42:06.104] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms idle=9.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:42:06], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:42:06.157] [DEBUG] QUERY OK db=52.7ms queue=0.1ms idle=4.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "065268b7-85fc-40eb-a685-5574701fbc70", "2026-08-21T12:42:05Z", ~N[2026-08-21 12:42:06], ~N[2026-08-21 12:42:06]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:42:06.157] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78032, oid: "065268b7-85fc-40eb-a685-5574701fbc70", upload_time: "2026-08-21T12:42:05Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:06], updated_at: ~N[2026-08-21 12:42:06]} [2026-08-21 12:42:06.158] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:42:05Z", "value" => "morefun"} [2026-08-21 12:42:06.191] [DEBUG] QUERY OK db=30.1ms queue=0.2ms idle=56.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "morefun", "vendor", 78032, ~N[2026-08-21 12:42:06], ~N[2026-08-21 12:42:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:06.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793930, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:06], updated_at: ~N[2026-08-21 12:42:06]}} [2026-08-21 12:42:06.191] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:42:05Z", "value" => "kiosk_launcher"} [2026-08-21 12:42:06.237] [DEBUG] QUERY OK db=43.8ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "kiosk_launcher", "model", 78032, ~N[2026-08-21 12:42:06], ~N[2026-08-21 12:42:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:06.239] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793932, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:06], updated_at: ~N[2026-08-21 12:42:06]}} [2026-08-21 12:42:06.241] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:42:05Z", "value" => "1.0"} [2026-08-21 12:42:06.289] [DEBUG] QUERY OK db=44.7ms queue=2.3ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "1.0", "app_version", 78032, ~N[2026-08-21 12:42:06], ~N[2026-08-21 12:42:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:06.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793934, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:06], updated_at: ~N[2026-08-21 12:42:06]}} [2026-08-21 12:42:06.290] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:42:05Z", "value" => "13"} [2026-08-21 12:42:06.358] [DEBUG] QUERY OK db=63.6ms queue=2.4ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "13", "android_version", 78032, ~N[2026-08-21 12:42:06], ~N[2026-08-21 12:42:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:06.359] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793936, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:06], updated_at: ~N[2026-08-21 12:42:06]}} [2026-08-21 12:42:06.359] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:42:05Z", "value" => "876"} [2026-08-21 12:42:06.401] [DEBUG] QUERY OK db=40.1ms queue=0.1ms idle=71.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "876", "ram_free_mb", 78032, ~N[2026-08-21 12:42:06], ~N[2026-08-21 12:42:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:06.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793938, itemkey: "ram_free_mb", value: "876", timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:06], updated_at: ~N[2026-08-21 12:42:06]}} [2026-08-21 12:42:06.401] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:42:05Z", "value" => "WIFI"} [2026-08-21 12:42:06.459] [DEBUG] QUERY OK db=57.2ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "WIFI", "network_type", 78032, ~N[2026-08-21 12:42:06], ~N[2026-08-21 12:42:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:06.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793940, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:06], updated_at: ~N[2026-08-21 12:42:06]}} [2026-08-21 12:42:06.459] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:42:05Z", "value" => "true"} [2026-08-21 12:42:06.503] [DEBUG] QUERY OK db=42.8ms queue=0.1ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "true", "kiosk_active", 78032, ~N[2026-08-21 12:42:06], ~N[2026-08-21 12:42:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:06.503] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793942, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:06], updated_at: ~N[2026-08-21 12:42:06]}} [2026-08-21 12:42:06.503] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:42:05Z", "value" => ""} [2026-08-21 12:42:06.563] [DEBUG] QUERY OK db=59.8ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:42:05Z", "sim_operator", 78032, ~N[2026-08-21 12:42:06], ~N[2026-08-21 12:42:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:06.563] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793944, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:06], updated_at: ~N[2026-08-21 12:42:06]}} [2026-08-21 12:42:06.564] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:42:05Z", "value" => "UNKNOWN"} [2026-08-21 12:42:06.630] [DEBUG] QUERY OK db=66.3ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "UNKNOWN", "sim_number", 78032, ~N[2026-08-21 12:42:06], ~N[2026-08-21 12:42:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:06.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793946, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:06], updated_at: ~N[2026-08-21 12:42:06]}} [2026-08-21 12:42:06.631] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:42:05Z", "value" => "UNKNOWN"} [2026-08-21 12:42:06.701] [DEBUG] QUERY OK db=69.7ms idle=67.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "UNKNOWN", "sim_iccid", 78032, ~N[2026-08-21 12:42:06], ~N[2026-08-21 12:42:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:06.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793948, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:06], updated_at: ~N[2026-08-21 12:42:06]}} [2026-08-21 12:42:06.704] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:42:05Z", "value" => "UNKNOWN"} [2026-08-21 12:42:06.873] [DEBUG] QUERY OK db=168.7ms idle=74.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "UNKNOWN", "sim_imsi", 78032, ~N[2026-08-21 12:42:06], ~N[2026-08-21 12:42:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:06.876] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793950, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:06], updated_at: ~N[2026-08-21 12:42:06]}} [2026-08-21 12:42:06.876] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:42:05Z", "value" => "UNKNOWN"} [2026-08-21 12:42:06.955] [DEBUG] QUERY OK db=78.4ms idle=175.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "UNKNOWN", "sim_iccid2", 78032, ~N[2026-08-21 12:42:06], ~N[2026-08-21 12:42:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:06.955] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793952, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:06], updated_at: ~N[2026-08-21 12:42:06]}} [2026-08-21 12:42:06.957] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:42:05Z", "value" => "UNKNOWN"} [2026-08-21 12:42:07.000] [DEBUG] QUERY OK db=43.0ms idle=83.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "UNKNOWN", "sim_imsi2", 78032, ~N[2026-08-21 12:42:06], ~N[2026-08-21 12:42:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:07.000] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793954, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:06], updated_at: ~N[2026-08-21 12:42:06]}} [2026-08-21 12:42:07.001] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:42:05Z", "value" => "36"} [2026-08-21 12:42:07.035] [DEBUG] QUERY OK db=34.4ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "36", "data_usage_mb", 78032, ~N[2026-08-21 12:42:07], ~N[2026-08-21 12:42:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:07.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793956, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:07], updated_at: ~N[2026-08-21 12:42:07]}} [2026-08-21 12:42:07.036] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:42:05Z", "value" => "0"} [2026-08-21 12:42:07.107] [DEBUG] QUERY OK db=65.8ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "0", "mobile_data_mb", 78032, ~N[2026-08-21 12:42:07], ~N[2026-08-21 12:42:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:07.108] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793958, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:07], updated_at: ~N[2026-08-21 12:42:07]}} [2026-08-21 12:42:07.108] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:42:05Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:42:07.163] [DEBUG] QUERY OK db=53.7ms idle=11.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:05Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78032, ~N[2026-08-21 12:42:07], ~N[2026-08-21 12:42:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:07.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793960, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:42:05Z", message: nil, status_log_id: 78032, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:07], updated_at: ~N[2026-08-21 12:42:07]}} [2026-08-21 12:42:24.953] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:42:24.954] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:42:24Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:42:24Z","value":"50"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:42:24Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:42:24Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:42:24Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:42:24Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:42:24Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:42:24Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:42:24Z","vendor":"MoreFun"} [2026-08-21 12:42:24.955] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:42:24Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:42:24Z", "value" => "50"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:42:24Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:42:24Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:42:24Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:42:24Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:42:24Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:42:24Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:42:24Z", "vendor" => "MoreFun"} [2026-08-21 12:42:24.955] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:42:24.955] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:42:24.955] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:42:24.956] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1710.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-08-21 12:42:24.958] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=785.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-08-21 12:42:24.960] [DEBUG] QUERY OK source="parameter_template_values" db=0.9ms 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-08-21 12:42:24.964] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=1.7ms idle=3.3ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:42:24.966] [DEBUG] QUERY OK source="pos_terminal" db=1.0ms idle=5.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-08-21 12:42:25.005] [DEBUG] QUERY OK source="pos_merchant" db=38.1ms idle=2.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:42:25.007] [DEBUG] QUERY OK db=1.1ms queue=0.8ms idle=1774.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 ["626165170000000"] [2026-08-21 12:42:25.007] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:42:25.008] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms queue=0.2ms 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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:42:25.010] [DEBUG] QUERY OK source="address" db=1.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:42:25.010] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:42:25.012] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:42:25.045] [DEBUG] QUERY OK db=31.3ms idle=5.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "1bbcc95a5b437c0b796ade2de2a69da9a83212297756e7f6bd0402b7ddb7eddd", 4003, 938, ~U[2026-08-21 12:42:25Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:42:25], ~N[2026-08-21 12:42:25]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:42:25.046] [INFO ] AutoPushService: Created push log 49103 for MF919 params.zip [2026-08-21 12:42:25.046] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 4003, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:42:25.046] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:42:25.046] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:42:25.050] [DEBUG] QUERY OK source="config_file_versions" db=3.5ms idle=36.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:42:25.057] [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-08-21 12:42:25.101] [DEBUG] QUERY OK db=34.7ms idle=21.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "cc728964265c0cd5b23a9244a7823037851c8da81d24a148ba1d2925c0530732", 4099, 17947, ~U[2026-08-21 12:42:25Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:42:25], ~N[2026-08-21 12:42:25]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:42:25.102] [INFO ] AutoPushService: Created push log 49105 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:42:25.102] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 4099, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:42:25.102] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:42:25.102] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:42:25.103] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=52.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-08-21 12:42:25.104] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:42:25.105] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms 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-08-21 12:42:25.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-08-21 12:42:25.107] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:42:25.107] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:42:25.107] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:42:25.109] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=4.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:42:25.109] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:42:25.109] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:42:25.110] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=4.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:42:25.176] [DEBUG] QUERY OK source="tms_terminals" db=24.7ms queue=40.9ms idle=1.6ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:42:25], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:42:25.176] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:42:25.176] [INFO ] Event published: terminal_updated [2026-08-21 12:42:25.177] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:42:25.177] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:42:25.177] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:42:25.179] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.2ms queue=0.4ms idle=2.5ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:42:25], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:42:25.181] [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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:42:25.188] [DEBUG] QUERY OK source="terminal_group_rules" db=4.7ms queue=0.6ms idle=1.0ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:42:25.188] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:42:25.257] [DEBUG] QUERY OK source="tms_terminals" db=36.6ms queue=40.8ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:42:25], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:42:25.261] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms queue=1.2ms idle=70.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-08-21 12:42:25.262] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.1ms idle=3.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:42:25.264] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=1.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:42:25.266] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:42:25.329] [DEBUG] QUERY OK source="parameter_push_logs" db=63.2ms idle=3.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-08-21 12:12:25]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:42:25.330] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:42:25.330] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:42:25.332] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:42:25.334] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=4.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:42:25.336] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:42:25.340] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms 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.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:42:25.420] [DEBUG] QUERY OK source="tms_terminals" db=37.4ms queue=41.2ms idle=7.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:42:25], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:42:25.477] [DEBUG] QUERY OK db=56.4ms queue=0.9ms idle=81.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:42:24Z", ~N[2026-08-21 12:42:25], ~N[2026-08-21 12:42:25]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:42:25.478] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78033, oid: "organization_id", upload_time: "2026-08-21T12:42:24Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:25], updated_at: ~N[2026-08-21 12:42:25]} [2026-08-21 12:42:25.478] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:42:24Z", "value" => "online"} [2026-08-21 12:42:25.548] [DEBUG] QUERY OK db=69.3ms idle=58.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:42:24Z", "online", "status", 78033, ~N[2026-08-21 12:42:25], ~N[2026-08-21 12:42:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:25.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793961, itemkey: "status", value: "online", timestamp: "2026-08-21T12:42:24Z", message: "Terminal status update", status_log_id: 78033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:25], updated_at: ~N[2026-08-21 12:42:25]}} [2026-08-21 12:42:25.548] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:42:25.548] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:42:24Z", "value" => "50"} [2026-08-21 12:42:25.598] [DEBUG] QUERY OK db=49.6ms idle=71.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:42:24Z", "50", "battery", 78033, ~N[2026-08-21 12:42:25], ~N[2026-08-21 12:42:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:25.599] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793963, itemkey: "battery", value: "50", timestamp: "2026-08-21T12:42:24Z", message: "Battery level", status_log_id: 78033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:25], updated_at: ~N[2026-08-21 12:42:25]}} [2026-08-21 12:42:25.599] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:42:24Z", "value" => "online"} [2026-08-21 12:42:25.664] [DEBUG] QUERY OK db=61.6ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:42:24Z", "online", "network", 78033, ~N[2026-08-21 12:42:25], ~N[2026-08-21 12:42:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:25.664] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793965, itemkey: "network", value: "online", timestamp: "2026-08-21T12:42:24Z", message: "Network connectivity", status_log_id: 78033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:25], updated_at: ~N[2026-08-21 12:42:25]}} [2026-08-21 12:42:25.664] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:42:25.665] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:42:24Z", "value" => "0"} [2026-08-21 12:42:25.702] [DEBUG] QUERY OK db=36.6ms queue=0.2ms idle=66.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:42:24Z", "0", "cpu", 78033, ~N[2026-08-21 12:42:25], ~N[2026-08-21 12:42:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:25.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793967, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:42:24Z", message: "CPU usage percentage", status_log_id: 78033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:25], updated_at: ~N[2026-08-21 12:42:25]}} [2026-08-21 12:42:25.703] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:42:24Z", "value" => "1.0.0"} [2026-08-21 12:42:25.743] [DEBUG] QUERY OK db=39.9ms idle=38.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:42:24Z", "1.0.0", "parameter_config", 78033, ~N[2026-08-21 12:42:25], ~N[2026-08-21 12:42:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:25.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793969, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:42:24Z", message: "Current parameters version", status_log_id: 78033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:25], updated_at: ~N[2026-08-21 12:42:25]}} [2026-08-21 12:42:25.743] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:42:24Z", "value" => "1.0.1"} [2026-08-21 12:42:25.819] [DEBUG] QUERY OK db=75.8ms 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-08-21T12:42:24Z", "1.0.1", "emv_config", 78033, ~N[2026-08-21 12:42:25], ~N[2026-08-21 12:42:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:25.820] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793971, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:42:24Z", message: "Current EMV config version", status_log_id: 78033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:25], updated_at: ~N[2026-08-21 12:42:25]}} [2026-08-21 12:42:25.820] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:42:24Z", "value" => ""} [2026-08-21 12:42:25.854] [DEBUG] QUERY OK db=32.7ms queue=0.6ms idle=77.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:42:24Z", "keys_config", 78033, ~N[2026-08-21 12:42:25], ~N[2026-08-21 12:42:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:25.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793973, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:42:24Z", message: "Current keys config version", status_log_id: 78033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:25], updated_at: ~N[2026-08-21 12:42:25]}} [2026-08-21 12:42:25.855] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:42:24Z", "value" => "3.8.7.3"} [2026-08-21 12:42:25.925] [DEBUG] QUERY OK db=69.8ms idle=35.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:42:24Z", "3.8.7.3", "application", 78033, ~N[2026-08-21 12:42:25], ~N[2026-08-21 12:42:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:25.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793975, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:42:24Z", message: "Current application version", status_log_id: 78033, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:25], updated_at: ~N[2026-08-21 12:42:25]}} [2026-08-21 12:42:25.926] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:42:25Z"} [2026-08-21 12:42:25.926] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:42:25Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 78, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:42:33.414] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch850190316951_20260821124233012","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T12:42:33Z"} [2026-08-21 12:42:33.414] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch850190316951_20260821124233012", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:42:33Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 82, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 56, 53, 48, 49, 57, 48, 51, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:42:36.095] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:42:36.096] [INFO ] Incoming JSON payload: {"oid":"069014c0-402b-441c-9bc6-6eb7837fb5a1","sn":"98251226730001","uploadTime":"2026-08-21T12:42:35Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:42:35Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:42:35Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:42:35Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:42:35Z"},{"itemkey":"ram_free_mb","value":"870","timestamp":"2026-08-21T12:42:35Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:42:35Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:42:35Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:42:35Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:42:35Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:42:35Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:42:35Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:42:35Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:42:35Z"},{"itemkey":"data_usage_mb","value":"36","timestamp":"2026-08-21T12:42:35Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:42: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:42:36.097] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "069014c0-402b-441c-9bc6-6eb7837fb5a1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:42:35Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:42:35Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:42:35Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:42:35Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:42:35Z", "value" => "870"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:42:35Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:42:35Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:42:35Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:42:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:42:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:42:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:42:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:42:35Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:42:35Z", "value" => "36"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:42:35Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:42: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:42:35Z", "vendor" => "morefun"} [2026-08-21 12:42:36.097] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:42:36.097] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:42:36.097] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:42:36.107] [DEBUG] QUERY OK source="parameter_templates" db=9.9ms queue=0.1ms idle=1404.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-08-21 12:42:36.113] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=1.6ms idle=895.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-08-21 12:42:36.113] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:42:36.116] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=2.7ms idle=11.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:42:36.158] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=40.7ms idle=4.0ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-08-21 12:42:36], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:42:36.158] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:42:36.158] [INFO ] Event published: terminal_updated [2026-08-21 12:42:36.160] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:42:36.160] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:42:36.160] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:42:36.166] [DEBUG] QUERY OK source="terminal_group_memberships" db=7.1ms idle=42.1ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:42:36], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:42:36.167] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.1ms idle=8.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:42:36.171] [DEBUG] QUERY OK source="terminal_group_rules" db=3.0ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:42:36.171] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:42:36.245] [DEBUG] QUERY OK source="tms_terminals" db=35.2ms queue=43.2ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-08-21 12:42:36], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:42:36.246] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:42:36.250] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=27.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:42:36.292] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=41.2ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:42:36], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:42:36.360] [DEBUG] QUERY OK db=67.4ms idle=42.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "069014c0-402b-441c-9bc6-6eb7837fb5a1", "2026-08-21T12:42:35Z", ~N[2026-08-21 12:42:36], ~N[2026-08-21 12:42:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:42:36.360] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78036, oid: "069014c0-402b-441c-9bc6-6eb7837fb5a1", upload_time: "2026-08-21T12:42:35Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:36], updated_at: ~N[2026-08-21 12:42:36]} [2026-08-21 12:42:36.360] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:42:35Z", "value" => "morefun"} [2026-08-21 12:42:36.429] [DEBUG] QUERY OK db=67.8ms idle=68.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:35Z", "morefun", "vendor", 78036, ~N[2026-08-21 12:42:36], ~N[2026-08-21 12:42:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:36.429] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793977, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:36], updated_at: ~N[2026-08-21 12:42:36]}} [2026-08-21 12:42:36.429] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:42:35Z", "value" => "kiosk_launcher"} [2026-08-21 12:42:36.473] [DEBUG] QUERY OK db=42.9ms queue=0.9ms idle=69.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:35Z", "kiosk_launcher", "model", 78036, ~N[2026-08-21 12:42:36], ~N[2026-08-21 12:42:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:36.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793979, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:36], updated_at: ~N[2026-08-21 12:42:36]}} [2026-08-21 12:42:36.474] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:42:35Z", "value" => "1.0"} [2026-08-21 12:42:36.536] [DEBUG] QUERY OK db=61.8ms queue=0.2ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:35Z", "1.0", "app_version", 78036, ~N[2026-08-21 12:42:36], ~N[2026-08-21 12:42:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:36.536] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793981, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:36], updated_at: ~N[2026-08-21 12:42:36]}} [2026-08-21 12:42:36.536] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:42:35Z", "value" => "13"} [2026-08-21 12:42:36.585] [DEBUG] QUERY OK db=47.9ms idle=63.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:35Z", "13", "android_version", 78036, ~N[2026-08-21 12:42:36], ~N[2026-08-21 12:42:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:36.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793983, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:36], updated_at: ~N[2026-08-21 12:42:36]}} [2026-08-21 12:42:36.585] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:42:35Z", "value" => "870"} [2026-08-21 12:42:36.629] [DEBUG] QUERY OK db=42.9ms queue=0.1ms idle=49.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:35Z", "870", "ram_free_mb", 78036, ~N[2026-08-21 12:42:36], ~N[2026-08-21 12:42:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:36.629] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793985, itemkey: "ram_free_mb", value: "870", timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:36], updated_at: ~N[2026-08-21 12:42:36]}} [2026-08-21 12:42:36.629] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:42:35Z", "value" => "WIFI"} [2026-08-21 12:42:36.695] [DEBUG] QUERY OK db=64.7ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:35Z", "WIFI", "network_type", 78036, ~N[2026-08-21 12:42:36], ~N[2026-08-21 12:42:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:36.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793987, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:36], updated_at: ~N[2026-08-21 12:42:36]}} [2026-08-21 12:42:36.695] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:42:35Z", "value" => "true"} [2026-08-21 12:42:36.744] [DEBUG] QUERY OK db=48.6ms idle=66.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:35Z", "true", "kiosk_active", 78036, ~N[2026-08-21 12:42:36], ~N[2026-08-21 12:42:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:36.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793989, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:36], updated_at: ~N[2026-08-21 12:42:36]}} [2026-08-21 12:42:36.745] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:42:35Z", "value" => ""} [2026-08-21 12:42:36.813] [DEBUG] QUERY OK db=67.4ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:42:35Z", "sim_operator", 78036, ~N[2026-08-21 12:42:36], ~N[2026-08-21 12:42:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:36.814] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793991, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:36], updated_at: ~N[2026-08-21 12:42:36]}} [2026-08-21 12:42:36.814] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:42:35Z", "value" => "UNKNOWN"} [2026-08-21 12:42:36.856] [DEBUG] QUERY OK db=41.4ms queue=0.2ms idle=69.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:35Z", "UNKNOWN", "sim_number", 78036, ~N[2026-08-21 12:42:36], ~N[2026-08-21 12:42:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:36.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793993, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:36], updated_at: ~N[2026-08-21 12:42:36]}} [2026-08-21 12:42:36.856] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:42:35Z", "value" => "UNKNOWN"} [2026-08-21 12:42:36.931] [DEBUG] QUERY OK db=73.2ms queue=0.1ms idle=44.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:35Z", "UNKNOWN", "sim_iccid", 78036, ~N[2026-08-21 12:42:36], ~N[2026-08-21 12:42:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:36.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793995, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:36], updated_at: ~N[2026-08-21 12:42:36]}} [2026-08-21 12:42:36.931] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:42:35Z", "value" => "UNKNOWN"} [2026-08-21 12:42:37.026] [DEBUG] QUERY OK db=95.0ms idle=75.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:35Z", "UNKNOWN", "sim_imsi", 78036, ~N[2026-08-21 12:42:36], ~N[2026-08-21 12:42:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:37.027] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793997, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:36], updated_at: ~N[2026-08-21 12:42:36]}} [2026-08-21 12:42:37.027] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:42:35Z", "value" => "UNKNOWN"} [2026-08-21 12:42:37.074] [DEBUG] QUERY OK db=46.4ms idle=96.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:35Z", "UNKNOWN", "sim_iccid2", 78036, ~N[2026-08-21 12:42:37], ~N[2026-08-21 12:42:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:37.074] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 793999, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:37], updated_at: ~N[2026-08-21 12:42:37]}} [2026-08-21 12:42:37.074] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:42:35Z", "value" => "UNKNOWN"} [2026-08-21 12:42:37.132] [DEBUG] QUERY OK db=57.2ms idle=47.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:35Z", "UNKNOWN", "sim_imsi2", 78036, ~N[2026-08-21 12:42:37], ~N[2026-08-21 12:42:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:37.132] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794001, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:37], updated_at: ~N[2026-08-21 12:42:37]}} [2026-08-21 12:42:37.132] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:42:35Z", "value" => "36"} [2026-08-21 12:42:37.184] [DEBUG] QUERY OK db=51.8ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:35Z", "36", "data_usage_mb", 78036, ~N[2026-08-21 12:42:37], ~N[2026-08-21 12:42:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:37.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794003, itemkey: "data_usage_mb", value: "36", timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:37], updated_at: ~N[2026-08-21 12:42:37]}} [2026-08-21 12:42:37.185] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:42:35Z", "value" => "0"} [2026-08-21 12:42:37.250] [DEBUG] QUERY OK db=65.1ms idle=53.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42:35Z", "0", "mobile_data_mb", 78036, ~N[2026-08-21 12:42:37], ~N[2026-08-21 12:42:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:37.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794005, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:37], updated_at: ~N[2026-08-21 12:42:37]}} [2026-08-21 12:42:37.251] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:42: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:42:37.306] [DEBUG] QUERY OK db=53.0ms idle=26.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:42: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78036, ~N[2026-08-21 12:42:37], ~N[2026-08-21 12:42:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:37.307] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794007, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:42:35Z", message: nil, status_log_id: 78036, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:37], updated_at: ~N[2026-08-21 12:42:37]}} [2026-08-21 12:42:45.582] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:42:25Z"} [2026-08-21 12:42:45.583] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:42:25Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 79, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:42:45.585] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:42:25Z"} [2026-08-21 12:42:45.585] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:42:25Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 80, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:42:45.590] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:42:25Z"} [2026-08-21 12:42:45.590] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:42:25Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 81, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:42:49.201] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:42:49.201] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:42:48Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:42:48Z","value":"50"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:42:48Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:42:48Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:42:48Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:42:48Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:42:48Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:42:48Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:42:48Z","vendor":"MoreFun"} [2026-08-21 12:42:49.202] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:42:48Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:42:48Z", "value" => "50"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:42:48Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:42:48Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:42:48Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:42:48Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:42:48Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:42:48Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:42:48Z", "vendor" => "MoreFun"} [2026-08-21 12:42:49.202] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:42:49.202] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:42:49.203] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:42:49.206] [DEBUG] QUERY OK source="parameter_templates" db=1.9ms idle=951.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-08-21 12:42:49.208] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=944.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:42:49.211] [DEBUG] QUERY OK source="parameter_template_values" db=3.0ms 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-08-21 12:42:49.217] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=2.9ms idle=4.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-08-21 12:42:49.219] [DEBUG] QUERY OK source="pos_terminal" db=0.9ms idle=7.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:42:49.258] [DEBUG] QUERY OK source="pos_merchant" db=38.6ms queue=0.1ms idle=2.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:42:49.260] [DEBUG] QUERY OK db=0.6ms queue=0.8ms idle=1026.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 ["626165170000000"] [2026-08-21 12:42:49.260] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:42:49.263] [DEBUG] QUERY OK source="pos_terminal_data" db=2.6ms 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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:42:49.264] [DEBUG] QUERY OK source="address" db=0.4ms queue=0.1ms idle=5.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:42:49.266] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:42:49.277] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:42:49.341] [DEBUG] QUERY OK db=62.9ms idle=13.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b935bff0e032469622df251a565b70c3d3071d0fc12b79cfc71cce40ee7bc2ba", 8482, 938, ~U[2026-08-21 12:42:49Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:42:49], ~N[2026-08-21 12:42:49]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:42:49.341] [INFO ] AutoPushService: Created push log 49107 for MF919 params.zip [2026-08-21 12:42:49.341] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 8482, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:42:49.341] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:42:49.347] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:42:49.348] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=72.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:42:49.356] [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-08-21 12:42:49.407] [DEBUG] QUERY OK db=49.7ms idle=16.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "04701995549b4294d8f76138e73957fe531c4e05916a34a72f2e9f1b03e58c4b", 8578, 17947, ~U[2026-08-21 12:42:49Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:42:49], ~N[2026-08-21 12:42:49]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:42:49.407] [INFO ] AutoPushService: Created push log 49109 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:42:49.407] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 8578, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:42:49.408] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:42:49.408] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:42:49.415] [DEBUG] QUERY OK source="config_file_versions" db=6.5ms idle=60.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-08-21 12:42:49.415] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:42:49.417] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=7.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:42:49.420] [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-08-21 12:42:49.423] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:42:49.423] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:42:49.423] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:42:49.432] [DEBUG] QUERY OK source="config_file_versions" db=3.6ms idle=14.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-08-21 12:42:49.438] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:42:49.438] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:42:49.439] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=21.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:42:49.487] [DEBUG] QUERY OK source="tms_terminals" db=47.4ms idle=6.7ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["MF919", "MoreFun", ~N[2026-08-21 12:42:49], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:42:49.487] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:42:49.487] [INFO ] Event published: terminal_updated [2026-08-21 12:42:49.488] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:42:49.488] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:42:49.488] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:42:49.492] [DEBUG] QUERY OK source="terminal_group_memberships" db=4.7ms idle=48.5ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:42:49], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:42:49.494] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=6.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:42:49.497] [DEBUG] QUERY OK source="terminal_group_rules" db=3.3ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:42:49.497] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:42:49.581] [DEBUG] QUERY OK source="tms_terminals" db=45.5ms queue=42.0ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MF919", "MoreFun", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:42:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:42:49.582] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=84.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-08-21 12:42:49.584] [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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:42:49.585] [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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:42:49.585] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:42:49.622] [DEBUG] QUERY OK source="parameter_push_logs" db=35.0ms 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-08-21 12:12:49]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:42:49.624] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:42:49.631] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:42:49.636] [DEBUG] QUERY OK source="tms_terminals" db=4.5ms idle=46.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:42:49.644] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=22.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-08-21 12:42:49.648] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:42:49.653] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms queue=2.0ms idle=12.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:42:49.763] [DEBUG] QUERY OK source="tms_terminals" db=68.8ms queue=40.8ms idle=9.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:42:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:42:49.842] [DEBUG] QUERY OK db=77.9ms idle=111.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:42:48Z", ~N[2026-08-21 12:42:49], ~N[2026-08-21 12:42:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:42:49.843] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78037, oid: "organization_id", upload_time: "2026-08-21T12:42:48Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:49], updated_at: ~N[2026-08-21 12:42:49]} [2026-08-21 12:42:49.843] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:42:48Z", "value" => "online"} [2026-08-21 12:42:49.907] [DEBUG] QUERY OK db=63.6ms idle=80.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:42:48Z", "online", "status", 78037, ~N[2026-08-21 12:42:49], ~N[2026-08-21 12:42:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:49.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794009, itemkey: "status", value: "online", timestamp: "2026-08-21T12:42:48Z", message: "Terminal status update", status_log_id: 78037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:49], updated_at: ~N[2026-08-21 12:42:49]}} [2026-08-21 12:42:49.908] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:42:49.909] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:42:48Z", "value" => "50"} [2026-08-21 12:42:50.011] [DEBUG] QUERY OK db=101.3ms idle=67.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:42:48Z", "50", "battery", 78037, ~N[2026-08-21 12:42:49], ~N[2026-08-21 12:42:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:50.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794011, itemkey: "battery", value: "50", timestamp: "2026-08-21T12:42:48Z", message: "Battery level", status_log_id: 78037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:49], updated_at: ~N[2026-08-21 12:42:49]}} [2026-08-21 12:42:50.012] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:42:48Z", "value" => "online"} [2026-08-21 12:42:50.075] [DEBUG] QUERY OK db=63.1ms idle=104.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:42:48Z", "online", "network", 78037, ~N[2026-08-21 12:42:50], ~N[2026-08-21 12:42:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:50.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794013, itemkey: "network", value: "online", timestamp: "2026-08-21T12:42:48Z", message: "Network connectivity", status_log_id: 78037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:50], updated_at: ~N[2026-08-21 12:42:50]}} [2026-08-21 12:42:50.076] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:42:50.076] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:42:48Z", "value" => "0"} [2026-08-21 12:42:50.147] [DEBUG] QUERY OK db=70.6ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:42:48Z", "0", "cpu", 78037, ~N[2026-08-21 12:42:50], ~N[2026-08-21 12:42:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:50.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794015, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:42:48Z", message: "CPU usage percentage", status_log_id: 78037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:50], updated_at: ~N[2026-08-21 12:42:50]}} [2026-08-21 12:42:50.148] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:42:48Z", "value" => "1.0.0"} [2026-08-21 12:42:50.213] [DEBUG] QUERY OK db=62.3ms idle=75.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:42:48Z", "1.0.0", "parameter_config", 78037, ~N[2026-08-21 12:42:50], ~N[2026-08-21 12:42:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:50.213] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794017, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:42:48Z", message: "Current parameters version", status_log_id: 78037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:50], updated_at: ~N[2026-08-21 12:42:50]}} [2026-08-21 12:42:50.213] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:42:48Z", "value" => "1.0.1"} [2026-08-21 12:42:50.320] [DEBUG] QUERY OK db=104.0ms idle=68.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:42:48Z", "1.0.1", "emv_config", 78037, ~N[2026-08-21 12:42:50], ~N[2026-08-21 12:42:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:50.320] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794019, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:42:48Z", message: "Current EMV config version", status_log_id: 78037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:50], updated_at: ~N[2026-08-21 12:42:50]}} [2026-08-21 12:42:50.321] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:42:48Z", "value" => ""} [2026-08-21 12:42:50.552] [DEBUG] QUERY OK db=188.0ms queue=41.9ms idle=43.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:42:48Z", "keys_config", 78037, ~N[2026-08-21 12:42:50], ~N[2026-08-21 12:42:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:50.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794022, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:42:48Z", message: "Current keys config version", status_log_id: 78037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:50], updated_at: ~N[2026-08-21 12:42:50]}} [2026-08-21 12:42:50.552] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:42:48Z", "value" => "3.8.7.3"} [2026-08-21 12:42:50.624] [DEBUG] QUERY OK db=71.8ms idle=232.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:42:48Z", "3.8.7.3", "application", 78037, ~N[2026-08-21 12:42:50], ~N[2026-08-21 12:42:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:42:50.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794024, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:42:48Z", message: "Current application version", status_log_id: 78037, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:42:50], updated_at: ~N[2026-08-21 12:42:50]}} [2026-08-21 12:42:50.625] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:42:49Z"} [2026-08-21 12:42:50.625] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:42:49Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 85, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:43:35.474] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 12:43:35.475] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=673.7ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 12:43:35.476] [DEBUG] QUERY OK source="filter_usage" db=0.7ms idle=25.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-08-21 12:43:35.476] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 12:43:35.907] [INFO ] Running offline device check... [2026-08-21 12:43:35.907] [INFO ] Starting offline device check... [2026-08-21 12:43:35.909] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=432.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-08-21 12:43:35.918] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.9ms idle=434.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:43:35.924] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms idle=9.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.926] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.929] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.930] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.931] [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 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.933] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.934] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.935] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.937] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.941] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.943] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=5.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.957] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.964] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=14.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.966] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=0.2ms idle=6.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.967] [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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.968] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.990] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.994] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=22.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:43:35.996] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:35.998] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.000] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.1ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.001] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.045] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=42.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.046] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms 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 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.047] [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-08-21 12:43:36.053] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.054] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=6.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.057] [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-08-21 12:43:36.059] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.062] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms queue=0.1ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.067] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.068] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.071] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.079] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=8.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=9.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.085] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.2ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.091] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.094] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.100] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.103] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.105] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.106] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.107] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.108] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.110] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.111] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.112] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.113] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.114] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.114] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:43:36.114] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 12:43:36.115] [INFO ] Offline device check completed successfully [2026-08-21 12:47:02.891] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 53µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "HWYUEwRgD0ACHBttOXM-ARwoBGg_GEEQw3mABXb0jln_tCjOHP42VY4w", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 12:47:05.027] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "jUyRF8mphpu2M0TNTx0ZiAug", "live_socket_id" => "users_sessions:ZQaQnB7QD7-5NLIjju9oVxk1XgeWQhHDR5nurEJ4uwQ=", "user_token" => <<101, 6, 144, 156, 30, 208, 15, 191, 185, 52, 178, 35, 142, 239, 104, 87, 25, 53, 94, 7, 150, 66, 17, 195, 71, 153, 238, 172, 66, 120, 187, 4>>} [2026-08-21 12:47:05.048] [DEBUG] QUERY OK source="users_tokens" db=15.6ms queue=1.5ms idle=1608.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<101, 6, 144, 156, 30, 208, 15, 191, 185, 52, 178, 35, 142, 239, 104, 87, 25, 53, 94, 7, 150, 66, 17, 195, 71, 153, 238, 172, 66, 120, 187, 4>>, "session", ~U[2026-08-21 12:47:05.027302Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 12:47:05.052] [DEBUG] QUERY OK source="core_transactions" db=2.6ms queue=0.1ms idle=1430.5ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:47:05.057] [DEBUG] QUERY OK source="tid_masters" db=1.8ms queue=0.6ms idle=410.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:47:05.070] [DEBUG] QUERY OK source="core_transactions" db=7.9ms queue=5.4ms idle=5.2ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:47:05.099] [DEBUG] QUERY OK source="core_transactions" db=24.9ms idle=17.2ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:47:05.118] [DEBUG] QUERY OK source="tid_masters" db=2.0ms queue=13.4ms idle=28.7ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:47:05.178] [DEBUG] QUERY OK source="merchant_adjustments" db=6.6ms queue=53.0ms idle=3.6ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:47:05.178] [DEBUG] Replied in 151ms [2026-08-21 12:48:36.116] [INFO ] Running offline device check... [2026-08-21 12:48:36.116] [INFO ] Starting offline device check... [2026-08-21 12:48:36.118] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=811.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 12:48:36.131] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.6ms idle=811.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:48:36.139] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.9ms queue=0.1ms idle=13.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.141] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms 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 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.142] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.143] [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-08-21 12:48:36.144] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.145] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.145] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.146] [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-08-21 12:48:36.148] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=0.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.156] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.0ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.157] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms 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 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.170] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.175] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.178] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.179] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.179] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.199] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.201] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.1ms 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-08-21 12:48:36.202] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.204] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.205] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.206] [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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.245] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=38.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.246] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=39.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.247] [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-08-21 12:48:36.255] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.256] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=8.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.258] [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-08-21 12:48:36.260] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.261] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.265] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.266] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.267] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.268] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.269] [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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.271] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.272] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.273] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.274] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.275] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.276] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.277] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.278] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.278] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.279] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.280] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.281] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.282] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.282] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.283] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.284] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:48:36.284] [INFO ] Offline device check completed. Found 48 offline devices, updated 0 statuses. [2026-08-21 12:48:36.284] [INFO ] Offline device check completed successfully [2026-08-21 12:49:01.704] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 12:51:15.169] [INFO ] [Ysp.Scheduler] Started. SFTP in 14h 8m, MIS in 19h 8m [2026-08-21 12:51:15.251] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 12:51:15.286] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 12:51:17.477] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 12:51:17.479] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 12:51:17.479] [INFO ] Building initial filter cache... [2026-08-21 12:51:17.493] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.4ms idle=1155.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-08-21 12:51:17.502] [DEBUG] QUERY OK source="filter_usage" db=1.4ms queue=2.0ms idle=862.1ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-08-21 12:51:17.502] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 12:51:17.609] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 12:51:17.622] [DEBUG] QUERY OK source="core_transactions" db=9.7ms queue=1.9ms idle=117.8ms SELECT count(c0.`id`), sum(c0.`gross_amount`) FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) >= ?) AND (DATE(c0.`transaction_datetime`) <= ?) AND (((c0.`risk_hold` = TRUE) OR (c0.`chargeback_hold` = TRUE)) OR (c0.`settlement_status` = 'exception_hold')) [~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.held_transactions/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:40 [2026-08-21 12:51:17.633] [DEBUG] QUERY OK source="reconciliation_exceptions" db=1.1ms queue=1.7ms idle=128.8ms SELECT count(r0.`id`) FROM `reconciliation_exceptions` AS r0 WHERE ((r0.`exception_date` >= ?) AND (r0.`exception_date` <= ?)) AND (r0.`status` = 'hold') [~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.open_exceptions/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:50 [2026-08-21 12:51:17.642] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=2.2ms idle=5.9ms SELECT count(m0.`id`), sum(m0.`amount`) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` IN ('pending','level1_approved')) [~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.pending_adjustments/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:60 [2026-08-21 12:51:17.681] [DEBUG] QUERY OK source="payout_batches" db=29.5ms queue=1.9ms idle=7.3ms SELECT count(p0.`id`), sum(p0.`total_amount`) FROM `payout_batches` AS p0 WHERE ((p0.`payout_date` >= ?) AND (p0.`payout_date` <= ?)) AND (p0.`status` IN ('failed','partial_reject')) [~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.failed_payouts/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:70 [2026-08-21 12:51:17.691] [DEBUG] QUERY OK source="settlement_mis" db=3.7ms queue=0.8ms idle=41.5ms SELECT count(s0.`id`) FROM `settlement_mis` AS s0 WHERE ((s0.`mis_date` >= ?) AND (s0.`mis_date` <= ?)) AND (s0.`approval_status` IN ('pending','level1_approved')) [~D[2026-05-01], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.mis_awaiting_approval/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:80 [2026-08-21 12:53:36.285] [INFO ] Running offline device check... [2026-08-21 12:53:36.286] [INFO ] Starting offline device check... [2026-08-21 12:53:36.290] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms queue=0.2ms idle=428.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-08-21 12:53:36.300] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.7ms idle=224.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:53:36.308] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.7ms idle=10.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.309] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.311] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.313] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.314] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.314] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.315] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.316] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.318] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.323] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.324] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.337] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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-08-21 12:53:36.344] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=15.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:53:36.347] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.351] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=0.1ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.353] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.2ms 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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.382] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=28.0ms queue=0.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.384] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.386] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.390] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.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 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.392] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=1.0ms 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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.393] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.449] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=55.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.449] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=55.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 12:53:36.450] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.457] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.458] [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-08-21 12:53:36.461] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.462] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.465] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.470] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.1ms queue=0.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.472] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=5.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.474] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.475] [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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.476] [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-08-21 12:53:36.478] [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-08-21 12:53:36.479] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.480] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.482] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.484] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms 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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.486] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.491] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.493] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.495] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.496] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.498] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.499] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.501] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.501] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.502] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.503] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 12:53:36.503] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 12:53:36.503] [INFO ] Offline device check completed successfully [2026-08-21 12:55:02.141] [INFO ] [Ysp.Scheduler] Started. SFTP in 14h 4m, MIS in 19h 4m [2026-08-21 12:55:02.269] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-08-21 12:55:02.323] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-08-21 12:55:07.273] [INFO ] Terminal Event Listener started and listening to events [2026-08-21 12:55:07.274] [INFO ] Rule Validation Worker started - will run every hour [2026-08-21 12:55:07.276] [INFO ] Building initial filter cache... [2026-08-21 12:55:07.297] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.6ms idle=1604.4ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-08-21 12:55:07.313] [DEBUG] QUERY OK source="filter_usage" db=0.4ms queue=2.7ms idle=621.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-08-21 12:55:07.315] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 12:55:07.503] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 12:55:07.515] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-08-21 12:55:07.538] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-08-21 12:55:09.925] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:55:09.925] [INFO ] Incoming JSON payload: {"oid":"fe9e5204-2763-4206-b079-ae4c097bb285","sn":"98251226730001","uploadTime":"2026-08-21T12:55:09Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:55:09Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:55:09Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:55:09Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:55:09Z"},{"itemkey":"ram_free_mb","value":"879","timestamp":"2026-08-21T12:55:09Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:55:09Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:55:09Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:55:09Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:55:09Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:55:09Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:55:09Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:55:09Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:55:09Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T12:55:09Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:55: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:55:10.069] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "fe9e5204-2763-4206-b079-ae4c097bb285", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:55:09Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:55:09Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:55:09Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:55:09Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:55:09Z", "value" => "879"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:55:09Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:55:09Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:55:09Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:55:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:55:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:55:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:55:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:55:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:55:09Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:55:09Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:55: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:55:09Z", "vendor" => "morefun"} [2026-08-21 12:55:10.069] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:55:10.182] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:55:10.195] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:55:10.338] [DEBUG] QUERY OK source="parameter_templates" db=4.3ms queue=3.3ms idle=1605.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-08-21 12:55:10.346] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms queue=4.6ms idle=592.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-08-21 12:55:10.346] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:55:10.490] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms queue=1.7ms idle=149.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-08-21 12:55:10.795] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:55:10.999] [DEBUG] QUERY OK source="tms_terminals" db=31.8ms queue=2.3ms idle=312.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:55:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:55:11.092] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:55:11.124] [DEBUG] QUERY OK source="tms_terminals" db=19.0ms idle=314.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:55:11.231] [DEBUG] QUERY OK source="tms_terminals" db=44.7ms queue=0.1ms idle=349.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:55:11], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:55:11.346] [DEBUG] QUERY OK db=56.9ms queue=4.8ms idle=160.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "fe9e5204-2763-4206-b079-ae4c097bb285", "2026-08-21T12:55:09Z", ~N[2026-08-21 12:55:11], ~N[2026-08-21 12:55:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:55:11.444] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78086, oid: "fe9e5204-2763-4206-b079-ae4c097bb285", upload_time: "2026-08-21T12:55:09Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:11], updated_at: ~N[2026-08-21 12:55:11]} [2026-08-21 12:55:11.449] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:55:09Z", "value" => "morefun"} [2026-08-21 12:55:11.499] [DEBUG] QUERY OK db=46.0ms queue=4.5ms idle=217.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:09Z", "morefun", "vendor", 78086, ~N[2026-08-21 12:55:11], ~N[2026-08-21 12:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:11.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794589, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:11], updated_at: ~N[2026-08-21 12:55:11]}} [2026-08-21 12:55:11.500] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:55:09Z", "value" => "kiosk_launcher"} [2026-08-21 12:55:11.574] [DEBUG] QUERY OK db=72.9ms queue=0.9ms idle=154.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:09Z", "kiosk_launcher", "model", 78086, ~N[2026-08-21 12:55:11], ~N[2026-08-21 12:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:11.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794590, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:11], updated_at: ~N[2026-08-21 12:55:11]}} [2026-08-21 12:55:11.575] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:55:09Z", "value" => "1.0"} [2026-08-21 12:55:11.626] [DEBUG] QUERY OK db=34.0ms idle=92.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:09Z", "1.0", "app_version", 78086, ~N[2026-08-21 12:55:11], ~N[2026-08-21 12:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:11.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794591, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:11], updated_at: ~N[2026-08-21 12:55:11]}} [2026-08-21 12:55:11.626] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:55:09Z", "value" => "13"} [2026-08-21 12:55:11.701] [DEBUG] QUERY OK db=75.1ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:09Z", "13", "android_version", 78086, ~N[2026-08-21 12:55:11], ~N[2026-08-21 12:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:11.710] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794592, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:11], updated_at: ~N[2026-08-21 12:55:11]}} [2026-08-21 12:55:11.710] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:55:09Z", "value" => "879"} [2026-08-21 12:55:11.748] [DEBUG] QUERY OK db=38.1ms idle=84.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:09Z", "879", "ram_free_mb", 78086, ~N[2026-08-21 12:55:11], ~N[2026-08-21 12:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:11.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794593, itemkey: "ram_free_mb", value: "879", timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:11], updated_at: ~N[2026-08-21 12:55:11]}} [2026-08-21 12:55:11.751] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:55:09Z", "value" => "WIFI"} [2026-08-21 12:55:11.774] [DEBUG] QUERY OK db=22.2ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:09Z", "WIFI", "network_type", 78086, ~N[2026-08-21 12:55:11], ~N[2026-08-21 12:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:11.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794594, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:11], updated_at: ~N[2026-08-21 12:55:11]}} [2026-08-21 12:55:11.774] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:55:09Z", "value" => "true"} [2026-08-21 12:55:11.810] [DEBUG] QUERY OK db=35.2ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:09Z", "true", "kiosk_active", 78086, ~N[2026-08-21 12:55:11], ~N[2026-08-21 12:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:11.810] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794595, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:11], updated_at: ~N[2026-08-21 12:55:11]}} [2026-08-21 12:55:11.810] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:55:09Z", "value" => ""} [2026-08-21 12:55:11.869] [DEBUG] QUERY OK db=52.6ms queue=6.1ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:55:09Z", "sim_operator", 78086, ~N[2026-08-21 12:55:11], ~N[2026-08-21 12:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:11.869] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794596, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:11], updated_at: ~N[2026-08-21 12:55:11]}} [2026-08-21 12:55:11.871] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:55:09Z", "value" => "UNKNOWN"} [2026-08-21 12:55:12.054] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 53µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "HWYUEwRgD0ACHBttOXM-ARwoBGg_GEEQw3mABXb0jln_tCjOHP42VY4w", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "1", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 12:55:12.960] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 34µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "HWYUEwRgD0ACHBttOXM-ARwoBGg_GEEQw3mABXb0jln_tCjOHP42VY4w", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "1", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 12:55:13.263] [DEBUG] QUERY OK db=1391.6ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:09Z", "UNKNOWN", "sim_number", 78086, ~N[2026-08-21 12:55:11], ~N[2026-08-21 12:55:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:13.263] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794597, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:11], updated_at: ~N[2026-08-21 12:55:11]}} [2026-08-21 12:55:13.263] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:55:09Z", "value" => "UNKNOWN"} [2026-08-21 12:55:13.297] [DEBUG] QUERY OK db=32.9ms idle=465.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:09Z", "UNKNOWN", "sim_iccid", 78086, ~N[2026-08-21 12:55:13], ~N[2026-08-21 12:55:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:13.299] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794598, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:13], updated_at: ~N[2026-08-21 12:55:13]}} [2026-08-21 12:55:13.299] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:55:09Z", "value" => "UNKNOWN"} [2026-08-21 12:55:13.351] [DEBUG] QUERY OK db=44.9ms queue=0.8ms idle=42.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:09Z", "UNKNOWN", "sim_imsi", 78086, ~N[2026-08-21 12:55:13], ~N[2026-08-21 12:55:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:13.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794599, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:13], updated_at: ~N[2026-08-21 12:55:13]}} [2026-08-21 12:55:13.352] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:55:09Z", "value" => "UNKNOWN"} [2026-08-21 12:55:13.412] [DEBUG] QUERY OK db=57.3ms queue=2.3ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:09Z", "UNKNOWN", "sim_iccid2", 78086, ~N[2026-08-21 12:55:13], ~N[2026-08-21 12:55:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:13.413] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794600, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:13], updated_at: ~N[2026-08-21 12:55:13]}} [2026-08-21 12:55:13.413] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:55:09Z", "value" => "UNKNOWN"} [2026-08-21 12:55:13.458] [DEBUG] QUERY OK db=44.3ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:09Z", "UNKNOWN", "sim_imsi2", 78086, ~N[2026-08-21 12:55:13], ~N[2026-08-21 12:55:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:13.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794601, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:13], updated_at: ~N[2026-08-21 12:55:13]}} [2026-08-21 12:55:13.459] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:55:09Z", "value" => "37"} [2026-08-21 12:55:13.480] [INFO ] GET /admin/settlements/summary [2026-08-21 12:55:13.504] [DEBUG] QUERY OK db=43.5ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:09Z", "37", "data_usage_mb", 78086, ~N[2026-08-21 12:55:13], ~N[2026-08-21 12:55:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:13.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794602, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:13], updated_at: ~N[2026-08-21 12:55:13]}} [2026-08-21 12:55:13.505] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:55:09Z", "value" => "0"} [2026-08-21 12:55:13.543] [DEBUG] Processing with PlatformWeb.SettlementLive.SettlementSummary.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-08-21 12:55:13.548] [DEBUG] QUERY OK db=42.1ms queue=1.3ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:09Z", "0", "mobile_data_mb", 78086, ~N[2026-08-21 12:55:13], ~N[2026-08-21 12:55:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:13.549] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794603, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:13], updated_at: ~N[2026-08-21 12:55:13]}} [2026-08-21 12:55:13.550] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:55: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:55:13.580] [DEBUG] QUERY OK source="users_tokens" db=0.6ms queue=0.5ms idle=549.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)) [<<101, 6, 144, 156, 30, 208, 15, 191, 185, 52, 178, 35, 142, 239, 104, 87, 25, 53, 94, 7, 150, 66, 17, 195, 71, 153, 238, 172, 66, 120, 187, 4>>, "session", ~U[2026-08-21 12:55:13.572480Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-08-21 12:55:13.649] [DEBUG] QUERY OK source="core_transactions" db=0.8ms queue=0.7ms idle=94.5ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:55:13.655] [DEBUG] QUERY OK source="tid_masters" db=1.0ms queue=0.5ms idle=8.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:55:13.662] [DEBUG] QUERY OK db=108.8ms idle=47.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78086, ~N[2026-08-21 12:55:13], ~N[2026-08-21 12:55:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:13.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794604, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:55:09Z", message: nil, status_log_id: 78086, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:13], updated_at: ~N[2026-08-21 12:55:13]}} [2026-08-21 12:55:13.704] [DEBUG] QUERY OK source="core_transactions" db=8.3ms queue=33.9ms idle=7.0ms SELECT count(c0.`id`), sum(c0.`gross_amount`) FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) >= ?) AND (DATE(c0.`transaction_datetime`) <= ?) AND (((c0.`risk_hold` = TRUE) OR (c0.`chargeback_hold` = TRUE)) OR (c0.`settlement_status` = 'exception_hold')) [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.held_transactions/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:40 [2026-08-21 12:55:13.709] [DEBUG] QUERY OK source="reconciliation_exceptions" db=0.4ms queue=0.7ms idle=46.8ms SELECT count(r0.`id`) FROM `reconciliation_exceptions` AS r0 WHERE ((r0.`exception_date` >= ?) AND (r0.`exception_date` <= ?)) AND (r0.`status` = 'hold') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.open_exceptions/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:50 [2026-08-21 12:55:13.714] [DEBUG] QUERY OK source="merchant_adjustments" db=1.2ms queue=0.3ms idle=8.5ms SELECT count(m0.`id`), sum(m0.`amount`) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` IN ('pending','level1_approved')) [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.pending_adjustments/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:60 [2026-08-21 12:55:13.721] [DEBUG] QUERY OK source="payout_batches" db=0.6ms queue=1.9ms idle=10.0ms SELECT count(p0.`id`), sum(p0.`total_amount`) FROM `payout_batches` AS p0 WHERE ((p0.`payout_date` >= ?) AND (p0.`payout_date` <= ?)) AND (p0.`status` IN ('failed','partial_reject')) [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.failed_payouts/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:70 [2026-08-21 12:55:13.730] [DEBUG] QUERY OK source="settlement_mis" db=2.2ms queue=1.4ms idle=12.4ms SELECT count(s0.`id`) FROM `settlement_mis` AS s0 WHERE ((s0.`mis_date` >= ?) AND (s0.`mis_date` <= ?)) AND (s0.`approval_status` IN ('pending','level1_approved')) [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.mis_awaiting_approval/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:80 [2026-08-21 12:55:13.734] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=1.0ms idle=10.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:55:13.734] [DEBUG] QUERY OK source="core_transactions" db=0.5ms idle=3.7ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:55:13.777] [DEBUG] QUERY OK source="tid_masters" db=1.2ms queue=41.0ms idle=1.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:55:13.783] [DEBUG] QUERY OK source="merchant_adjustments" db=1.0ms queue=4.5ms idle=43.1ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:55:14.022] [INFO ] Sent 200 in 541ms [2026-08-21 12:55:14.323] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 32µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "HWYUEwRgD0ACHBttOXM-ARwoBGg_GEEQw3mABXb0jln_tCjOHP42VY4w", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "1", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 12:55:37.676] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 27µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "AxgSAQ9NIzEjEQQGHQkMCD1BVxAhOQI2iMkSIuNAKaq4P9XFi9gJHxwQ", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-08-21 12:55:38.031] [DEBUG] MOUNT PlatformWeb.SettlementLive.SettlementSummary Parameters: %{} Session: %{"_csrf_token" => "jUyRF8mphpu2M0TNTx0ZiAug", "live_socket_id" => "users_sessions:ZQaQnB7QD7-5NLIjju9oVxk1XgeWQhHDR5nurEJ4uwQ=", "user_token" => <<101, 6, 144, 156, 30, 208, 15, 191, 185, 52, 178, 35, 142, 239, 104, 87, 25, 53, 94, 7, 150, 66, 17, 195, 71, 153, 238, 172, 66, 120, 187, 4>>} [2026-08-21 12:55:38.033] [DEBUG] QUERY OK source="users_tokens" db=1.3ms idle=998.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)) [<<101, 6, 144, 156, 30, 208, 15, 191, 185, 52, 178, 35, 142, 239, 104, 87, 25, 53, 94, 7, 150, 66, 17, 195, 71, 153, 238, 172, 66, 120, 187, 4>>, "session", ~U[2026-08-21 12:55:38.032127Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-08-21 12:55:38.040] [DEBUG] QUERY OK source="core_transactions" db=5.3ms queue=0.9ms idle=649.0ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:55:38.044] [DEBUG] QUERY OK source="tid_masters" db=3.8ms queue=0.3ms idle=44.7ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:55:38.049] [DEBUG] QUERY OK source="core_transactions" db=4.2ms idle=5.0ms SELECT count(c0.`id`), sum(c0.`gross_amount`) FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) >= ?) AND (DATE(c0.`transaction_datetime`) <= ?) AND (((c0.`risk_hold` = TRUE) OR (c0.`chargeback_hold` = TRUE)) OR (c0.`settlement_status` = 'exception_hold')) [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.held_transactions/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:40 [2026-08-21 12:55:38.088] [DEBUG] QUERY OK source="reconciliation_exceptions" db=38.1ms queue=0.2ms idle=5.3ms SELECT count(r0.`id`) FROM `reconciliation_exceptions` AS r0 WHERE ((r0.`exception_date` >= ?) AND (r0.`exception_date` <= ?)) AND (r0.`status` = 'hold') [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.open_exceptions/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:50 [2026-08-21 12:55:38.090] [DEBUG] QUERY OK source="merchant_adjustments" db=1.6ms idle=42.0ms SELECT count(m0.`id`), sum(m0.`amount`) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` IN ('pending','level1_approved')) [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.pending_adjustments/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:60 [2026-08-21 12:55:38.094] [DEBUG] QUERY OK source="payout_batches" db=3.3ms idle=2.2ms SELECT count(p0.`id`), sum(p0.`total_amount`) FROM `payout_batches` AS p0 WHERE ((p0.`payout_date` >= ?) AND (p0.`payout_date` <= ?)) AND (p0.`status` IN ('failed','partial_reject')) [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.failed_payouts/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:70 [2026-08-21 12:55:38.099] [DEBUG] QUERY OK source="settlement_mis" db=5.2ms idle=3.9ms SELECT count(s0.`id`) FROM `settlement_mis` AS s0 WHERE ((s0.`mis_date` >= ?) AND (s0.`mis_date` <= ?)) AND (s0.`approval_status` IN ('pending','level1_approved')) [~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.SettlementDashboardKpis.mis_awaiting_approval/2, at: lib/settlement_core/settlement_dashboard_kpis.ex:80 [2026-08-21 12:55:38.109] [DEBUG] QUERY OK source="core_transactions" db=3.9ms queue=1.0ms idle=10.5ms SELECT c0.`scheme_name`, c0.`transaction_type`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (c0.`merchant_mid` IN (?,?)) AND (c0.`scheme_name` IN (?,?,?,?,?,?,?,?)) AND (c0.`transaction_type` IN (?,?,?)) GROUP BY c0.`scheme_name`, c0.`transaction_type` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000", "MASTERCARD", "VISA", "AMEX", "UNIONPAY", "DINERS", "AANI", "ALIPAY", "STC_PAY", "SALE", "REFUND", "REVERSAL"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:62 [2026-08-21 12:55:38.114] [DEBUG] QUERY OK source="core_transactions" db=1.9ms queue=2.4ms idle=10.4ms SELECT c0.`merchant_mid`, count(c0.`id`) FROM `core_transactions` AS c0 WHERE (((c0.`switch_settled_date` >= ?) AND (c0.`switch_settled_date` <= ?)) OR ((c0.`released_for_settlement_date` >= ?) AND (c0.`released_for_settlement_date` <= ?))) AND ((((c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE)) AND (c0.`chargeback_hold` = FALSE)) AND (c0.`exception_type` IS NULL)) AND (NOT (c0.`merchant_mid` IS NULL)) GROUP BY c0.`merchant_mid` [~D[2026-07-22], ~D[2026-08-21], ~D[2026-07-22], ~D[2026-08-21]] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1430 [2026-08-21 12:55:38.153] [DEBUG] QUERY OK source="tid_masters" db=2.6ms queue=30.3ms idle=10.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ SettlementCore.Context.get_active_merchants/2, at: lib/settlement_core/context.ex:1435 [2026-08-21 12:55:38.156] [DEBUG] QUERY OK source="merchant_adjustments" db=1.9ms queue=0.9ms idle=39.4ms SELECT sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN m0.`amount` ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'DEBIT' THEN 1 ELSE 0 END), sum(CASE WHEN m0.`debit_credit` = 'CREDIT' THEN 1 ELSE 0 END) FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` >= ?) AND (m0.`adjustment_date` <= ?)) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?)) [~D[2026-07-22], ~D[2026-08-21], "425590250000000", "419926360000000"] ↳ SettlementCore.SettlementSummaryBuilder.build/1, at: lib/settlement_core/settlement_summary_builder.ex:67 [2026-08-21 12:55:38.157] [DEBUG] Replied in 126ms [2026-08-21 12:55:39.961] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:55:39.961] [INFO ] Incoming JSON payload: {"oid":"55829403-66ae-4234-99df-d8400c60f3a9","sn":"98251226730001","uploadTime":"2026-08-21T12:55:39Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"ram_free_mb","value":"878","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:55:39Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:55:39.965] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "55829403-66ae-4234-99df-d8400c60f3a9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:55:39Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:55:39Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:55:39Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:55:39Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:55:39Z", "value" => "878"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:55:39Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:55:39Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:55:39Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:55:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:55:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:55:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:55:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:55:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:55:39Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:55:39Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:55:39Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:55:39Z", "vendor" => "morefun"} [2026-08-21 12:55:39.967] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:55:39.967] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:55:39.967] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:55:39.976] [DEBUG] QUERY OK source="parameter_templates" db=6.5ms queue=1.9ms 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", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 12:55:39.982] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms idle=594.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-08-21 12:55:39.986] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:55:40.001] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=1.8ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:55:40.017] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:55:40.089] [DEBUG] QUERY OK source="tms_terminals" db=62.5ms queue=5.2ms idle=20.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:55:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:55:40.089] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:55:40.093] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=64.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:55:40.154] [DEBUG] QUERY OK source="tms_terminals" db=56.5ms queue=1.0ms idle=7.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:55:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:55:40.187] [DEBUG] QUERY OK db=30.2ms queue=2.3ms idle=60.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "55829403-66ae-4234-99df-d8400c60f3a9", "2026-08-21T12:55:39Z", ~N[2026-08-21 12:55:40], ~N[2026-08-21 12:55:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:55:40.190] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78087, oid: "55829403-66ae-4234-99df-d8400c60f3a9", upload_time: "2026-08-21T12:55:39Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:40], updated_at: ~N[2026-08-21 12:55:40]} [2026-08-21 12:55:40.190] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:55:39Z", "value" => "morefun"} [2026-08-21 12:55:40.252] [DEBUG] QUERY OK db=61.8ms queue=0.1ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "morefun", "vendor", 78087, ~N[2026-08-21 12:55:40], ~N[2026-08-21 12:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:40.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794605, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:40], updated_at: ~N[2026-08-21 12:55:40]}} [2026-08-21 12:55:40.252] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:55:39Z", "value" => "kiosk_launcher"} [2026-08-21 12:55:40.328] [DEBUG] QUERY OK db=75.0ms idle=65.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "kiosk_launcher", "model", 78087, ~N[2026-08-21 12:55:40], ~N[2026-08-21 12:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:40.329] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794607, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:40], updated_at: ~N[2026-08-21 12:55:40]}} [2026-08-21 12:55:40.329] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:55:39Z", "value" => "1.0"} [2026-08-21 12:55:40.420] [DEBUG] QUERY OK db=90.1ms idle=77.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "1.0", "app_version", 78087, ~N[2026-08-21 12:55:40], ~N[2026-08-21 12:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:40.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794609, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:40], updated_at: ~N[2026-08-21 12:55:40]}} [2026-08-21 12:55:40.420] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:55:39Z", "value" => "13"} [2026-08-21 12:55:40.462] [DEBUG] QUERY OK db=39.8ms queue=0.3ms idle=92.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "13", "android_version", 78087, ~N[2026-08-21 12:55:40], ~N[2026-08-21 12:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:40.462] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794611, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:40], updated_at: ~N[2026-08-21 12:55:40]}} [2026-08-21 12:55:40.462] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:55:39Z", "value" => "878"} [2026-08-21 12:55:40.550] [DEBUG] QUERY OK db=86.3ms queue=1.4ms idle=43.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "878", "ram_free_mb", 78087, ~N[2026-08-21 12:55:40], ~N[2026-08-21 12:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:40.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794613, itemkey: "ram_free_mb", value: "878", timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:40], updated_at: ~N[2026-08-21 12:55:40]}} [2026-08-21 12:55:40.551] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:55:39Z", "value" => "WIFI"} [2026-08-21 12:55:40.642] [DEBUG] QUERY OK db=89.3ms idle=92.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "WIFI", "network_type", 78087, ~N[2026-08-21 12:55:40], ~N[2026-08-21 12:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:40.642] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794615, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:40], updated_at: ~N[2026-08-21 12:55:40]}} [2026-08-21 12:55:40.643] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:55:39Z", "value" => "true"} [2026-08-21 12:55:40.687] [DEBUG] QUERY OK db=44.0ms idle=92.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "true", "kiosk_active", 78087, ~N[2026-08-21 12:55:40], ~N[2026-08-21 12:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:40.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794617, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:40], updated_at: ~N[2026-08-21 12:55:40]}} [2026-08-21 12:55:40.688] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:55:39Z", "value" => ""} [2026-08-21 12:55:40.741] [DEBUG] QUERY OK db=51.7ms queue=0.8ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:55:39Z", "sim_operator", 78087, ~N[2026-08-21 12:55:40], ~N[2026-08-21 12:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:40.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794619, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:40], updated_at: ~N[2026-08-21 12:55:40]}} [2026-08-21 12:55:40.744] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:55:39Z", "value" => "UNKNOWN"} [2026-08-21 12:55:40.830] [DEBUG] QUERY OK db=85.4ms idle=57.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "UNKNOWN", "sim_number", 78087, ~N[2026-08-21 12:55:40], ~N[2026-08-21 12:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:40.831] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794621, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:40], updated_at: ~N[2026-08-21 12:55:40]}} [2026-08-21 12:55:40.835] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:55:39Z", "value" => "UNKNOWN"} [2026-08-21 12:55:40.891] [DEBUG] QUERY OK db=55.7ms idle=94.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "UNKNOWN", "sim_iccid", 78087, ~N[2026-08-21 12:55:40], ~N[2026-08-21 12:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:40.891] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794623, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:40], updated_at: ~N[2026-08-21 12:55:40]}} [2026-08-21 12:55:40.891] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:55:39Z", "value" => "UNKNOWN"} [2026-08-21 12:55:40.988] [DEBUG] QUERY OK db=96.2ms idle=62.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "UNKNOWN", "sim_imsi", 78087, ~N[2026-08-21 12:55:40], ~N[2026-08-21 12:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:40.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794625, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:40], updated_at: ~N[2026-08-21 12:55:40]}} [2026-08-21 12:55:40.989] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:55:39Z", "value" => "UNKNOWN"} [2026-08-21 12:55:41.065] [DEBUG] QUERY OK db=75.4ms queue=0.1ms idle=98.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "UNKNOWN", "sim_iccid2", 78087, ~N[2026-08-21 12:55:40], ~N[2026-08-21 12:55:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:41.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794626, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:40], updated_at: ~N[2026-08-21 12:55:40]}} [2026-08-21 12:55:41.068] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:55:39Z", "value" => "UNKNOWN"} [2026-08-21 12:55:41.194] [DEBUG] QUERY OK db=125.0ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "UNKNOWN", "sim_imsi2", 78087, ~N[2026-08-21 12:55:41], ~N[2026-08-21 12:55:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:41.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794628, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:41], updated_at: ~N[2026-08-21 12:55:41]}} [2026-08-21 12:55:41.197] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:55:39Z", "value" => "37"} [2026-08-21 12:55:41.326] [DEBUG] QUERY OK db=128.6ms idle=132.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "37", "data_usage_mb", 78087, ~N[2026-08-21 12:55:41], ~N[2026-08-21 12:55:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:41.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794630, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:41], updated_at: ~N[2026-08-21 12:55:41]}} [2026-08-21 12:55:41.326] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:55:39Z", "value" => "0"} [2026-08-21 12:55:41.374] [DEBUG] QUERY OK db=47.5ms idle=132.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "0", "mobile_data_mb", 78087, ~N[2026-08-21 12:55:41], ~N[2026-08-21 12:55:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:41.375] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794632, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:41], updated_at: ~N[2026-08-21 12:55:41]}} [2026-08-21 12:55:41.376] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:55:39Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:55:41.465] [DEBUG] QUERY OK db=88.3ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:55:39Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78087, ~N[2026-08-21 12:55:41], ~N[2026-08-21 12:55:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:55:41.468] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794634, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:55:39Z", message: nil, status_log_id: 78087, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:55:41], updated_at: ~N[2026-08-21 12:55:41]}} [2026-08-21 12:56:10.019] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:56:10.019] [INFO ] Incoming JSON payload: {"oid":"c74586fd-c717-41fb-94ab-327b4d376756","sn":"98251226730001","uploadTime":"2026-08-21T12:56:09Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:56:09Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:56:09Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:56:09Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:56:09Z"},{"itemkey":"ram_free_mb","value":"876","timestamp":"2026-08-21T12:56:09Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:56:09Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:56:09Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:56:09Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:56:09Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:56:09Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:56:09Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:56:09Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:56:09Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T12:56:09Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:56: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:56:10.022] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c74586fd-c717-41fb-94ab-327b4d376756", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:56:09Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:56:09Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:56:09Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:56:09Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:56:09Z", "value" => "876"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:56:09Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:56:09Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:56:09Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:56:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:56:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:56:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:56:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:56:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:56:09Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:56:09Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:56: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:56:09Z", "vendor" => "morefun"} [2026-08-21 12:56:10.023] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:56:10.023] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:56:10.023] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:56:10.024] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.4ms idle=869.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 12:56:10.025] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=638.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-08-21 12:56:10.025] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:56:10.027] [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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:56:10.027] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:56:10.079] [DEBUG] QUERY OK source="tms_terminals" db=51.2ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:56:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:56:10.079] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:56:10.080] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.2ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:56:10.131] [DEBUG] QUERY OK source="tms_terminals" db=49.8ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:56:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:56:10.188] [DEBUG] QUERY OK db=56.4ms idle=51.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c74586fd-c717-41fb-94ab-327b4d376756", "2026-08-21T12:56:09Z", ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:56:10.189] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78089, oid: "c74586fd-c717-41fb-94ab-327b4d376756", upload_time: "2026-08-21T12:56:09Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]} [2026-08-21 12:56:10.190] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:56:09Z", "value" => "morefun"} [2026-08-21 12:56:10.233] [DEBUG] QUERY OK db=41.7ms idle=34.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:09Z", "morefun", "vendor", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:10.234] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794637, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:10.234] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:56:09Z", "value" => "kiosk_launcher"} [2026-08-21 12:56:10.282] [DEBUG] QUERY OK db=48.0ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:09Z", "kiosk_launcher", "model", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:10.282] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794639, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:10.282] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:56:09Z", "value" => "1.0"} [2026-08-21 12:56:10.341] [DEBUG] QUERY OK db=58.6ms idle=49.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:09Z", "1.0", "app_version", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:10.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794641, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:10.342] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:56:09Z", "value" => "13"} [2026-08-21 12:56:10.395] [DEBUG] QUERY OK db=52.4ms idle=60.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:09Z", "13", "android_version", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:10.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794643, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:10.395] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:56:09Z", "value" => "876"} [2026-08-21 12:56:10.462] [DEBUG] QUERY OK db=66.7ms idle=54.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:09Z", "876", "ram_free_mb", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:10.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794645, itemkey: "ram_free_mb", value: "876", timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:10.463] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:56:09Z", "value" => "WIFI"} [2026-08-21 12:56:10.518] [DEBUG] QUERY OK db=53.9ms queue=0.5ms idle=68.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:09Z", "WIFI", "network_type", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:10.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794647, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:10.518] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:56:09Z", "value" => "true"} [2026-08-21 12:56:10.579] [DEBUG] QUERY OK db=60.6ms idle=56.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:09Z", "true", "kiosk_active", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:10.579] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794649, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:10.579] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:56:09Z", "value" => ""} [2026-08-21 12:56:10.652] [DEBUG] QUERY OK db=71.7ms idle=62.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:56:09Z", "sim_operator", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:10.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794651, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:10.653] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:56:09Z", "value" => "UNKNOWN"} [2026-08-21 12:56:10.704] [DEBUG] QUERY OK db=50.8ms idle=73.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:09Z", "UNKNOWN", "sim_number", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:10.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794653, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:10.704] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:56:09Z", "value" => "UNKNOWN"} [2026-08-21 12:56:10.756] [DEBUG] QUERY OK db=51.2ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:09Z", "UNKNOWN", "sim_iccid", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:10.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794655, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:10.756] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:56:09Z", "value" => "UNKNOWN"} [2026-08-21 12:56:10.804] [DEBUG] QUERY OK db=47.4ms idle=52.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:09Z", "UNKNOWN", "sim_imsi", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:10.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794657, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:10.805] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:56:09Z", "value" => "UNKNOWN"} [2026-08-21 12:56:10.879] [DEBUG] QUERY OK db=74.0ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:09Z", "UNKNOWN", "sim_iccid2", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:10.879] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794659, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:10.879] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:56:09Z", "value" => "UNKNOWN"} [2026-08-21 12:56:10.950] [DEBUG] QUERY OK db=69.8ms idle=75.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:09Z", "UNKNOWN", "sim_imsi2", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:10.950] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794661, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:10.950] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:56:09Z", "value" => "37"} [2026-08-21 12:56:10.999] [DEBUG] QUERY OK db=48.3ms idle=71.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:09Z", "37", "data_usage_mb", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:10.999] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794663, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:10.999] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:56:09Z", "value" => "0"} [2026-08-21 12:56:11.069] [DEBUG] QUERY OK db=69.0ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:09Z", "0", "mobile_data_mb", 78089, ~N[2026-08-21 12:56:10], ~N[2026-08-21 12:56:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:11.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794665, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:10], updated_at: ~N[2026-08-21 12:56:10]}} [2026-08-21 12:56:11.070] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:56: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:56:11.105] [DEBUG] QUERY OK db=35.1ms idle=71.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78089, ~N[2026-08-21 12:56:11], ~N[2026-08-21 12:56:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:11.108] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794667, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:56:09Z", message: nil, status_log_id: 78089, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:11], updated_at: ~N[2026-08-21 12:56:11]}} [2026-08-21 12:56:11.110] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 12:56:11.110] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T04:05:35Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T04:05:35Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T04:05:35Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T04:05:35Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T04:05:35Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T04:05:35Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T04:05:35Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T04:05:35Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T04:05:35Z","vendor":"MoreFun"} [2026-08-21 12:56:11.112] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T04:05:35Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T04:05:35Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T04:05:35Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T04:05:35Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T04:05:35Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T04:05:35Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T04:05:35Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T04:05:35Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T04:05:35Z", "vendor" => "MoreFun"} [2026-08-21 12:56:11.112] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:56:11.112] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 12:56:11.112] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 12:56:11.115] [DEBUG] QUERY OK source="parameter_templates" db=2.6ms idle=43.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`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-08-21 12:56:11.123] [DEBUG] QUERY OK source="tms_terminals" db=5.8ms queue=1.3ms idle=10.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.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 12:56:11.139] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms queue=1.6ms idle=22.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-08-21 12:56:11.160] [DEBUG] QUERY OK source="parameter_definitions" db=2.3ms queue=1.1ms idle=30.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-08-21 12:56:11.199] [DEBUG] QUERY OK source="pos_terminal" db=1.9ms queue=15.8ms idle=24.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:56:11.213] [DEBUG] QUERY OK source="pos_merchant" db=1.5ms queue=2.0ms idle=43.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:56:11.238] [DEBUG] QUERY OK db=1.4ms queue=1.3ms idle=1850.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 ["123451234512345"] [2026-08-21 12:56:11.239] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:56:11.245] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms queue=0.6ms idle=44.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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:56:11.250] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 12:56:11.263] [DEBUG] QUERY OK source="address" db=3.6ms queue=0.9ms idle=45.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` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:56:11.265] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 12:56:11.301] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 12:56:11.395] [DEBUG] QUERY OK db=66.6ms queue=2.7ms idle=79.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "2f0b66f4902e8187cefb91f7d6a2c507a64fc5a76a47c795cca5774ce34c11a1", 4674, 932, ~U[2026-08-21 12:56:11Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:56:11], ~N[2026-08-21 12:56:11]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:56:11.395] [INFO ] AutoPushService: Created push log 49134 for MF919 params.zip [2026-08-21 12:56:11.408] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 4674, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:56:11.408] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:56:11.442] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 12:56:11.460] [DEBUG] QUERY OK source="config_file_versions" db=5.5ms queue=2.1ms idle=188.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-08-21 12:56:11.473] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 12:56:11.684] [DEBUG] QUERY OK db=203.3ms queue=3.1ms idle=79.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "416bcebec4ef21a8d771e22a326b4f33c95ae3d9845b8bb90774be13c56c64bd", 4898, 17947, ~U[2026-08-21 12:56:11Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:56:11], ~N[2026-08-21 12:56:11]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:56:11.684] [INFO ] AutoPushService: Created push log 49136 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:56:11.685] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 4898, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:56:11.685] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:56:11.685] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 12:56:11.697] [DEBUG] QUERY OK source="config_file_versions" db=8.0ms queue=3.2ms idle=225.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-08-21 12:56:11.710] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 12:56:11.712] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=29.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:56:11.713] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 12:56:11.792] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:56:11.792] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:56:11.792] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:56:11.793] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=95.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-08-21 12:56:11.794] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:56:11.794] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 12:56:11.795] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=82.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-08-21 12:56:11.795] [INFO ] Terminal updated: 98250623730001 [2026-08-21 12:56:11.797] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.5ms idle=3.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 12:56:11.798] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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-08-21 12:56:11.798] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=0.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:56:11.798] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:56:11.826] [DEBUG] QUERY OK source="parameter_push_logs" db=22.6ms queue=0.4ms idle=5.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 [19, "application", ~N[2026-08-21 12:26:11]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:56:11.826] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:56:11.827] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 12:56:11.827] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=28.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:56:11.828] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=1.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:56:11.829] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:56:11.829] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:56:11.883] [DEBUG] QUERY OK db=53.1ms idle=1.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T04:05:35Z", ~N[2026-08-21 12:56:11], ~N[2026-08-21 12:56:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:56:11.883] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78092, oid: "organization_id", upload_time: "2026-08-21T04:05:35Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:11], updated_at: ~N[2026-08-21 12:56:11]} [2026-08-21 12:56:11.883] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T04:05:35Z", "value" => "online"} [2026-08-21 12:56:11.925] [DEBUG] QUERY OK db=39.1ms queue=2.1ms idle=54.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T04:05:35Z", "online", "status", 78092, ~N[2026-08-21 12:56:11], ~N[2026-08-21 12:56:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:11.925] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794670, itemkey: "status", value: "online", timestamp: "2026-08-21T04:05:35Z", message: "Terminal status update", status_log_id: 78092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:11], updated_at: ~N[2026-08-21 12:56:11]}} [2026-08-21 12:56:11.926] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 12:56:11.927] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=43.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:56:11], 19] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-08-21 12:56:11.927] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T04:05:35Z", "value" => "51"} [2026-08-21 12:56:11.978] [DEBUG] QUERY OK db=50.5ms idle=2.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T04:05:35Z", "51", "battery", 78092, ~N[2026-08-21 12:56:11], ~N[2026-08-21 12:56:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:11.978] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794672, itemkey: "battery", value: "51", timestamp: "2026-08-21T04:05:35Z", message: "Battery level", status_log_id: 78092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:11], updated_at: ~N[2026-08-21 12:56:11]}} [2026-08-21 12:56:11.978] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T04:05:35Z", "value" => "online"} [2026-08-21 12:56:12.020] [DEBUG] QUERY OK db=40.1ms queue=0.5ms idle=52.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T04:05:35Z", "online", "network", 78092, ~N[2026-08-21 12:56:11], ~N[2026-08-21 12:56:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:12.020] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794674, itemkey: "network", value: "online", timestamp: "2026-08-21T04:05:35Z", message: "Network connectivity", status_log_id: 78092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:11], updated_at: ~N[2026-08-21 12:56:11]}} [2026-08-21 12:56:12.021] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 12:56:12.099] [DEBUG] QUERY OK source="tms_terminals" db=78.4ms idle=43.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:56:12], 19] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:158 [2026-08-21 12:56:12.100] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T04:05:35Z", "value" => "0"} [2026-08-21 12:56:12.151] [DEBUG] QUERY OK db=50.4ms queue=0.1ms idle=79.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T04:05:35Z", "0", "cpu", 78092, ~N[2026-08-21 12:56:12], ~N[2026-08-21 12:56:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:12.151] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794676, itemkey: "cpu", value: "0", timestamp: "2026-08-21T04:05:35Z", message: "CPU usage percentage", status_log_id: 78092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:12], updated_at: ~N[2026-08-21 12:56:12]}} [2026-08-21 12:56:12.151] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T04:05:35Z", "value" => "1.0.0"} [2026-08-21 12:56:12.194] [DEBUG] QUERY OK db=42.3ms idle=51.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T04:05:35Z", "1.0.0", "parameter_config", 78092, ~N[2026-08-21 12:56:12], ~N[2026-08-21 12:56:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:12.194] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794678, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T04:05:35Z", message: "Current parameters version", status_log_id: 78092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:12], updated_at: ~N[2026-08-21 12:56:12]}} [2026-08-21 12:56:12.194] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T04:05:35Z", "value" => "1.0.1"} [2026-08-21 12:56:12.245] [DEBUG] QUERY OK db=50.1ms idle=26.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T04:05:35Z", "1.0.1", "emv_config", 78092, ~N[2026-08-21 12:56:12], ~N[2026-08-21 12:56:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:12.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794680, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T04:05:35Z", message: "Current EMV config version", status_log_id: 78092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:12], updated_at: ~N[2026-08-21 12:56:12]}} [2026-08-21 12:56:12.245] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T04:05:35Z", "value" => ""} [2026-08-21 12:56:12.289] [DEBUG] QUERY OK db=43.0ms queue=0.8ms idle=51.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T04:05:35Z", "keys_config", 78092, ~N[2026-08-21 12:56:12], ~N[2026-08-21 12:56:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:12.290] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794682, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T04:05:35Z", message: "Current keys config version", status_log_id: 78092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:12], updated_at: ~N[2026-08-21 12:56:12]}} [2026-08-21 12:56:12.292] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T04:05:35Z", "value" => "3.8.7.3"} [2026-08-21 12:56:12.347] [DEBUG] QUERY OK db=54.6ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T04:05:35Z", "3.8.7.3", "application", 78092, ~N[2026-08-21 12:56:12], ~N[2026-08-21 12:56:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:12.348] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794684, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T04:05:35Z", message: "Current application version", status_log_id: 78092, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:12], updated_at: ~N[2026-08-21 12:56:12]}} [2026-08-21 12:56:12.348] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=58.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:56:12], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:188 [2026-08-21 12:56:12.353] [WARN ] Unexpected async result [2026-08-21 12:56:12.353] [WARN ] Unexpected async result [2026-08-21 12:56:40.123] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:56:40.123] [INFO ] Incoming JSON payload: {"oid":"ca8a8dad-13d5-40e2-b225-d3c7d37a1d44","sn":"98251226730001","uploadTime":"2026-08-21T12:56:39Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"ram_free_mb","value":"873","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:56:39Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:56:40.125] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ca8a8dad-13d5-40e2-b225-d3c7d37a1d44", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:56:39Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:56:39Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:56:39Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:56:39Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:56:39Z", "value" => "873"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:56:39Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:56:39Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:56:39Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:56:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:56:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:56:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:56:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:56:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:56:39Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:56:39Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:56:39Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:56:39Z", "vendor" => "morefun"} [2026-08-21 12:56:40.126] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:56:40.126] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:56:40.126] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:56:40.127] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=865.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-08-21 12:56:40.128] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms queue=0.1ms idle=740.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-08-21 12:56:40.128] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:56:40.130] [DEBUG] QUERY OK source="tms_terminals" db=1.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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:56:40.131] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:56:40.154] [DEBUG] QUERY OK source="tms_terminals" db=22.8ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:56:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:56:40.154] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:56:40.156] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=23.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:56:40.218] [DEBUG] QUERY OK source="tms_terminals" db=61.3ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:56:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:56:40.260] [DEBUG] QUERY OK db=40.6ms queue=0.1ms idle=62.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ca8a8dad-13d5-40e2-b225-d3c7d37a1d44", "2026-08-21T12:56:39Z", ~N[2026-08-21 12:56:40], ~N[2026-08-21 12:56:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:56:40.260] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78093, oid: "ca8a8dad-13d5-40e2-b225-d3c7d37a1d44", upload_time: "2026-08-21T12:56:39Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:40], updated_at: ~N[2026-08-21 12:56:40]} [2026-08-21 12:56:40.260] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:56:39Z", "value" => "morefun"} [2026-08-21 12:56:40.301] [DEBUG] QUERY OK db=40.6ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "morefun", "vendor", 78093, ~N[2026-08-21 12:56:40], ~N[2026-08-21 12:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:40.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794685, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:40], updated_at: ~N[2026-08-21 12:56:40]}} [2026-08-21 12:56:40.302] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:56:39Z", "value" => "kiosk_launcher"} [2026-08-21 12:56:40.396] [DEBUG] QUERY OK db=52.7ms queue=41.5ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "kiosk_launcher", "model", 78093, ~N[2026-08-21 12:56:40], ~N[2026-08-21 12:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:40.396] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794688, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:40], updated_at: ~N[2026-08-21 12:56:40]}} [2026-08-21 12:56:40.397] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:56:39Z", "value" => "1.0"} [2026-08-21 12:56:40.460] [DEBUG] QUERY OK db=62.8ms queue=0.4ms idle=95.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "1.0", "app_version", 78093, ~N[2026-08-21 12:56:40], ~N[2026-08-21 12:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:40.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794690, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:40], updated_at: ~N[2026-08-21 12:56:40]}} [2026-08-21 12:56:40.461] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:56:39Z", "value" => "13"} [2026-08-21 12:56:40.548] [DEBUG] QUERY OK db=86.6ms idle=64.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "13", "android_version", 78093, ~N[2026-08-21 12:56:40], ~N[2026-08-21 12:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:40.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794692, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:40], updated_at: ~N[2026-08-21 12:56:40]}} [2026-08-21 12:56:40.548] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:56:39Z", "value" => "873"} [2026-08-21 12:56:40.600] [DEBUG] QUERY OK db=51.7ms idle=88.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "873", "ram_free_mb", 78093, ~N[2026-08-21 12:56:40], ~N[2026-08-21 12:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:40.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794694, itemkey: "ram_free_mb", value: "873", timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:40], updated_at: ~N[2026-08-21 12:56:40]}} [2026-08-21 12:56:40.600] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:56:39Z", "value" => "WIFI"} [2026-08-21 12:56:40.743] [DEBUG] QUERY OK db=142.1ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "WIFI", "network_type", 78093, ~N[2026-08-21 12:56:40], ~N[2026-08-21 12:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:40.743] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794696, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:40], updated_at: ~N[2026-08-21 12:56:40]}} [2026-08-21 12:56:40.743] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:56:39Z", "value" => "true"} [2026-08-21 12:56:40.866] [DEBUG] QUERY OK db=122.6ms queue=0.1ms idle=143.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "true", "kiosk_active", 78093, ~N[2026-08-21 12:56:40], ~N[2026-08-21 12:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:40.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794698, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:40], updated_at: ~N[2026-08-21 12:56:40]}} [2026-08-21 12:56:40.867] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:56:39Z", "value" => ""} [2026-08-21 12:56:40.941] [DEBUG] QUERY OK db=73.7ms idle=124.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:56:39Z", "sim_operator", 78093, ~N[2026-08-21 12:56:40], ~N[2026-08-21 12:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:40.941] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794700, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:40], updated_at: ~N[2026-08-21 12:56:40]}} [2026-08-21 12:56:40.941] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:56:39Z", "value" => "UNKNOWN"} [2026-08-21 12:56:41.013] [DEBUG] QUERY OK db=71.0ms idle=75.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "UNKNOWN", "sim_number", 78093, ~N[2026-08-21 12:56:40], ~N[2026-08-21 12:56:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:41.013] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794702, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:40], updated_at: ~N[2026-08-21 12:56:40]}} [2026-08-21 12:56:41.013] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:56:39Z", "value" => "UNKNOWN"} [2026-08-21 12:56:41.068] [DEBUG] QUERY OK db=54.5ms idle=73.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "UNKNOWN", "sim_iccid", 78093, ~N[2026-08-21 12:56:41], ~N[2026-08-21 12:56:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:41.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794704, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:41], updated_at: ~N[2026-08-21 12:56:41]}} [2026-08-21 12:56:41.070] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:56:39Z", "value" => "UNKNOWN"} [2026-08-21 12:56:41.130] [DEBUG] QUERY OK db=60.0ms idle=57.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "UNKNOWN", "sim_imsi", 78093, ~N[2026-08-21 12:56:41], ~N[2026-08-21 12:56:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:41.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794706, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:41], updated_at: ~N[2026-08-21 12:56:41]}} [2026-08-21 12:56:41.130] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:56:39Z", "value" => "UNKNOWN"} [2026-08-21 12:56:41.172] [DEBUG] QUERY OK db=40.9ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "UNKNOWN", "sim_iccid2", 78093, ~N[2026-08-21 12:56:41], ~N[2026-08-21 12:56:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:41.172] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794708, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:41], updated_at: ~N[2026-08-21 12:56:41]}} [2026-08-21 12:56:41.172] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:56:39Z", "value" => "UNKNOWN"} [2026-08-21 12:56:41.230] [DEBUG] QUERY OK db=57.6ms idle=42.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "UNKNOWN", "sim_imsi2", 78093, ~N[2026-08-21 12:56:41], ~N[2026-08-21 12:56:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:41.234] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794710, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:41], updated_at: ~N[2026-08-21 12:56:41]}} [2026-08-21 12:56:41.234] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:56:39Z", "value" => "37"} [2026-08-21 12:56:41.291] [DEBUG] QUERY OK db=53.2ms idle=66.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "37", "data_usage_mb", 78093, ~N[2026-08-21 12:56:41], ~N[2026-08-21 12:56:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:41.296] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794712, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:41], updated_at: ~N[2026-08-21 12:56:41]}} [2026-08-21 12:56:41.296] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:56:39Z", "value" => "0"} [2026-08-21 12:56:41.373] [DEBUG] QUERY OK db=76.0ms idle=22.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "0", "mobile_data_mb", 78093, ~N[2026-08-21 12:56:41], ~N[2026-08-21 12:56:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:41.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794714, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:41], updated_at: ~N[2026-08-21 12:56:41]}} [2026-08-21 12:56:41.374] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:56:39Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:56:41.435] [DEBUG] QUERY OK db=58.0ms queue=0.1ms idle=83.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:56:39Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78093, ~N[2026-08-21 12:56:41], ~N[2026-08-21 12:56:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:41.437] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794716, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:56:39Z", message: nil, status_log_id: 78093, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:41], updated_at: ~N[2026-08-21 12:56:41]}} [2026-08-21 12:56:46.042] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:56:46.042] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:56:45Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:56:45Z","value":"50"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:56:45Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:56:45Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:56:45Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:56:45Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:56:45Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:56:45Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:56:45Z","vendor":"MoreFun"} [2026-08-21 12:56:46.043] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:56:45Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:56:45Z", "value" => "50"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:56:45Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:56:45Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:56:45Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:56:45Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:56:45Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:56:45Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:56:45Z", "vendor" => "MoreFun"} [2026-08-21 12:56:46.043] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:56:46.043] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:56:46.043] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:56:46.047] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms queue=1.0ms idle=1653.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-08-21 12:56:46.048] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=755.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 12:56:46.054] [DEBUG] QUERY OK source="parameter_template_values" db=4.2ms queue=0.8ms idle=1.9ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:56:46.061] [DEBUG] QUERY OK source="parameter_definitions" db=1.3ms queue=4.7ms idle=6.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-08-21 12:56:46.063] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms queue=0.3ms idle=7.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-08-21 12:56:46.104] [DEBUG] QUERY OK source="pos_merchant" db=40.5ms idle=2.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:56:46.107] [DEBUG] QUERY OK db=2.1ms queue=0.9ms idle=1716.1ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["626165170000000"] [2026-08-21 12:56:46.107] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:56:46.108] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=45.4ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:56:46.111] [DEBUG] QUERY OK source="address" db=2.3ms idle=4.7ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:56:46.112] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:56:46.114] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:56:46.163] [DEBUG] QUERY OK db=47.3ms idle=6.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "6e5847c7b8b55c259b9b61d0f31b8ac10703da1892301cf0eda5c3b6db2558b8", 5122, 938, ~U[2026-08-21 12:56:46Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:56:46], ~N[2026-08-21 12:56:46]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:56:46.163] [INFO ] AutoPushService: Created push log 49138 for MF919 params.zip [2026-08-21 12:56:46.163] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 5122, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:56:46.163] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:56:46.164] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:56:46.169] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms queue=0.1ms idle=56.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-08-21 12:56:46.175] [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-08-21 12:56:46.232] [DEBUG] QUERY OK db=55.9ms idle=14.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "2d35337e4b3bf94d35d9e8f48faa6e257bc51dcd48c6b9c82af2829fae21f7d3", 5186, 17947, ~U[2026-08-21 12:56:46Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:56:46], ~N[2026-08-21 12:56:46]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:56:46.233] [INFO ] AutoPushService: Created push log 49140 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:56:46.233] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 5186, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:56:46.235] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:56:46.235] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:56:46.250] [DEBUG] QUERY OK source="config_file_versions" db=14.9ms queue=0.1ms idle=66.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 12:56:46.250] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:56:46.251] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=18.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 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-08-21 12:56:46.252] [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-08-21 12:56:46.253] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:56:46.253] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:56:46.253] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:56:46.255] [DEBUG] QUERY OK source="config_file_versions" db=2.1ms idle=2.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:56:46.256] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:56:46.256] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:56:46.257] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=4.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:56:46.388] [DEBUG] QUERY OK source="tms_terminals" db=87.9ms queue=41.6ms idle=3.4ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["MoreFun", "MF919", ~N[2026-08-21 12:56:46], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:56:46.388] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:56:46.389] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:56:46.389] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:56:46.389] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:56:46.393] [INFO ] Event published: terminal_updated [2026-08-21 12:56:46.417] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=0.4ms idle=115.9ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:56:46], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:56:46.421] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=2.8ms idle=1.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:56:46.439] [DEBUG] QUERY OK source="terminal_group_rules" db=3.5ms queue=0.4ms idle=14.0ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:56:46.439] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:56:46.472] [DEBUG] QUERY OK source="tms_terminals" db=52.1ms queue=2.3ms idle=29.3ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MoreFun", "MF919", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:56:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:56:46.476] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=1.8ms idle=34.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-08-21 12:56:46.479] [DEBUG] QUERY OK source="config_file_versions" db=2.9ms idle=4.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:56:46.480] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=3.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:56:46.480] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:56:46.529] [DEBUG] QUERY OK source="parameter_push_logs" db=48.0ms 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-08-21 12:26:46]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:56:46.529] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:56:46.529] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:56:46.530] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:56:46.533] [DEBUG] QUERY OK source="config_file_versions" db=3.2ms idle=1.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:56:46.534] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:56:46.534] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=4.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:56:46.608] [DEBUG] QUERY OK source="tms_terminals" db=32.2ms queue=40.7ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:56:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:56:46.670] [DEBUG] QUERY OK db=62.2ms queue=0.1ms idle=73.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:56:45Z", ~N[2026-08-21 12:56:46], ~N[2026-08-21 12:56:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:56:46.671] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78095, oid: "organization_id", upload_time: "2026-08-21T12:56:45Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:46], updated_at: ~N[2026-08-21 12:56:46]} [2026-08-21 12:56:46.671] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:56:45Z", "value" => "online"} [2026-08-21 12:56:46.764] [DEBUG] QUERY OK db=92.8ms idle=63.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:56:45Z", "online", "status", 78095, ~N[2026-08-21 12:56:46], ~N[2026-08-21 12:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:46.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794717, itemkey: "status", value: "online", timestamp: "2026-08-21T12:56:45Z", message: "Terminal status update", status_log_id: 78095, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:46], updated_at: ~N[2026-08-21 12:56:46]}} [2026-08-21 12:56:46.765] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:56:46.766] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:56:45Z", "value" => "50"} [2026-08-21 12:56:46.833] [DEBUG] QUERY OK db=66.2ms queue=0.5ms idle=95.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:56:45Z", "50", "battery", 78095, ~N[2026-08-21 12:56:46], ~N[2026-08-21 12:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:46.833] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794719, itemkey: "battery", value: "50", timestamp: "2026-08-21T12:56:45Z", message: "Battery level", status_log_id: 78095, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:46], updated_at: ~N[2026-08-21 12:56:46]}} [2026-08-21 12:56:46.833] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:56:45Z", "value" => "online"} [2026-08-21 12:56:46.937] [DEBUG] QUERY OK db=103.5ms queue=0.3ms idle=69.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:56:45Z", "online", "network", 78095, ~N[2026-08-21 12:56:46], ~N[2026-08-21 12:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:46.938] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794721, itemkey: "network", value: "online", timestamp: "2026-08-21T12:56:45Z", message: "Network connectivity", status_log_id: 78095, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:46], updated_at: ~N[2026-08-21 12:56:46]}} [2026-08-21 12:56:46.938] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:56:46.938] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:56:45Z", "value" => "0"} [2026-08-21 12:56:47.005] [DEBUG] QUERY OK db=66.7ms idle=105.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:56:45Z", "0", "cpu", 78095, ~N[2026-08-21 12:56:46], ~N[2026-08-21 12:56:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:47.005] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794723, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:56:45Z", message: "CPU usage percentage", status_log_id: 78095, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:46], updated_at: ~N[2026-08-21 12:56:46]}} [2026-08-21 12:56:47.006] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:56:45Z", "value" => "1.0.0"} [2026-08-21 12:56:47.055] [DEBUG] QUERY OK db=48.9ms idle=68.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:56:45Z", "1.0.0", "parameter_config", 78095, ~N[2026-08-21 12:56:47], ~N[2026-08-21 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:47.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794725, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:56:45Z", message: "Current parameters version", status_log_id: 78095, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:47], updated_at: ~N[2026-08-21 12:56:47]}} [2026-08-21 12:56:47.056] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:56:45Z", "value" => "1.0.1"} [2026-08-21 12:56:47.121] [DEBUG] QUERY OK db=64.6ms idle=51.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:56:45Z", "1.0.1", "emv_config", 78095, ~N[2026-08-21 12:56:47], ~N[2026-08-21 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:47.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794727, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:56:45Z", message: "Current EMV config version", status_log_id: 78095, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:47], updated_at: ~N[2026-08-21 12:56:47]}} [2026-08-21 12:56:47.122] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:56:45Z", "value" => ""} [2026-08-21 12:56:47.178] [DEBUG] QUERY OK db=50.7ms queue=2.0ms idle=70.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:56:45Z", "keys_config", 78095, ~N[2026-08-21 12:56:47], ~N[2026-08-21 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:47.178] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794729, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:56:45Z", message: "Current keys config version", status_log_id: 78095, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:47], updated_at: ~N[2026-08-21 12:56:47]}} [2026-08-21 12:56:47.178] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:56:45Z", "value" => "3.8.7.3"} [2026-08-21 12:56:47.232] [DEBUG] QUERY OK db=53.1ms idle=57.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:56:45Z", "3.8.7.3", "application", 78095, ~N[2026-08-21 12:56:47], ~N[2026-08-21 12:56:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:56:47.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794731, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:56:45Z", message: "Current application version", status_log_id: 78095, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:56:47], updated_at: ~N[2026-08-21 12:56:47]}} [2026-08-21 12:56:47.232] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:56:46Z"} [2026-08-21 12:56:47.242] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:56:46Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 7, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:57:06.500] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:56:46Z"} [2026-08-21 12:57:06.500] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:56:46Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 8, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:57:06.507] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:56:46Z"} [2026-08-21 12:57:06.507] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:56:46Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 10, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:57:06.706] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch680479455228_20260821125706400","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T12:57:06Z"} [2026-08-21 12:57:06.706] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch680479455228_20260821125706400", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:57:06Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 11, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 54, 56, 48, 52, 55, 57, 52, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:57:09.305] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 12:57:10.223] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:57:10.224] [INFO ] Incoming JSON payload: {"oid":"77a27fc6-ed4c-4166-8707-8d34242f661a","sn":"98251226730001","uploadTime":"2026-08-21T12:57:09Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"ram_free_mb","value":"878","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:57:09Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:57:10.226] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "77a27fc6-ed4c-4166-8707-8d34242f661a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:57:09Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:57:09Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:57:09Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:57:09Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:57:09Z", "value" => "878"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:57:09Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:57:09Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:57:09Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:57:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:57:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:57:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:57:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:57:09Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:57:09Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:57:09Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:57:09Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:57:09Z", "vendor" => "morefun"} [2026-08-21 12:57:10.232] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:57:10.232] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:57:10.232] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:57:10.234] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=835.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-08-21 12:57:10.238] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms idle=776.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-08-21 12:57:10.238] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:57:10.242] [DEBUG] QUERY OK source="tms_terminals" db=3.5ms idle=4.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:57:10.290] [DEBUG] QUERY OK source="tms_terminals" db=3.8ms queue=43.5ms idle=4.2ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["morefun", "kiosk_launcher", ~N[2026-08-21 12:57:10], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:57:10.290] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:57:10.290] [INFO ] Event published: terminal_updated [2026-08-21 12:57:10.290] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:57:10.290] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:57:10.290] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:57:10.292] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.7ms queue=0.2ms idle=48.3ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:57:10], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:57:10.302] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms queue=6.2ms idle=0.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:57:10.310] [DEBUG] QUERY OK source="terminal_group_rules" db=5.2ms queue=2.8ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:57:10.311] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:57:10.380] [DEBUG] QUERY OK source="tms_terminals" db=44.2ms queue=42.5ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "morefun", "kiosk_launcher", nil, nil, nil, nil, ~N[2026-08-21 12:57:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:57:10.380] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:57:10.384] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=1.9ms idle=71.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:57:10.436] [DEBUG] QUERY OK source="tms_terminals" db=45.5ms queue=4.3ms idle=5.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:57:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:57:10.477] [DEBUG] QUERY OK db=41.0ms queue=0.1ms idle=51.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "77a27fc6-ed4c-4166-8707-8d34242f661a", "2026-08-21T12:57:09Z", ~N[2026-08-21 12:57:10], ~N[2026-08-21 12:57:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:57:10.479] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78097, oid: "77a27fc6-ed4c-4166-8707-8d34242f661a", upload_time: "2026-08-21T12:57:09Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:10], updated_at: ~N[2026-08-21 12:57:10]} [2026-08-21 12:57:10.479] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:57:09Z", "value" => "morefun"} [2026-08-21 12:57:10.561] [DEBUG] QUERY OK db=76.6ms queue=0.4ms idle=20.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:09Z", "morefun", "vendor", 78097, ~N[2026-08-21 12:57:10], ~N[2026-08-21 12:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:10.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794733, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:10], updated_at: ~N[2026-08-21 12:57:10]}} [2026-08-21 12:57:10.566] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:57:09Z", "value" => "kiosk_launcher"} [2026-08-21 12:57:10.658] [DEBUG] QUERY OK db=49.1ms queue=42.0ms idle=89.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:09Z", "kiosk_launcher", "model", 78097, ~N[2026-08-21 12:57:10], ~N[2026-08-21 12:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:10.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794735, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:10], updated_at: ~N[2026-08-21 12:57:10]}} [2026-08-21 12:57:10.660] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:57:09Z", "value" => "1.0"} [2026-08-21 12:57:10.709] [DEBUG] QUERY OK db=47.3ms queue=0.6ms idle=99.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:09Z", "1.0", "app_version", 78097, ~N[2026-08-21 12:57:10], ~N[2026-08-21 12:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:10.709] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794737, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:10], updated_at: ~N[2026-08-21 12:57:10]}} [2026-08-21 12:57:10.709] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:57:09Z", "value" => "13"} [2026-08-21 12:57:10.791] [DEBUG] QUERY OK db=81.2ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:09Z", "13", "android_version", 78097, ~N[2026-08-21 12:57:10], ~N[2026-08-21 12:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:10.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794739, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:10], updated_at: ~N[2026-08-21 12:57:10]}} [2026-08-21 12:57:10.791] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:57:09Z", "value" => "878"} [2026-08-21 12:57:10.849] [DEBUG] QUERY OK db=57.2ms idle=83.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:09Z", "878", "ram_free_mb", 78097, ~N[2026-08-21 12:57:10], ~N[2026-08-21 12:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:10.849] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794741, itemkey: "ram_free_mb", value: "878", timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:10], updated_at: ~N[2026-08-21 12:57:10]}} [2026-08-21 12:57:10.849] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:57:09Z", "value" => "WIFI"} [2026-08-21 12:57:10.931] [DEBUG] QUERY OK db=81.4ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:09Z", "WIFI", "network_type", 78097, ~N[2026-08-21 12:57:10], ~N[2026-08-21 12:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:10.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794743, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:10], updated_at: ~N[2026-08-21 12:57:10]}} [2026-08-21 12:57:10.932] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:57:09Z", "value" => "true"} [2026-08-21 12:57:10.995] [DEBUG] QUERY OK db=58.3ms idle=88.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:09Z", "true", "kiosk_active", 78097, ~N[2026-08-21 12:57:10], ~N[2026-08-21 12:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:10.996] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794745, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:10], updated_at: ~N[2026-08-21 12:57:10]}} [2026-08-21 12:57:10.997] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:57:09Z", "value" => ""} [2026-08-21 12:57:11.067] [DEBUG] QUERY OK db=69.2ms idle=66.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:57:09Z", "sim_operator", 78097, ~N[2026-08-21 12:57:10], ~N[2026-08-21 12:57:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:11.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794747, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:10], updated_at: ~N[2026-08-21 12:57:10]}} [2026-08-21 12:57:11.071] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:57:09Z", "value" => "UNKNOWN"} [2026-08-21 12:57:11.175] [DEBUG] QUERY OK db=102.9ms queue=0.3ms idle=76.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:09Z", "UNKNOWN", "sim_number", 78097, ~N[2026-08-21 12:57:11], ~N[2026-08-21 12:57:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:11.175] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794749, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:11], updated_at: ~N[2026-08-21 12:57:11]}} [2026-08-21 12:57:11.175] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:57:09Z", "value" => "UNKNOWN"} [2026-08-21 12:57:11.190] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 12:57:11.246] [DEBUG] QUERY OK db=68.0ms idle=109.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:09Z", "UNKNOWN", "sim_iccid", 78097, ~N[2026-08-21 12:57:11], ~N[2026-08-21 12:57:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:11.246] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794751, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:11], updated_at: ~N[2026-08-21 12:57:11]}} [2026-08-21 12:57:11.246] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:57:09Z", "value" => "UNKNOWN"} [2026-08-21 12:57:11.334] [DEBUG] QUERY OK db=87.1ms idle=71.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:09Z", "UNKNOWN", "sim_imsi", 78097, ~N[2026-08-21 12:57:11], ~N[2026-08-21 12:57:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:11.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794753, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:11], updated_at: ~N[2026-08-21 12:57:11]}} [2026-08-21 12:57:11.335] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:57:09Z", "value" => "UNKNOWN"} [2026-08-21 12:57:11.405] [DEBUG] QUERY OK db=69.6ms idle=91.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:09Z", "UNKNOWN", "sim_iccid2", 78097, ~N[2026-08-21 12:57:11], ~N[2026-08-21 12:57:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:11.405] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794754, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:11], updated_at: ~N[2026-08-21 12:57:11]}} [2026-08-21 12:57:11.408] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:57:09Z", "value" => "UNKNOWN"} [2026-08-21 12:57:11.449] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 12:57:11.500] [DEBUG] QUERY OK db=91.0ms idle=74.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:09Z", "UNKNOWN", "sim_imsi2", 78097, ~N[2026-08-21 12:57:11], ~N[2026-08-21 12:57:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:11.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794756, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:11], updated_at: ~N[2026-08-21 12:57:11]}} [2026-08-21 12:57:11.503] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:57:09Z", "value" => "37"} [2026-08-21 12:57:11.589] [DEBUG] QUERY OK db=84.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-08-21T12:57:09Z", "37", "data_usage_mb", 78097, ~N[2026-08-21 12:57:11], ~N[2026-08-21 12:57:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:11.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794758, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:11], updated_at: ~N[2026-08-21 12:57:11]}} [2026-08-21 12:57:11.589] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:57:09Z", "value" => "0"} [2026-08-21 12:57:11.626] [DEBUG] QUERY OK db=36.3ms idle=89.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:09Z", "0", "mobile_data_mb", 78097, ~N[2026-08-21 12:57:11], ~N[2026-08-21 12:57:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:11.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794760, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:11], updated_at: ~N[2026-08-21 12:57:11]}} [2026-08-21 12:57:11.626] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:57:09Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:57:11.669] [DEBUG] QUERY OK db=35.7ms idle=44.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:09Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78097, ~N[2026-08-21 12:57:11], ~N[2026-08-21 12:57:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:11.672] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794762, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:57:09Z", message: nil, status_log_id: 78097, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:11], updated_at: ~N[2026-08-21 12:57:11]}} [2026-08-21 12:57:12.330] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 12:57:26.500] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:56:46Z"} [2026-08-21 12:57:26.501] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:56:46Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 9, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:57:35.385] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:57:35.386] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T12:57:35Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T12:57:35Z","value":"50"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T12:57:35Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T12:57:35Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T12:57:35Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T12:57:35Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T12:57:35Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T12:57:35Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T12:57:35Z","vendor":"MoreFun"} [2026-08-21 12:57:35.387] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:57:35Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:57:35Z", "value" => "50"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:57:35Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:57:35Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:57:35Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:57:35Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:57:35Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:57:35Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:57:35Z", "vendor" => "MoreFun"} [2026-08-21 12:57:35.388] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:57:35.388] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:57:35.388] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 12:57:35.393] [DEBUG] QUERY OK source="parameter_templates" db=4.0ms idle=1819.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 12:57:35.396] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms queue=0.1ms idle=821.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-08-21 12:57:35.399] [DEBUG] QUERY OK source="parameter_template_values" db=1.2ms queue=1.2ms idle=3.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-08-21 12:57:35.403] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=1.7ms idle=4.1ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:57:35.407] [DEBUG] QUERY OK source="pos_terminal" db=1.3ms queue=0.4ms idle=7.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:57:35.444] [DEBUG] QUERY OK source="pos_merchant" db=36.5ms idle=4.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:57:35.449] [DEBUG] QUERY OK db=2.1ms queue=1.8ms idle=47.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 ["626165170000000"] [2026-08-21 12:57:35.452] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:57:35.453] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms queue=0.1ms idle=44.8ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:57:35.453] [DEBUG] QUERY OK source="address" db=0.4ms idle=8.9ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:57:35.455] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 12:57:35.460] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 12:57:35.511] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-08-21 12:57:35.524] [DEBUG] QUERY OK db=63.5ms idle=7.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "9bfb3d36d2543691043cb1f6f74abf63e0b68e5ca3064083525a27a87d0f0434", 5474, 938, ~U[2026-08-21 12:57:35Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:57:35], ~N[2026-08-21 12:57:35]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:57:35.525] [INFO ] AutoPushService: Created push log 49142 for MF919 params.zip [2026-08-21 12:57:35.528] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 5474, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:57:35.529] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:57:35.529] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 12:57:35.535] [DEBUG] QUERY OK source="config_file_versions" db=2.4ms idle=79.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 12:57:35.548] [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-08-21 12:57:35.607] [DEBUG] QUERY OK db=53.8ms idle=28.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d5066f4a53e31fda10f798fd174c55f137af14a57e2304e24f267bfc038a5304", 453, 17947, ~U[2026-08-21 12:57:35Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:57:35], ~N[2026-08-21 12:57:35]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:57:35.607] [INFO ] AutoPushService: Created push log 49144 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:57:35.607] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 453, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:57:35.607] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 12:57:35.608] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 12:57:35.611] [DEBUG] QUERY OK source="config_file_versions" db=3.1ms queue=0.1ms idle=33.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-08-21 12:57:35.611] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 12:57:35.613] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:57:35.614] [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-08-21 12:57:35.618] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:57:35.618] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:57:35.618] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:57:35.620] [DEBUG] QUERY OK source="config_file_versions" db=2.0ms idle=6.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:57:35.621] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:57:35.621] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 12:57:35.624] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms idle=7.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 12:57:35.690] [DEBUG] QUERY OK source="tms_terminals" db=23.9ms queue=41.0ms idle=4.3ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["MoreFun", "MF919", ~N[2026-08-21 12:57:35], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:57:35.691] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:57:35.694] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:57:35.695] [INFO ] Event published: terminal_updated [2026-08-21 12:57:35.694] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:57:35.700] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:57:35.710] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.8ms queue=5.7ms idle=72.1ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:57:35], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:57:35.712] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms queue=0.1ms idle=20.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:57:35.716] [DEBUG] QUERY OK source="terminal_group_rules" db=3.7ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:57:35.716] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:57:35.764] [DEBUG] QUERY OK source="tms_terminals" db=8.6ms queue=44.7ms idle=5.5ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MoreFun", "MF919", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 12:57:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:57:35.766] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=48.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`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-08-21 12:57:35.768] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=2.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:57:35.771] [DEBUG] QUERY OK source="config_file_versions" db=2.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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:57:35.771] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:57:35.820] [DEBUG] QUERY OK source="parameter_push_logs" db=47.9ms idle=3.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-08-21 12:27:35]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:57:35.820] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:57:35.820] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 12:57:35.824] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:57:35.825] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=4.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:57:35.825] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:57:35.829] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:57:35.928] [DEBUG] QUERY OK source="tms_terminals" db=54.8ms queue=41.4ms idle=7.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:57:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:57:35.958] [DEBUG] QUERY OK db=29.2ms queue=0.1ms idle=100.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T12:57:35Z", ~N[2026-08-21 12:57:35], ~N[2026-08-21 12:57:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:57:35.959] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78100, oid: "organization_id", upload_time: "2026-08-21T12:57:35Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:35], updated_at: ~N[2026-08-21 12:57:35]} [2026-08-21 12:57:35.959] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T12:57:35Z", "value" => "online"} [2026-08-21 12:57:36.152] [DEBUG] QUERY OK db=193.2ms idle=30.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T12:57:35Z", "online", "status", 78100, ~N[2026-08-21 12:57:35], ~N[2026-08-21 12:57:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:36.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794766, itemkey: "status", value: "online", timestamp: "2026-08-21T12:57:35Z", message: "Terminal status update", status_log_id: 78100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:35], updated_at: ~N[2026-08-21 12:57:35]}} [2026-08-21 12:57:36.153] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 12:57:36.155] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T12:57:35Z", "value" => "50"} [2026-08-21 12:57:36.192] [DEBUG] QUERY OK db=36.5ms idle=196.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T12:57:35Z", "50", "battery", 78100, ~N[2026-08-21 12:57:36], ~N[2026-08-21 12:57:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:36.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794768, itemkey: "battery", value: "50", timestamp: "2026-08-21T12:57:35Z", message: "Battery level", status_log_id: 78100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:36], updated_at: ~N[2026-08-21 12:57:36]}} [2026-08-21 12:57:36.192] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T12:57:35Z", "value" => "online"} [2026-08-21 12:57:36.245] [DEBUG] QUERY OK db=52.8ms idle=40.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T12:57:35Z", "online", "network", 78100, ~N[2026-08-21 12:57:36], ~N[2026-08-21 12:57:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:36.246] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794770, itemkey: "network", value: "online", timestamp: "2026-08-21T12:57:35Z", message: "Network connectivity", status_log_id: 78100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:36], updated_at: ~N[2026-08-21 12:57:36]}} [2026-08-21 12:57:36.246] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 12:57:36.246] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T12:57:35Z", "value" => "0"} [2026-08-21 12:57:36.293] [DEBUG] QUERY OK db=41.1ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T12:57:35Z", "0", "cpu", 78100, ~N[2026-08-21 12:57:36], ~N[2026-08-21 12:57:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:36.293] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794772, itemkey: "cpu", value: "0", timestamp: "2026-08-21T12:57:35Z", message: "CPU usage percentage", status_log_id: 78100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:36], updated_at: ~N[2026-08-21 12:57:36]}} [2026-08-21 12:57:36.293] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T12:57:35Z", "value" => "1.0.0"} [2026-08-21 12:57:36.330] [DEBUG] QUERY OK db=36.2ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T12:57:35Z", "1.0.0", "parameter_config", 78100, ~N[2026-08-21 12:57:36], ~N[2026-08-21 12:57:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:36.330] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794774, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T12:57:35Z", message: "Current parameters version", status_log_id: 78100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:36], updated_at: ~N[2026-08-21 12:57:36]}} [2026-08-21 12:57:36.330] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T12:57:35Z", "value" => "1.0.1"} [2026-08-21 12:57:36.386] [DEBUG] QUERY OK db=50.8ms queue=0.3ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T12:57:35Z", "1.0.1", "emv_config", 78100, ~N[2026-08-21 12:57:36], ~N[2026-08-21 12:57:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:36.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794776, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T12:57:35Z", message: "Current EMV config version", status_log_id: 78100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:36], updated_at: ~N[2026-08-21 12:57:36]}} [2026-08-21 12:57:36.389] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T12:57:35Z", "value" => ""} [2026-08-21 12:57:36.472] [DEBUG] QUERY OK db=40.6ms queue=41.8ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T12:57:35Z", "keys_config", 78100, ~N[2026-08-21 12:57:36], ~N[2026-08-21 12:57:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:36.472] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794778, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T12:57:35Z", message: "Current keys config version", status_log_id: 78100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:36], updated_at: ~N[2026-08-21 12:57:36]}} [2026-08-21 12:57:36.473] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T12:57:35Z", "value" => "3.8.7.3"} [2026-08-21 12:57:36.576] [DEBUG] QUERY OK db=102.2ms idle=87.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T12:57:35Z", "3.8.7.3", "application", 78100, ~N[2026-08-21 12:57:36], ~N[2026-08-21 12:57:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:36.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794780, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T12:57:35Z", message: "Current application version", status_log_id: 78100, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:36], updated_at: ~N[2026-08-21 12:57:36]}} [2026-08-21 12:57:36.576] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:57:35Z"} [2026-08-21 12:57:36.579] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:57:35Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 14, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:57:40.538] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:57:40.539] [INFO ] Incoming JSON payload: {"oid":"a17861f2-b37a-43bd-b254-9f5b52e593b9","sn":"98251226730001","uploadTime":"2026-08-21T12:57:39Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"ram_free_mb","value":"881","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:57:39Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:57:40.542] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a17861f2-b37a-43bd-b254-9f5b52e593b9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:57:39Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:57:39Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:57:39Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:57:39Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:57:39Z", "value" => "881"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:57:39Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:57:39Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:57:39Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:57:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:57:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:57:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:57:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:57:39Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:57:39Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:57:39Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:57:39Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:57:39Z", "vendor" => "morefun"} [2026-08-21 12:57:40.542] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:57:40.542] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:57:40.542] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:57:40.544] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.6ms idle=949.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 12:57:40.545] [DEBUG] QUERY OK source="parameter_templates" db=0.2ms idle=145.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-08-21 12:57:40.545] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:57:40.548] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:57:40.570] [DEBUG] QUERY OK source="tms_terminals" db=19.0ms idle=6.3ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["morefun", "kiosk_launcher", ~N[2026-08-21 12:57:40], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 12:57:40.570] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:57:40.570] [INFO ] Event published: terminal_updated [2026-08-21 12:57:40.571] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 12:57:40.571] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 12:57:40.571] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 12:57:40.572] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms idle=22.5ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 12:57:40], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 12:57:40.575] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 12:57:40.577] [DEBUG] QUERY OK source="terminal_group_rules" db=1.3ms idle=1.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 12:57:40.577] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 12:57:40.658] [DEBUG] QUERY OK source="tms_terminals" db=42.9ms queue=42.1ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "morefun", "kiosk_launcher", nil, nil, nil, nil, ~N[2026-08-21 12:57:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:57:40.658] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:57:40.660] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=63.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:57:40.711] [DEBUG] QUERY OK source="tms_terminals" db=49.6ms queue=0.8ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:57:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:57:40.752] [DEBUG] QUERY OK db=40.8ms idle=51.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a17861f2-b37a-43bd-b254-9f5b52e593b9", "2026-08-21T12:57:39Z", ~N[2026-08-21 12:57:40], ~N[2026-08-21 12:57:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:57:40.753] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78101, oid: "a17861f2-b37a-43bd-b254-9f5b52e593b9", upload_time: "2026-08-21T12:57:39Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:40], updated_at: ~N[2026-08-21 12:57:40]} [2026-08-21 12:57:40.753] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:57:39Z", "value" => "morefun"} [2026-08-21 12:57:40.804] [DEBUG] QUERY OK db=50.9ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "morefun", "vendor", 78101, ~N[2026-08-21 12:57:40], ~N[2026-08-21 12:57:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:40.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794781, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:40], updated_at: ~N[2026-08-21 12:57:40]}} [2026-08-21 12:57:40.805] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:57:39Z", "value" => "kiosk_launcher"} [2026-08-21 12:57:40.888] [DEBUG] QUERY OK db=40.3ms queue=42.3ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "kiosk_launcher", "model", 78101, ~N[2026-08-21 12:57:40], ~N[2026-08-21 12:57:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:40.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794783, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:40], updated_at: ~N[2026-08-21 12:57:40]}} [2026-08-21 12:57:40.888] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:57:39Z", "value" => "1.0"} [2026-08-21 12:57:40.934] [DEBUG] QUERY OK db=45.3ms queue=0.1ms idle=84.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "1.0", "app_version", 78101, ~N[2026-08-21 12:57:40], ~N[2026-08-21 12:57:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:40.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794785, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:40], updated_at: ~N[2026-08-21 12:57:40]}} [2026-08-21 12:57:40.935] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:57:39Z", "value" => "13"} [2026-08-21 12:57:40.986] [DEBUG] QUERY OK db=51.2ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "13", "android_version", 78101, ~N[2026-08-21 12:57:40], ~N[2026-08-21 12:57:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:40.987] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794787, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:40], updated_at: ~N[2026-08-21 12:57:40]}} [2026-08-21 12:57:40.987] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:57:39Z", "value" => "881"} [2026-08-21 12:57:41.020] [DEBUG] QUERY OK db=32.9ms idle=53.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "881", "ram_free_mb", 78101, ~N[2026-08-21 12:57:40], ~N[2026-08-21 12:57:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:41.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794789, itemkey: "ram_free_mb", value: "881", timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:40], updated_at: ~N[2026-08-21 12:57:40]}} [2026-08-21 12:57:41.021] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:57:39Z", "value" => "WIFI"} [2026-08-21 12:57:41.103] [DEBUG] QUERY OK db=82.2ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "WIFI", "network_type", 78101, ~N[2026-08-21 12:57:41], ~N[2026-08-21 12:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:41.104] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794791, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:41], updated_at: ~N[2026-08-21 12:57:41]}} [2026-08-21 12:57:41.104] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:57:39Z", "value" => "true"} [2026-08-21 12:57:41.148] [DEBUG] QUERY OK db=44.1ms idle=84.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "true", "kiosk_active", 78101, ~N[2026-08-21 12:57:41], ~N[2026-08-21 12:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:41.149] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794793, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:41], updated_at: ~N[2026-08-21 12:57:41]}} [2026-08-21 12:57:41.149] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:57:39Z", "value" => ""} [2026-08-21 12:57:41.218] [DEBUG] QUERY OK db=68.6ms idle=45.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:57:39Z", "sim_operator", 78101, ~N[2026-08-21 12:57:41], ~N[2026-08-21 12:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:41.218] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794795, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:41], updated_at: ~N[2026-08-21 12:57:41]}} [2026-08-21 12:57:41.218] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:57:39Z", "value" => "UNKNOWN"} [2026-08-21 12:57:41.272] [DEBUG] QUERY OK db=53.1ms idle=70.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "UNKNOWN", "sim_number", 78101, ~N[2026-08-21 12:57:41], ~N[2026-08-21 12:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:41.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794797, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:41], updated_at: ~N[2026-08-21 12:57:41]}} [2026-08-21 12:57:41.272] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:57:39Z", "value" => "UNKNOWN"} [2026-08-21 12:57:41.341] [DEBUG] QUERY OK db=68.8ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "UNKNOWN", "sim_iccid", 78101, ~N[2026-08-21 12:57:41], ~N[2026-08-21 12:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:41.341] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794799, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:41], updated_at: ~N[2026-08-21 12:57:41]}} [2026-08-21 12:57:41.342] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:57:39Z", "value" => "UNKNOWN"} [2026-08-21 12:57:41.375] [DEBUG] QUERY OK db=33.1ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "UNKNOWN", "sim_imsi", 78101, ~N[2026-08-21 12:57:41], ~N[2026-08-21 12:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:41.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794801, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:41], updated_at: ~N[2026-08-21 12:57:41]}} [2026-08-21 12:57:41.379] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:57:39Z", "value" => "UNKNOWN"} [2026-08-21 12:57:41.440] [DEBUG] QUERY OK db=60.1ms idle=15.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "UNKNOWN", "sim_iccid2", 78101, ~N[2026-08-21 12:57:41], ~N[2026-08-21 12:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:41.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794803, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:41], updated_at: ~N[2026-08-21 12:57:41]}} [2026-08-21 12:57:41.440] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:57:39Z", "value" => "UNKNOWN"} [2026-08-21 12:57:41.494] [DEBUG] QUERY OK db=50.3ms idle=68.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "UNKNOWN", "sim_imsi2", 78101, ~N[2026-08-21 12:57:41], ~N[2026-08-21 12:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:41.494] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794805, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:41], updated_at: ~N[2026-08-21 12:57:41]}} [2026-08-21 12:57:41.494] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:57:39Z", "value" => "37"} [2026-08-21 12:57:41.586] [DEBUG] QUERY OK db=91.8ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "37", "data_usage_mb", 78101, ~N[2026-08-21 12:57:41], ~N[2026-08-21 12:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:41.587] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794807, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:41], updated_at: ~N[2026-08-21 12:57:41]}} [2026-08-21 12:57:41.587] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:57:39Z", "value" => "0"} [2026-08-21 12:57:41.639] [DEBUG] QUERY OK db=51.6ms idle=93.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "0", "mobile_data_mb", 78101, ~N[2026-08-21 12:57:41], ~N[2026-08-21 12:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:41.639] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794809, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:41], updated_at: ~N[2026-08-21 12:57:41]}} [2026-08-21 12:57:41.640] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:57:39Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:57:41.700] [DEBUG] QUERY OK db=59.6ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:57:39Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78101, ~N[2026-08-21 12:57:41], ~N[2026-08-21 12:57:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:41.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794810, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:57:39Z", message: nil, status_log_id: 78101, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:41], updated_at: ~N[2026-08-21 12:57:41]}} [2026-08-21 12:57:55.653] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 12:57:55.653] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T16:57:53Z","org.device":[{"itemkey":"battery","value":40,"timestamp":"2026-08-21T16:57:53Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T16:57:53Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T16:57:53Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T16:57:53Z","message":""}]} [2026-08-21 12:57:55.654] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T16:57:53Z", "value" => 40}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T16:57:53Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T16:57:53Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T16:57:53Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T16:57:53Z"} [2026-08-21 12:57:55.654] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:57:55.655] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=356.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:57:55.656] [INFO ] Terminal updated: 61250415798001 [2026-08-21 12:57:55.696] [DEBUG] QUERY OK source="tms_terminals" db=38.9ms queue=0.6ms idle=21.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:57:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:57:55.697] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=40.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:57:55.746] [DEBUG] QUERY OK source="tms_terminals" db=48.6ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:57:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:57:55.780] [DEBUG] QUERY OK db=33.3ms idle=49.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T16:57:53Z", ~N[2026-08-21 12:57:55], ~N[2026-08-21 12:57:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:57:55.780] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78103, oid: "org-id-placeholder", upload_time: "2026-08-21T16:57:53Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:55], updated_at: ~N[2026-08-21 12:57:55]} [2026-08-21 12:57:55.780] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T16:57:53Z", "value" => 40} [2026-08-21 12:57:55.837] [DEBUG] QUERY OK db=55.7ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:57:53Z", "40", "battery", 78103, ~N[2026-08-21 12:57:55], ~N[2026-08-21 12:57:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:55.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794813, itemkey: "battery", value: "40", timestamp: "2026-08-21T16:57:53Z", message: nil, status_log_id: 78103, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:55], updated_at: ~N[2026-08-21 12:57:55]}} [2026-08-21 12:57:55.838] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T16:57:53Z", "value" => 50} [2026-08-21 12:57:55.884] [DEBUG] QUERY OK db=46.1ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T16:57:53Z", "50", "memory", 78103, ~N[2026-08-21 12:57:55], ~N[2026-08-21 12:57:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:55.885] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794815, itemkey: "memory", value: "50", timestamp: "2026-08-21T16:57:53Z", message: "Normal", status_log_id: 78103, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:55], updated_at: ~N[2026-08-21 12:57:55]}} [2026-08-21 12:57:55.885] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T16:57:53Z", "value" => 50} [2026-08-21 12:57:55.960] [DEBUG] QUERY OK db=74.7ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:57:53Z", "50", "cpu", 78103, ~N[2026-08-21 12:57:55], ~N[2026-08-21 12:57:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:55.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794817, itemkey: "cpu", value: "50", timestamp: "2026-08-21T16:57:53Z", message: nil, status_log_id: 78103, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:55], updated_at: ~N[2026-08-21 12:57:55]}} [2026-08-21 12:57:55.960] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T16:57:53Z", "value" => "online"} [2026-08-21 12:57:56.032] [DEBUG] QUERY OK db=70.7ms idle=76.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T16:57:53Z", "online", "network", 78103, ~N[2026-08-21 12:57:55], ~N[2026-08-21 12:57:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:57:56.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794819, itemkey: "network", value: "online", timestamp: "2026-08-21T16:57:53Z", message: nil, status_log_id: 78103, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:57:55], updated_at: ~N[2026-08-21 12:57:55]}} [2026-08-21 12:57:56.032] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 12:57:56.032] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T12:57:35Z"} [2026-08-21 12:57:56.032] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:57:35Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 15, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:58:10.665] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:58:10.665] [INFO ] Incoming JSON payload: {"oid":"24943156-dcc9-4ac4-85ab-68bea8110357","sn":"98251226730001","uploadTime":"2026-08-21T12:58:10Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"ram_free_mb","value":"879","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:58:10Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:58:10.666] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "24943156-dcc9-4ac4-85ab-68bea8110357", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:58:10Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:58:10Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:58:10Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:58:10Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:58:10Z", "value" => "879"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:58:10Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:58:10Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:58:10Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:58:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:58:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:58:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:58:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:58:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:58:10Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:58:10Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:58:10Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:58:10Z", "vendor" => "morefun"} [2026-08-21 12:58:10.666] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:58:10.666] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:58:10.666] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:58:10.667] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=968.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-08-21 12:58:10.669] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=912.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-08-21 12:58:10.669] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:58:10.672] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.7ms idle=2.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:58:10.672] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:58:10.696] [DEBUG] QUERY OK source="tms_terminals" db=24.1ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:58:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:58:10.697] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:58:10.698] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.2ms idle=25.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:58:10.733] [DEBUG] QUERY OK source="tms_terminals" db=34.6ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:58:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:58:10.765] [DEBUG] QUERY OK db=31.2ms idle=32.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "24943156-dcc9-4ac4-85ab-68bea8110357", "2026-08-21T12:58:10Z", ~N[2026-08-21 12:58:10], ~N[2026-08-21 12:58:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:58:10.766] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78105, oid: "24943156-dcc9-4ac4-85ab-68bea8110357", upload_time: "2026-08-21T12:58:10Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:10], updated_at: ~N[2026-08-21 12:58:10]} [2026-08-21 12:58:10.766] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:58:10Z", "value" => "morefun"} [2026-08-21 12:58:10.819] [DEBUG] QUERY OK db=53.0ms idle=33.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "morefun", "vendor", 78105, ~N[2026-08-21 12:58:10], ~N[2026-08-21 12:58:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:10.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794821, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:10], updated_at: ~N[2026-08-21 12:58:10]}} [2026-08-21 12:58:10.820] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:58:10Z", "value" => "kiosk_launcher"} [2026-08-21 12:58:10.855] [DEBUG] QUERY OK db=34.3ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "kiosk_launcher", "model", 78105, ~N[2026-08-21 12:58:10], ~N[2026-08-21 12:58:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:10.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794823, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:10], updated_at: ~N[2026-08-21 12:58:10]}} [2026-08-21 12:58:10.855] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:58:10Z", "value" => "1.0"} [2026-08-21 12:58:10.919] [DEBUG] QUERY OK db=63.5ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "1.0", "app_version", 78105, ~N[2026-08-21 12:58:10], ~N[2026-08-21 12:58:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:10.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794825, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:10], updated_at: ~N[2026-08-21 12:58:10]}} [2026-08-21 12:58:10.919] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:58:10Z", "value" => "13"} [2026-08-21 12:58:10.973] [DEBUG] QUERY OK db=53.5ms idle=65.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "13", "android_version", 78105, ~N[2026-08-21 12:58:10], ~N[2026-08-21 12:58:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:10.974] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794827, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:10], updated_at: ~N[2026-08-21 12:58:10]}} [2026-08-21 12:58:10.974] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:58:10Z", "value" => "879"} [2026-08-21 12:58:11.026] [DEBUG] QUERY OK db=52.2ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "879", "ram_free_mb", 78105, ~N[2026-08-21 12:58:10], ~N[2026-08-21 12:58:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:11.028] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794829, itemkey: "ram_free_mb", value: "879", timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:10], updated_at: ~N[2026-08-21 12:58:10]}} [2026-08-21 12:58:11.028] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:58:10Z", "value" => "WIFI"} [2026-08-21 12:58:11.080] [DEBUG] QUERY OK db=51.3ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "WIFI", "network_type", 78105, ~N[2026-08-21 12:58:11], ~N[2026-08-21 12:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:11.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794831, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:11], updated_at: ~N[2026-08-21 12:58:11]}} [2026-08-21 12:58:11.080] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:58:10Z", "value" => "true"} [2026-08-21 12:58:11.119] [DEBUG] QUERY OK db=38.0ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "true", "kiosk_active", 78105, ~N[2026-08-21 12:58:11], ~N[2026-08-21 12:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:11.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794833, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:11], updated_at: ~N[2026-08-21 12:58:11]}} [2026-08-21 12:58:11.119] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:58:10Z", "value" => ""} [2026-08-21 12:58:11.185] [DEBUG] QUERY OK db=65.7ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:58:10Z", "sim_operator", 78105, ~N[2026-08-21 12:58:11], ~N[2026-08-21 12:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:11.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794835, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:11], updated_at: ~N[2026-08-21 12:58:11]}} [2026-08-21 12:58:11.186] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:58:10Z", "value" => "UNKNOWN"} [2026-08-21 12:58:11.234] [DEBUG] QUERY OK db=47.6ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "UNKNOWN", "sim_number", 78105, ~N[2026-08-21 12:58:11], ~N[2026-08-21 12:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:11.235] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794837, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:11], updated_at: ~N[2026-08-21 12:58:11]}} [2026-08-21 12:58:11.235] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:58:10Z", "value" => "UNKNOWN"} [2026-08-21 12:58:11.309] [DEBUG] QUERY OK db=73.2ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "UNKNOWN", "sim_iccid", 78105, ~N[2026-08-21 12:58:11], ~N[2026-08-21 12:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:11.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794839, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:11], updated_at: ~N[2026-08-21 12:58:11]}} [2026-08-21 12:58:11.309] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:58:10Z", "value" => "UNKNOWN"} [2026-08-21 12:58:11.379] [DEBUG] QUERY OK db=69.5ms idle=75.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "UNKNOWN", "sim_imsi", 78105, ~N[2026-08-21 12:58:11], ~N[2026-08-21 12:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:11.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794841, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:11], updated_at: ~N[2026-08-21 12:58:11]}} [2026-08-21 12:58:11.379] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:58:10Z", "value" => "UNKNOWN"} [2026-08-21 12:58:11.421] [DEBUG] QUERY OK db=40.8ms idle=71.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "UNKNOWN", "sim_iccid2", 78105, ~N[2026-08-21 12:58:11], ~N[2026-08-21 12:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:11.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794843, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:11], updated_at: ~N[2026-08-21 12:58:11]}} [2026-08-21 12:58:11.421] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:58:10Z", "value" => "UNKNOWN"} [2026-08-21 12:58:11.492] [DEBUG] QUERY OK db=69.6ms queue=0.2ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "UNKNOWN", "sim_imsi2", 78105, ~N[2026-08-21 12:58:11], ~N[2026-08-21 12:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:11.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794845, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:11], updated_at: ~N[2026-08-21 12:58:11]}} [2026-08-21 12:58:11.493] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:58:10Z", "value" => "37"} [2026-08-21 12:58:11.569] [DEBUG] QUERY OK db=76.1ms idle=72.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "37", "data_usage_mb", 78105, ~N[2026-08-21 12:58:11], ~N[2026-08-21 12:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:11.569] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794847, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:11], updated_at: ~N[2026-08-21 12:58:11]}} [2026-08-21 12:58:11.570] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:58:10Z", "value" => "0"} [2026-08-21 12:58:11.618] [DEBUG] QUERY OK db=47.4ms idle=78.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "0", "mobile_data_mb", 78105, ~N[2026-08-21 12:58:11], ~N[2026-08-21 12:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:11.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794849, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:11], updated_at: ~N[2026-08-21 12:58:11]}} [2026-08-21 12:58:11.620] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:58:10Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:58:11.687] [DEBUG] QUERY OK db=66.6ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:10Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78105, ~N[2026-08-21 12:58:11], ~N[2026-08-21 12:58:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:11.689] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794851, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:58:10Z", message: nil, status_log_id: 78105, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:11], updated_at: ~N[2026-08-21 12:58:11]}} [2026-08-21 12:58:15.893] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:57:35Z"} [2026-08-21 12:58:15.893] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:57:35Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 16, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:58:26.878] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 12:58:26.878] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T04:07:52Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T04:07:52Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T04:07:52Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T04:07:52Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T04:07:52Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T04:07:52Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T04:07:52Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T04:07:52Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T04:07:52Z","vendor":"MoreFun"} [2026-08-21 12:58:26.878] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T04:07:52Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T04:07:52Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T04:07:52Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T04:07:52Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T04:07:52Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T04:07:52Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T04:07:52Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T04:07:52Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T04:07:52Z", "vendor" => "MoreFun"} [2026-08-21 12:58:26.878] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 12:58:26.878] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 12:58:26.878] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 12:58:26.879] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=470.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-08-21 12:58:26.881] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.1ms idle=104.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 12:58:26.882] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms idle=2.1ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:58:26.885] [DEBUG] QUERY OK source="parameter_definitions" db=2.4ms queue=0.4ms idle=1.3ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 12:58:26.892] [DEBUG] QUERY OK source="pos_terminal" db=5.0ms idle=4.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 12:58:26.925] [DEBUG] QUERY OK source="pos_merchant" db=31.6ms queue=0.7ms idle=6.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 12:58:26.927] [DEBUG] QUERY OK db=0.5ms queue=1.2ms idle=1514.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 ["123451234512345"] [2026-08-21 12:58:26.927] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 12:58:26.930] [DEBUG] QUERY OK source="pos_terminal_data" db=2.0ms idle=35.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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 12:58:26.930] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 12:58:26.932] [DEBUG] QUERY OK source="address" db=2.2ms idle=5.3ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 12:58:26.932] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 12:58:26.935] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 12:58:26.953] [DEBUG] QUERY OK db=15.6ms idle=7.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "0bf9712090860e182f9e1a47d5ff515ec24b6f2d04630c488498520e1894642d", 1252, 932, ~U[2026-08-21 12:58:26Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 12:58:26], ~N[2026-08-21 12:58:26]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 12:58:26.953] [INFO ] AutoPushService: Created push log 49145 for MF919 params.zip [2026-08-21 12:58:26.954] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 1252, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 12:58:26.954] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:58:26.954] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 12:58:26.959] [DEBUG] QUERY OK source="config_file_versions" db=4.8ms idle=22.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-08-21 12:58:26.982] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 12:58:27.018] [DEBUG] QUERY OK db=34.2ms queue=0.5ms idle=30.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "dabf55bc79667d8363c96581603273c1b70012d7b0588271556f1ea581afb98e", 1507, 17947, ~U[2026-08-21 12:58:26Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 12:58:26], ~N[2026-08-21 12:58:26]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 12:58:27.018] [INFO ] AutoPushService: Created push log 49147 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 12:58:27.018] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 1507, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 12:58:27.018] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 12:58:27.018] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 12:58:27.021] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.2ms idle=59.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-08-21 12:58:27.021] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 12:58:27.027] [DEBUG] QUERY OK source="tms_terminals" db=4.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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 12:58:27.027] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 12:58:27.032] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 12:58:27.032] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:58:27.033] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 12:58:27.037] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms queue=0.4ms idle=16.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 12:58:27.038] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:58:27.038] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 12:58:27.041] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.9ms idle=12.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-08-21 12:58:27.042] [INFO ] Terminal updated: 98250623730001 [2026-08-21 12:58:27.083] [DEBUG] QUERY OK source="tms_terminals" db=40.5ms idle=4.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:58:27], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:58:27.084] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=42.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) 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-08-21 12:58:27.087] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms idle=1.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:58:27.091] [DEBUG] QUERY OK source="config_file_versions" db=3.5ms idle=3.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 12:58:27.091] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 12:58:27.117] [DEBUG] QUERY OK source="parameter_push_logs" db=26.0ms idle=4.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 [19, "application", ~N[2026-08-21 12:28:27]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 12:58:27.121] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 12:58:27.121] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 12:58:27.123] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.1ms idle=30.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 12:58:27.128] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.2ms idle=10.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-08-21 12:58:27.130] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 12:58:27.131] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=6.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:58:27.176] [DEBUG] QUERY OK source="tms_terminals" db=42.2ms idle=5.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:58:27], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:58:27.233] [DEBUG] QUERY OK db=56.9ms idle=45.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T04:07:52Z", ~N[2026-08-21 12:58:27], ~N[2026-08-21 12:58:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:58:27.235] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78107, oid: "organization_id", upload_time: "2026-08-21T04:07:52Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:27], updated_at: ~N[2026-08-21 12:58:27]} [2026-08-21 12:58:27.235] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T04:07:52Z", "value" => "online"} [2026-08-21 12:58:27.308] [DEBUG] QUERY OK db=65.9ms queue=0.2ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T04:07:52Z", "online", "status", 78107, ~N[2026-08-21 12:58:27], ~N[2026-08-21 12:58:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:27.308] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794853, itemkey: "status", value: "online", timestamp: "2026-08-21T04:07:52Z", message: "Terminal status update", status_log_id: 78107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:27], updated_at: ~N[2026-08-21 12:58:27]}} [2026-08-21 12:58:27.308] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 12:58:27.308] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T04:07:52Z", "value" => "51"} [2026-08-21 12:58:27.372] [DEBUG] QUERY OK db=63.6ms idle=75.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T04:07:52Z", "51", "battery", 78107, ~N[2026-08-21 12:58:27], ~N[2026-08-21 12:58:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:27.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794855, itemkey: "battery", value: "51", timestamp: "2026-08-21T04:07:52Z", message: "Battery level", status_log_id: 78107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:27], updated_at: ~N[2026-08-21 12:58:27]}} [2026-08-21 12:58:27.373] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T04:07:52Z", "value" => "online"} [2026-08-21 12:58:27.421] [DEBUG] QUERY OK db=48.1ms idle=65.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T04:07:52Z", "online", "network", 78107, ~N[2026-08-21 12:58:27], ~N[2026-08-21 12:58:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:27.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794857, itemkey: "network", value: "online", timestamp: "2026-08-21T04:07:52Z", message: "Network connectivity", status_log_id: 78107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:27], updated_at: ~N[2026-08-21 12:58:27]}} [2026-08-21 12:58:27.421] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 12:58:27.422] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T04:07:52Z", "value" => "0"} [2026-08-21 12:58:27.461] [DEBUG] QUERY OK db=38.6ms idle=49.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T04:07:52Z", "0", "cpu", 78107, ~N[2026-08-21 12:58:27], ~N[2026-08-21 12:58:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:27.461] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794859, itemkey: "cpu", value: "0", timestamp: "2026-08-21T04:07:52Z", message: "CPU usage percentage", status_log_id: 78107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:27], updated_at: ~N[2026-08-21 12:58:27]}} [2026-08-21 12:58:27.462] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T04:07:52Z", "value" => "1.0.0"} [2026-08-21 12:58:27.515] [DEBUG] QUERY OK db=51.8ms queue=0.1ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T04:07:52Z", "1.0.0", "parameter_config", 78107, ~N[2026-08-21 12:58:27], ~N[2026-08-21 12:58:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:27.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794861, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T04:07:52Z", message: "Current parameters version", status_log_id: 78107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:27], updated_at: ~N[2026-08-21 12:58:27]}} [2026-08-21 12:58:27.515] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T04:07:52Z", "value" => "1.0.1"} [2026-08-21 12:58:27.601] [DEBUG] QUERY OK db=85.7ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T04:07:52Z", "1.0.1", "emv_config", 78107, ~N[2026-08-21 12:58:27], ~N[2026-08-21 12:58:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:27.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794862, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T04:07:52Z", message: "Current EMV config version", status_log_id: 78107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:27], updated_at: ~N[2026-08-21 12:58:27]}} [2026-08-21 12:58:27.602] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T04:07:52Z", "value" => ""} [2026-08-21 12:58:27.666] [DEBUG] QUERY OK db=62.4ms queue=0.6ms idle=88.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T04:07:52Z", "keys_config", 78107, ~N[2026-08-21 12:58:27], ~N[2026-08-21 12:58:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:27.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794864, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T04:07:52Z", message: "Current keys config version", status_log_id: 78107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:27], updated_at: ~N[2026-08-21 12:58:27]}} [2026-08-21 12:58:27.667] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T04:07:52Z", "value" => "3.8.7.3"} [2026-08-21 12:58:27.745] [DEBUG] QUERY OK db=78.2ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T04:07:52Z", "3.8.7.3", "application", 78107, ~N[2026-08-21 12:58:27], ~N[2026-08-21 12:58:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:27.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794866, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T04:07:52Z", message: "Current application version", status_log_id: 78107, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:27], updated_at: ~N[2026-08-21 12:58:27]}} [2026-08-21 12:58:27.746] [WARN ] Unexpected async result [2026-08-21 12:58:27.746] [WARN ] Unexpected async result [2026-08-21 12:58:35.895] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T12:57:35Z"} [2026-08-21 12:58:35.895] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T12:57:35Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 17, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 12:58:40.759] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:58:40.759] [INFO ] Incoming JSON payload: {"oid":"a0e72738-7e55-4b2b-8877-3446bb247995","sn":"98251226730001","uploadTime":"2026-08-21T12:58:40Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:58:40Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:58:40Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:58:40Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:58:40Z"},{"itemkey":"ram_free_mb","value":"877","timestamp":"2026-08-21T12:58:40Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:58:40Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:58:40Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:58:40Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:58:40Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:58:40Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:58:40Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:58:40Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:58:40Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T12:58:40Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:58: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:58:40.760] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a0e72738-7e55-4b2b-8877-3446bb247995", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:58:40Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:58:40Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:58:40Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:58:40Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:58:40Z", "value" => "877"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:58:40Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:58:40Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:58:40Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:58:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:58:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:58:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:58:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:58:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:58:40Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:58:40Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:58: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:58:40Z", "vendor" => "morefun"} [2026-08-21 12:58:40.760] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:58:40.760] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:58:40.760] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:58:40.763] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms queue=0.1ms idle=1348.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-08-21 12:58:40.764] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.1ms idle=932.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-08-21 12:58:40.764] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:58:40.772] [DEBUG] QUERY OK source="tms_terminals" db=6.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:58:40.772] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:58:40.810] [DEBUG] QUERY OK source="tms_terminals" db=37.5ms idle=7.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:58:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:58:40.810] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:58:40.811] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=38.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:58:40.865] [DEBUG] QUERY OK source="tms_terminals" db=52.3ms queue=0.6ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:58:40], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:58:40.909] [DEBUG] QUERY OK db=42.9ms idle=31.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a0e72738-7e55-4b2b-8877-3446bb247995", "2026-08-21T12:58:40Z", ~N[2026-08-21 12:58:40], ~N[2026-08-21 12:58:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:58:40.910] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78109, oid: "a0e72738-7e55-4b2b-8877-3446bb247995", upload_time: "2026-08-21T12:58:40Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:40], updated_at: ~N[2026-08-21 12:58:40]} [2026-08-21 12:58:40.910] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:58:40Z", "value" => "morefun"} [2026-08-21 12:58:40.963] [DEBUG] QUERY OK db=50.5ms queue=1.7ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:40Z", "morefun", "vendor", 78109, ~N[2026-08-21 12:58:40], ~N[2026-08-21 12:58:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:40.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794869, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:40], updated_at: ~N[2026-08-21 12:58:40]}} [2026-08-21 12:58:40.963] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:58:40Z", "value" => "kiosk_launcher"} [2026-08-21 12:58:41.044] [DEBUG] QUERY OK db=80.5ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:40Z", "kiosk_launcher", "model", 78109, ~N[2026-08-21 12:58:40], ~N[2026-08-21 12:58:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:41.045] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794871, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:40], updated_at: ~N[2026-08-21 12:58:40]}} [2026-08-21 12:58:41.045] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:58:40Z", "value" => "1.0"} [2026-08-21 12:58:41.116] [DEBUG] QUERY OK db=69.4ms idle=82.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:40Z", "1.0", "app_version", 78109, ~N[2026-08-21 12:58:41], ~N[2026-08-21 12:58:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:41.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794873, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:41], updated_at: ~N[2026-08-21 12:58:41]}} [2026-08-21 12:58:41.116] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:58:40Z", "value" => "13"} [2026-08-21 12:58:41.192] [DEBUG] QUERY OK db=74.0ms queue=1.4ms idle=72.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:40Z", "13", "android_version", 78109, ~N[2026-08-21 12:58:41], ~N[2026-08-21 12:58:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:41.193] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794875, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:41], updated_at: ~N[2026-08-21 12:58:41]}} [2026-08-21 12:58:41.193] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:58:40Z", "value" => "877"} [2026-08-21 12:58:41.239] [DEBUG] QUERY OK db=46.2ms idle=77.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:40Z", "877", "ram_free_mb", 78109, ~N[2026-08-21 12:58:41], ~N[2026-08-21 12:58:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:41.240] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794877, itemkey: "ram_free_mb", value: "877", timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:41], updated_at: ~N[2026-08-21 12:58:41]}} [2026-08-21 12:58:41.241] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:58:40Z", "value" => "WIFI"} [2026-08-21 12:58:41.285] [DEBUG] QUERY OK db=44.0ms decode=0.1ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:40Z", "WIFI", "network_type", 78109, ~N[2026-08-21 12:58:41], ~N[2026-08-21 12:58:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:41.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794879, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:41], updated_at: ~N[2026-08-21 12:58:41]}} [2026-08-21 12:58:41.286] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:58:40Z", "value" => "true"} [2026-08-21 12:58:41.346] [DEBUG] QUERY OK db=59.3ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:40Z", "true", "kiosk_active", 78109, ~N[2026-08-21 12:58:41], ~N[2026-08-21 12:58:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:41.346] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794881, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:41], updated_at: ~N[2026-08-21 12:58:41]}} [2026-08-21 12:58:41.346] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:58:40Z", "value" => ""} [2026-08-21 12:58:41.403] [DEBUG] QUERY OK db=56.4ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:58:40Z", "sim_operator", 78109, ~N[2026-08-21 12:58:41], ~N[2026-08-21 12:58:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:41.403] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794882, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:41], updated_at: ~N[2026-08-21 12:58:41]}} [2026-08-21 12:58:41.403] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:58:40Z", "value" => "UNKNOWN"} [2026-08-21 12:58:41.455] [DEBUG] QUERY OK db=51.0ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:40Z", "UNKNOWN", "sim_number", 78109, ~N[2026-08-21 12:58:41], ~N[2026-08-21 12:58:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:41.455] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794884, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:41], updated_at: ~N[2026-08-21 12:58:41]}} [2026-08-21 12:58:41.455] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:58:40Z", "value" => "UNKNOWN"} [2026-08-21 12:58:41.534] [DEBUG] QUERY OK db=78.7ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:40Z", "UNKNOWN", "sim_iccid", 78109, ~N[2026-08-21 12:58:41], ~N[2026-08-21 12:58:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:41.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794886, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:41], updated_at: ~N[2026-08-21 12:58:41]}} [2026-08-21 12:58:41.535] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:58:40Z", "value" => "UNKNOWN"} [2026-08-21 12:58:41.583] [DEBUG] QUERY OK db=46.6ms idle=81.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:40Z", "UNKNOWN", "sim_imsi", 78109, ~N[2026-08-21 12:58:41], ~N[2026-08-21 12:58:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:41.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794888, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:41], updated_at: ~N[2026-08-21 12:58:41]}} [2026-08-21 12:58:41.583] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:58:40Z", "value" => "UNKNOWN"} [2026-08-21 12:58:42.129] [DEBUG] QUERY OK db=544.9ms idle=49.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:40Z", "UNKNOWN", "sim_iccid2", 78109, ~N[2026-08-21 12:58:41], ~N[2026-08-21 12:58:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:42.129] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794890, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:41], updated_at: ~N[2026-08-21 12:58:41]}} [2026-08-21 12:58:42.129] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:58:40Z", "value" => "UNKNOWN"} [2026-08-21 12:58:42.237] [DEBUG] QUERY OK db=105.0ms idle=292.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:40Z", "UNKNOWN", "sim_imsi2", 78109, ~N[2026-08-21 12:58:42], ~N[2026-08-21 12:58:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:42.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794892, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:42], updated_at: ~N[2026-08-21 12:58:42]}} [2026-08-21 12:58:42.238] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:58:40Z", "value" => "37"} [2026-08-21 12:58:42.296] [DEBUG] QUERY OK db=58.4ms idle=109.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:40Z", "37", "data_usage_mb", 78109, ~N[2026-08-21 12:58:42], ~N[2026-08-21 12:58:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:42.297] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794894, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:42], updated_at: ~N[2026-08-21 12:58:42]}} [2026-08-21 12:58:42.297] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:58:40Z", "value" => "0"} [2026-08-21 12:58:42.364] [DEBUG] QUERY OK db=67.0ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58:40Z", "0", "mobile_data_mb", 78109, ~N[2026-08-21 12:58:42], ~N[2026-08-21 12:58:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:42.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794896, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:42], updated_at: ~N[2026-08-21 12:58:42]}} [2026-08-21 12:58:42.369] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:58: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:58:42.444] [DEBUG] QUERY OK db=70.7ms idle=75.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:58: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78109, ~N[2026-08-21 12:58:42], ~N[2026-08-21 12:58:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:58:42.449] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794898, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:58:40Z", message: nil, status_log_id: 78109, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:58:42], updated_at: ~N[2026-08-21 12:58:42]}} [2026-08-21 12:59:10.866] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:59:10.866] [INFO ] Incoming JSON payload: {"oid":"2a482842-874e-4e0b-a788-34f40a71af23","sn":"98251226730001","uploadTime":"2026-08-21T12:59:10Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:59:10Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:59:10Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:59:10Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:59:10Z"},{"itemkey":"ram_free_mb","value":"880","timestamp":"2026-08-21T12:59:10Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:59:10Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:59:10Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:59:10Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:59:10Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:59:10Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:59:10Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:59:10Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:59:10Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T12:59:10Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:59: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:59:10.869] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2a482842-874e-4e0b-a788-34f40a71af23", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:59:10Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:59:10Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:59:10Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:59:10Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:59:10Z", "value" => "880"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:59:10Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:59:10Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:59:10Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:59:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:59:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:59:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:59:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:59:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:59:10Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:59:10Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:59: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:59:10Z", "vendor" => "morefun"} [2026-08-21 12:59:10.870] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:59:10.870] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:59:10.870] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:59:10.877] [DEBUG] QUERY OK source="parameter_templates" db=6.8ms idle=926.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-08-21 12:59:10.878] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.3ms idle=455.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-08-21 12:59:10.878] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:59:10.881] [DEBUG] QUERY OK source="tms_terminals" db=1.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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:59:10.882] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:59:10.915] [DEBUG] QUERY OK source="tms_terminals" db=32.4ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:59:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:59:10.915] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:59:10.917] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=35.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:59:10.958] [DEBUG] QUERY OK source="tms_terminals" db=41.0ms queue=0.1ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:59:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:59:10.982] [DEBUG] QUERY OK db=22.6ms idle=12.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2a482842-874e-4e0b-a788-34f40a71af23", "2026-08-21T12:59:10Z", ~N[2026-08-21 12:59:10], ~N[2026-08-21 12:59:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:59:10.982] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78111, oid: "2a482842-874e-4e0b-a788-34f40a71af23", upload_time: "2026-08-21T12:59:10Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:10], updated_at: ~N[2026-08-21 12:59:10]} [2026-08-21 12:59:10.982] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:59:10Z", "value" => "morefun"} [2026-08-21 12:59:11.048] [DEBUG] QUERY OK db=65.8ms idle=24.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:10Z", "morefun", "vendor", 78111, ~N[2026-08-21 12:59:10], ~N[2026-08-21 12:59:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:11.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794901, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:10], updated_at: ~N[2026-08-21 12:59:10]}} [2026-08-21 12:59:11.050] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:59:10Z", "value" => "kiosk_launcher"} [2026-08-21 12:59:11.122] [DEBUG] QUERY OK db=71.7ms idle=69.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:10Z", "kiosk_launcher", "model", 78111, ~N[2026-08-21 12:59:11], ~N[2026-08-21 12:59:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:11.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794903, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:11], updated_at: ~N[2026-08-21 12:59:11]}} [2026-08-21 12:59:11.123] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:59:10Z", "value" => "1.0"} [2026-08-21 12:59:11.167] [DEBUG] QUERY OK db=43.0ms idle=75.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:10Z", "1.0", "app_version", 78111, ~N[2026-08-21 12:59:11], ~N[2026-08-21 12:59:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:11.168] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794905, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:11], updated_at: ~N[2026-08-21 12:59:11]}} [2026-08-21 12:59:11.168] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:59:10Z", "value" => "13"} [2026-08-21 12:59:11.246] [DEBUG] QUERY OK db=78.0ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:10Z", "13", "android_version", 78111, ~N[2026-08-21 12:59:11], ~N[2026-08-21 12:59:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:11.246] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794907, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:11], updated_at: ~N[2026-08-21 12:59:11]}} [2026-08-21 12:59:11.247] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:59:10Z", "value" => "880"} [2026-08-21 12:59:11.301] [DEBUG] QUERY OK db=54.3ms idle=79.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:10Z", "880", "ram_free_mb", 78111, ~N[2026-08-21 12:59:11], ~N[2026-08-21 12:59:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:11.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794909, itemkey: "ram_free_mb", value: "880", timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:11], updated_at: ~N[2026-08-21 12:59:11]}} [2026-08-21 12:59:11.302] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:59:10Z", "value" => "WIFI"} [2026-08-21 12:59:11.353] [DEBUG] QUERY OK db=50.4ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:10Z", "WIFI", "network_type", 78111, ~N[2026-08-21 12:59:11], ~N[2026-08-21 12:59:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:11.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794911, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:11], updated_at: ~N[2026-08-21 12:59:11]}} [2026-08-21 12:59:11.353] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:59:10Z", "value" => "true"} [2026-08-21 12:59:11.401] [DEBUG] QUERY OK db=45.2ms queue=0.1ms idle=54.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:10Z", "true", "kiosk_active", 78111, ~N[2026-08-21 12:59:11], ~N[2026-08-21 12:59:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:11.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794913, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:11], updated_at: ~N[2026-08-21 12:59:11]}} [2026-08-21 12:59:11.403] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:59:10Z", "value" => ""} [2026-08-21 12:59:11.471] [DEBUG] QUERY OK db=67.0ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:59:10Z", "sim_operator", 78111, ~N[2026-08-21 12:59:11], ~N[2026-08-21 12:59:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:11.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794915, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:11], updated_at: ~N[2026-08-21 12:59:11]}} [2026-08-21 12:59:11.471] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:59:10Z", "value" => "UNKNOWN"} [2026-08-21 12:59:11.538] [DEBUG] QUERY OK db=66.7ms idle=70.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:10Z", "UNKNOWN", "sim_number", 78111, ~N[2026-08-21 12:59:11], ~N[2026-08-21 12:59:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:11.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794917, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:11], updated_at: ~N[2026-08-21 12:59:11]}} [2026-08-21 12:59:11.539] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:59:10Z", "value" => "UNKNOWN"} [2026-08-21 12:59:11.797] [DEBUG] QUERY OK db=257.6ms idle=68.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:10Z", "UNKNOWN", "sim_iccid", 78111, ~N[2026-08-21 12:59:11], ~N[2026-08-21 12:59:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:11.797] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794919, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:11], updated_at: ~N[2026-08-21 12:59:11]}} [2026-08-21 12:59:11.797] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:59:10Z", "value" => "UNKNOWN"} [2026-08-21 12:59:11.869] [DEBUG] QUERY OK db=71.6ms queue=0.1ms idle=259.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:10Z", "UNKNOWN", "sim_imsi", 78111, ~N[2026-08-21 12:59:11], ~N[2026-08-21 12:59:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:11.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794922, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:11], updated_at: ~N[2026-08-21 12:59:11]}} [2026-08-21 12:59:11.870] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:59:10Z", "value" => "UNKNOWN"} [2026-08-21 12:59:11.933] [DEBUG] QUERY OK db=62.5ms idle=73.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:10Z", "UNKNOWN", "sim_iccid2", 78111, ~N[2026-08-21 12:59:11], ~N[2026-08-21 12:59:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:11.933] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794924, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:11], updated_at: ~N[2026-08-21 12:59:11]}} [2026-08-21 12:59:11.933] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:59:10Z", "value" => "UNKNOWN"} [2026-08-21 12:59:12.017] [DEBUG] QUERY OK db=81.9ms queue=0.2ms idle=65.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:10Z", "UNKNOWN", "sim_imsi2", 78111, ~N[2026-08-21 12:59:11], ~N[2026-08-21 12:59:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:12.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794926, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:11], updated_at: ~N[2026-08-21 12:59:11]}} [2026-08-21 12:59:12.018] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:59:10Z", "value" => "37"} [2026-08-21 12:59:12.066] [DEBUG] QUERY OK db=46.5ms decode=0.4ms idle=67.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:10Z", "37", "data_usage_mb", 78111, ~N[2026-08-21 12:59:12], ~N[2026-08-21 12:59:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:12.066] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794928, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:12], updated_at: ~N[2026-08-21 12:59:12]}} [2026-08-21 12:59:12.067] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:59:10Z", "value" => "0"} [2026-08-21 12:59:12.111] [DEBUG] QUERY OK db=41.7ms queue=0.5ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:10Z", "0", "mobile_data_mb", 78111, ~N[2026-08-21 12:59:12], ~N[2026-08-21 12:59:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:12.111] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794930, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:12], updated_at: ~N[2026-08-21 12:59:12]}} [2026-08-21 12:59:12.113] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:59: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:59:12.203] [DEBUG] QUERY OK db=88.8ms idle=48.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78111, ~N[2026-08-21 12:59:12], ~N[2026-08-21 12:59:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:12.204] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794932, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:59:10Z", message: nil, status_log_id: 78111, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:12], updated_at: ~N[2026-08-21 12:59:12]}} [2026-08-21 12:59:41.233] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 12:59:41.233] [INFO ] Incoming JSON payload: {"oid":"0215a19d-34af-4594-ba23-487b39cb2097","sn":"98251226730001","uploadTime":"2026-08-21T12:59:40Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T12:59:40Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T12:59:40Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T12:59:40Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T12:59:40Z"},{"itemkey":"ram_free_mb","value":"880","timestamp":"2026-08-21T12:59:40Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T12:59:40Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T12:59:40Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T12:59:40Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T12:59:40Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T12:59:40Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T12:59:40Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T12:59:40Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T12:59:40Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T12:59:40Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T12:59: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 12:59:41.234] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0215a19d-34af-4594-ba23-487b39cb2097", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:59:40Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T12:59:40Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:59:40Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:59:40Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:59:40Z", "value" => "880"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:59:40Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:59:40Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:59:40Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:59:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:59:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:59:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:59:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:59:40Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:59:40Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:59:40Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:59: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T12:59:40Z", "vendor" => "morefun"} [2026-08-21 12:59:41.235] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 12:59:41.235] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 12:59:41.235] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 12:59:41.236] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=813.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-08-21 12:59:41.236] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=191.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-08-21 12:59:41.236] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 12:59:41.240] [DEBUG] QUERY OK source="tms_terminals" db=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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 12:59:41.240] [INFO ] Terminal updated: 98251226730001 [2026-08-21 12:59:41.265] [DEBUG] QUERY OK source="tms_terminals" db=24.7ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 12:59:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 12:59:41.265] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 12:59:41.267] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 12:59:41.312] [DEBUG] QUERY OK source="tms_terminals" db=44.2ms queue=0.2ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 12:59:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 12:59:41.362] [DEBUG] QUERY OK db=49.8ms queue=0.3ms idle=45.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0215a19d-34af-4594-ba23-487b39cb2097", "2026-08-21T12:59:40Z", ~N[2026-08-21 12:59:41], ~N[2026-08-21 12:59:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 12:59:41.363] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78113, oid: "0215a19d-34af-4594-ba23-487b39cb2097", upload_time: "2026-08-21T12:59:40Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:41], updated_at: ~N[2026-08-21 12:59:41]} [2026-08-21 12:59:41.363] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T12:59:40Z", "value" => "morefun"} [2026-08-21 12:59:41.398] [DEBUG] QUERY OK db=34.2ms queue=0.1ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:40Z", "morefun", "vendor", 78113, ~N[2026-08-21 12:59:41], ~N[2026-08-21 12:59:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:41.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794933, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:41], updated_at: ~N[2026-08-21 12:59:41]}} [2026-08-21 12:59:41.398] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T12:59:40Z", "value" => "kiosk_launcher"} [2026-08-21 12:59:41.470] [DEBUG] QUERY OK db=71.9ms idle=35.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:40Z", "kiosk_launcher", "model", 78113, ~N[2026-08-21 12:59:41], ~N[2026-08-21 12:59:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:41.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794935, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:41], updated_at: ~N[2026-08-21 12:59:41]}} [2026-08-21 12:59:41.471] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T12:59:40Z", "value" => "1.0"} [2026-08-21 12:59:41.557] [DEBUG] QUERY OK db=85.5ms idle=73.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:40Z", "1.0", "app_version", 78113, ~N[2026-08-21 12:59:41], ~N[2026-08-21 12:59:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:41.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794937, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:41], updated_at: ~N[2026-08-21 12:59:41]}} [2026-08-21 12:59:41.557] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T12:59:40Z", "value" => "13"} [2026-08-21 12:59:41.643] [DEBUG] QUERY OK db=85.5ms idle=87.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:40Z", "13", "android_version", 78113, ~N[2026-08-21 12:59:41], ~N[2026-08-21 12:59:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:41.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794939, itemkey: "android_version", value: "13", timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:41], updated_at: ~N[2026-08-21 12:59:41]}} [2026-08-21 12:59:41.645] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T12:59:40Z", "value" => "880"} [2026-08-21 12:59:41.696] [DEBUG] QUERY OK db=51.2ms idle=88.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:40Z", "880", "ram_free_mb", 78113, ~N[2026-08-21 12:59:41], ~N[2026-08-21 12:59:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:41.697] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794941, itemkey: "ram_free_mb", value: "880", timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:41], updated_at: ~N[2026-08-21 12:59:41]}} [2026-08-21 12:59:41.697] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T12:59:40Z", "value" => "WIFI"} [2026-08-21 12:59:41.970] [DEBUG] QUERY OK db=273.1ms idle=53.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:40Z", "WIFI", "network_type", 78113, ~N[2026-08-21 12:59:41], ~N[2026-08-21 12:59:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:41.971] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794943, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:41], updated_at: ~N[2026-08-21 12:59:41]}} [2026-08-21 12:59:41.971] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T12:59:40Z", "value" => "true"} [2026-08-21 12:59:42.036] [DEBUG] QUERY OK db=64.9ms idle=274.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:40Z", "true", "kiosk_active", 78113, ~N[2026-08-21 12:59:41], ~N[2026-08-21 12:59:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:42.036] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794946, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:41], updated_at: ~N[2026-08-21 12:59:41]}} [2026-08-21 12:59:42.036] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T12:59:40Z", "value" => ""} [2026-08-21 12:59:42.116] [DEBUG] QUERY OK db=79.0ms idle=66.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T12:59:40Z", "sim_operator", 78113, ~N[2026-08-21 12:59:42], ~N[2026-08-21 12:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:42.117] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794948, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:42], updated_at: ~N[2026-08-21 12:59:42]}} [2026-08-21 12:59:42.118] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T12:59:40Z", "value" => "UNKNOWN"} [2026-08-21 12:59:42.161] [DEBUG] QUERY OK db=42.1ms idle=70.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:40Z", "UNKNOWN", "sim_number", 78113, ~N[2026-08-21 12:59:42], ~N[2026-08-21 12:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:42.161] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794950, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:42], updated_at: ~N[2026-08-21 12:59:42]}} [2026-08-21 12:59:42.161] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T12:59:40Z", "value" => "UNKNOWN"} [2026-08-21 12:59:42.232] [DEBUG] QUERY OK db=70.1ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:40Z", "UNKNOWN", "sim_iccid", 78113, ~N[2026-08-21 12:59:42], ~N[2026-08-21 12:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:42.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794952, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:42], updated_at: ~N[2026-08-21 12:59:42]}} [2026-08-21 12:59:42.232] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T12:59:40Z", "value" => "UNKNOWN"} [2026-08-21 12:59:42.267] [DEBUG] QUERY OK db=34.1ms queue=0.1ms idle=71.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:40Z", "UNKNOWN", "sim_imsi", 78113, ~N[2026-08-21 12:59:42], ~N[2026-08-21 12:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:42.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794954, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:42], updated_at: ~N[2026-08-21 12:59:42]}} [2026-08-21 12:59:42.267] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T12:59:40Z", "value" => "UNKNOWN"} [2026-08-21 12:59:42.332] [DEBUG] QUERY OK db=63.9ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:40Z", "UNKNOWN", "sim_iccid2", 78113, ~N[2026-08-21 12:59:42], ~N[2026-08-21 12:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:42.332] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794956, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:42], updated_at: ~N[2026-08-21 12:59:42]}} [2026-08-21 12:59:42.332] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T12:59:40Z", "value" => "UNKNOWN"} [2026-08-21 12:59:42.383] [DEBUG] QUERY OK db=50.5ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:40Z", "UNKNOWN", "sim_imsi2", 78113, ~N[2026-08-21 12:59:42], ~N[2026-08-21 12:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:42.383] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794958, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:42], updated_at: ~N[2026-08-21 12:59:42]}} [2026-08-21 12:59:42.384] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T12:59:40Z", "value" => "37"} [2026-08-21 12:59:42.452] [DEBUG] QUERY OK db=68.2ms idle=52.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:40Z", "37", "data_usage_mb", 78113, ~N[2026-08-21 12:59:42], ~N[2026-08-21 12:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:42.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794960, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:42], updated_at: ~N[2026-08-21 12:59:42]}} [2026-08-21 12:59:42.453] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T12:59:40Z", "value" => "0"} [2026-08-21 12:59:42.513] [DEBUG] QUERY OK db=59.6ms idle=69.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59:40Z", "0", "mobile_data_mb", 78113, ~N[2026-08-21 12:59:42], ~N[2026-08-21 12:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:42.514] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794962, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:42], updated_at: ~N[2026-08-21 12:59:42]}} [2026-08-21 12:59:42.515] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T12:59: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 12:59:42.599] [DEBUG] QUERY OK db=83.3ms idle=62.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T12:59: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78113, ~N[2026-08-21 12:59:42], ~N[2026-08-21 12:59:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 12:59:42.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794964, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T12:59:40Z", message: nil, status_log_id: 78113, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 12:59:42], updated_at: ~N[2026-08-21 12:59:42]}} [2026-08-21 13:00:07.258] [INFO ] Running offline device check... [2026-08-21 13:00:07.258] [INFO ] Starting offline device check... [2026-08-21 13:00:07.262] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=2.2ms idle=1094.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-08-21 13:00:07.273] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.8ms queue=0.6ms idle=90.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 13:00:07.273] [INFO ] Starting scheduled rule validation [2026-08-21 13:00:07.273] [DEBUG] Validating missing assignments [2026-08-21 13:00:07.274] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms idle=0.6ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-08-21 13:00:07.276] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=0.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-08-21 13:00:07.277] [DEBUG] Re-applied 0 rules during validation [2026-08-21 13:00:07.277] [DEBUG] Validating invalid assignments [2026-08-21 13:00:07.278] [DEBUG] Validating rule consistency [2026-08-21 13:00:07.278] [DEBUG] Updating group terminal counts [2026-08-21 13:00:07.288] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.1ms idle=11.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.290] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.296] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.293] [DEBUG] QUERY OK source="terminal_groups" db=4.9ms queue=1.9ms idle=10.0ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-08-21 13:00:07.299] [DEBUG] QUERY OK source="terminal_groups" db=1.4ms queue=0.5ms idle=0.6ms 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-08-21 13:00:07.301] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms queue=0.8ms 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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.302] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.305] [DEBUG] QUERY OK source="terminal_groups" db=3.1ms queue=3.0ms idle=0.2ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-08-21 13:00:07.306] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.308] [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 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.309] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.314] [DEBUG] QUERY OK source="terminal_group_rules" db=4.5ms queue=4.0ms 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-08-21 13:00:07.315] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.321] [DEBUG] QUERY OK source="terminal_group_rules" db=2.3ms queue=4.1ms idle=0.3ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:259 [2026-08-21 13:00:07.326] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.0ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.327] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.329] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms queue=7.1ms idle=0.3ms 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-08-21 13:00:07.341] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.1ms queue=3.3ms idle=7.5ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:262 [2026-08-21 13:00:07.344] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.6ms 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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.345] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms queue=2.3ms 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-08-21 13:00:07.347] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 3, total: 3, by_type: %{"custom" => 3}}, assignments: %{active: 0, total: 0, by_type: %{}}} [2026-08-21 13:00:07.347] [INFO ] Rule validation completed - applied 0 fixes [2026-08-21 13:00:07.353] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.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-08-21 13:00:07.358] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.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 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.361] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms 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 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.362] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.389] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=27.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.391] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=27.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.394] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.399] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms queue=1.9ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.401] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=5.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.402] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.448] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=46.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 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.450] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=47.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 13:00:07.451] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.458] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.459] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms 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-08-21 13:00:07.463] [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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.464] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.465] [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-08-21 13:00:07.469] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.471] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.1ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.472] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.473] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.474] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.476] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.477] [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 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.477] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.478] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.479] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.480] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.482] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.483] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.484] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.485] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.486] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.488] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.489] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.490] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.491] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.493] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:00:07.493] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 13:00:07.493] [INFO ] Offline device check completed successfully [2026-08-21 13:00:11.367] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:00:11.368] [INFO ] Incoming JSON payload: {"oid":"f09140cd-851a-42fc-b5c5-d697a9ccff7d","sn":"98251226730001","uploadTime":"2026-08-21T13:00:10Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:00:10Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:00:10Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:00:10Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:00:10Z"},{"itemkey":"ram_free_mb","value":"878","timestamp":"2026-08-21T13:00:10Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:00:10Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:00:10Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:00:10Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:00:10Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:00:10Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:00:10Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:00:10Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:00:10Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:00:10Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:00: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:00:11.372] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f09140cd-851a-42fc-b5c5-d697a9ccff7d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:00:10Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:00:10Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:00:10Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:00:10Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:00:10Z", "value" => "878"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:00:10Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:00:10Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:00:10Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:00:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:00:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:00:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:00:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:00:10Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:00:10Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:00:10Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:00: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:00:10Z", "vendor" => "morefun"} [2026-08-21 13:00:11.373] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:00:11.373] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:00:11.373] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:00:11.387] [DEBUG] QUERY OK source="parameter_templates" db=3.3ms queue=1.2ms idle=1195.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-08-21 13:00:11.390] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms idle=197.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-08-21 13:00:11.390] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:00:11.392] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:00:11.393] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:00:11.429] [DEBUG] QUERY OK source="tms_terminals" db=35.7ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:00:11], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:00:11.430] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:00:11.432] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=38.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:00:11.479] [DEBUG] QUERY OK source="tms_terminals" db=46.0ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:00:11], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:00:11.540] [DEBUG] QUERY OK db=60.4ms idle=47.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "f09140cd-851a-42fc-b5c5-d697a9ccff7d", "2026-08-21T13:00:10Z", ~N[2026-08-21 13:00:11], ~N[2026-08-21 13:00:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:00:11.541] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78115, oid: "f09140cd-851a-42fc-b5c5-d697a9ccff7d", upload_time: "2026-08-21T13:00:10Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:11], updated_at: ~N[2026-08-21 13:00:11]} [2026-08-21 13:00:11.541] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:00:10Z", "value" => "morefun"} [2026-08-21 13:00:11.611] [DEBUG] QUERY OK db=68.8ms queue=0.8ms idle=62.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:10Z", "morefun", "vendor", 78115, ~N[2026-08-21 13:00:11], ~N[2026-08-21 13:00:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:11.612] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794965, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:11], updated_at: ~N[2026-08-21 13:00:11]}} [2026-08-21 13:00:11.614] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:00:10Z", "value" => "kiosk_launcher"} [2026-08-21 13:00:11.674] [DEBUG] QUERY OK db=60.4ms idle=73.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:10Z", "kiosk_launcher", "model", 78115, ~N[2026-08-21 13:00:11], ~N[2026-08-21 13:00:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:11.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794967, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:11], updated_at: ~N[2026-08-21 13:00:11]}} [2026-08-21 13:00:11.675] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:00:10Z", "value" => "1.0"} [2026-08-21 13:00:11.746] [DEBUG] QUERY OK db=70.9ms idle=63.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:10Z", "1.0", "app_version", 78115, ~N[2026-08-21 13:00:11], ~N[2026-08-21 13:00:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:11.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794969, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:11], updated_at: ~N[2026-08-21 13:00:11]}} [2026-08-21 13:00:11.746] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:00:10Z", "value" => "13"} [2026-08-21 13:00:11.851] [DEBUG] QUERY OK db=104.0ms idle=72.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:10Z", "13", "android_version", 78115, ~N[2026-08-21 13:00:11], ~N[2026-08-21 13:00:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:11.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794971, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:11], updated_at: ~N[2026-08-21 13:00:11]}} [2026-08-21 13:00:11.852] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:00:10Z", "value" => "878"} [2026-08-21 13:00:11.921] [DEBUG] QUERY OK db=69.1ms idle=106.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:10Z", "878", "ram_free_mb", 78115, ~N[2026-08-21 13:00:11], ~N[2026-08-21 13:00:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:11.922] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794973, itemkey: "ram_free_mb", value: "878", timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:11], updated_at: ~N[2026-08-21 13:00:11]}} [2026-08-21 13:00:11.922] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:00:10Z", "value" => "WIFI"} [2026-08-21 13:00:11.979] [DEBUG] QUERY OK db=55.5ms queue=1.6ms idle=71.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:10Z", "WIFI", "network_type", 78115, ~N[2026-08-21 13:00:11], ~N[2026-08-21 13:00:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:11.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794975, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:11], updated_at: ~N[2026-08-21 13:00:11]}} [2026-08-21 13:00:11.980] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:00:10Z", "value" => "true"} [2026-08-21 13:00:12.036] [DEBUG] QUERY OK db=56.4ms idle=58.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:10Z", "true", "kiosk_active", 78115, ~N[2026-08-21 13:00:11], ~N[2026-08-21 13:00:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:12.037] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794977, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:11], updated_at: ~N[2026-08-21 13:00:11]}} [2026-08-21 13:00:12.037] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:00:10Z", "value" => ""} [2026-08-21 13:00:12.166] [DEBUG] QUERY OK db=128.9ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:00:10Z", "sim_operator", 78115, ~N[2026-08-21 13:00:12], ~N[2026-08-21 13:00:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:12.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794979, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:12], updated_at: ~N[2026-08-21 13:00:12]}} [2026-08-21 13:00:12.166] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:00:10Z", "value" => "UNKNOWN"} [2026-08-21 13:00:12.357] [DEBUG] QUERY OK db=189.3ms idle=131.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:10Z", "UNKNOWN", "sim_number", 78115, ~N[2026-08-21 13:00:12], ~N[2026-08-21 13:00:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:12.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794981, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:12], updated_at: ~N[2026-08-21 13:00:12]}} [2026-08-21 13:00:12.357] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:00:10Z", "value" => "UNKNOWN"} [2026-08-21 13:00:12.418] [DEBUG] QUERY OK db=57.2ms queue=3.4ms idle=165.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:10Z", "UNKNOWN", "sim_iccid", 78115, ~N[2026-08-21 13:00:12], ~N[2026-08-21 13:00:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:12.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794983, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:12], updated_at: ~N[2026-08-21 13:00:12]}} [2026-08-21 13:00:12.419] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:00:10Z", "value" => "UNKNOWN"} [2026-08-21 13:00:12.465] [DEBUG] QUERY OK db=42.3ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:10Z", "UNKNOWN", "sim_imsi", 78115, ~N[2026-08-21 13:00:12], ~N[2026-08-21 13:00:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:12.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794984, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:12], updated_at: ~N[2026-08-21 13:00:12]}} [2026-08-21 13:00:12.466] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:00:10Z", "value" => "UNKNOWN"} [2026-08-21 13:00:12.564] [DEBUG] QUERY OK db=97.3ms queue=0.3ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:10Z", "UNKNOWN", "sim_iccid2", 78115, ~N[2026-08-21 13:00:12], ~N[2026-08-21 13:00:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:12.564] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794986, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:12], updated_at: ~N[2026-08-21 13:00:12]}} [2026-08-21 13:00:12.564] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:00:10Z", "value" => "UNKNOWN"} [2026-08-21 13:00:12.626] [DEBUG] QUERY OK db=61.1ms idle=100.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:10Z", "UNKNOWN", "sim_imsi2", 78115, ~N[2026-08-21 13:00:12], ~N[2026-08-21 13:00:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:12.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794988, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:12], updated_at: ~N[2026-08-21 13:00:12]}} [2026-08-21 13:00:12.626] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:00:10Z", "value" => "37"} [2026-08-21 13:00:12.695] [DEBUG] QUERY OK db=68.6ms idle=62.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:10Z", "37", "data_usage_mb", 78115, ~N[2026-08-21 13:00:12], ~N[2026-08-21 13:00:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:12.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794990, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:12], updated_at: ~N[2026-08-21 13:00:12]}} [2026-08-21 13:00:12.696] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:00:10Z", "value" => "0"} [2026-08-21 13:00:12.805] [DEBUG] QUERY OK db=109.1ms idle=69.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:10Z", "0", "mobile_data_mb", 78115, ~N[2026-08-21 13:00:12], ~N[2026-08-21 13:00:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:12.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794992, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:12], updated_at: ~N[2026-08-21 13:00:12]}} [2026-08-21 13:00:12.808] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:00: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:00:12.853] [DEBUG] QUERY OK db=42.5ms idle=113.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78115, ~N[2026-08-21 13:00:12], ~N[2026-08-21 13:00:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:12.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794994, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:00:10Z", message: nil, status_log_id: 78115, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:12], updated_at: ~N[2026-08-21 13:00:12]}} [2026-08-21 13:00:41.425] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:00:41.426] [INFO ] Incoming JSON payload: {"oid":"a0b2b58e-049d-4886-a399-0675bc32be1f","sn":"98251226730001","uploadTime":"2026-08-21T13:00:41Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"ram_free_mb","value":"877","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:00:41Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:00:41.427] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a0b2b58e-049d-4886-a399-0675bc32be1f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:00:41Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:00:41Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:00:41Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:00:41Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:00:41Z", "value" => "877"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:00:41Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:00:41Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:00:41Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:00:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:00:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:00:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:00:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:00:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:00:41Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:00:41Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:00:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:00:41Z", "vendor" => "morefun"} [2026-08-21 13:00:41.427] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:00:41.427] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:00:41.427] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:00:41.430] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms idle=143.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-08-21 13:00:41.432] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=4.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 13:00:41.432] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:00:41.433] [DEBUG] QUERY OK source="tms_terminals" db=0.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:00:41.434] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:00:41.460] [DEBUG] QUERY OK source="tms_terminals" db=25.6ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:00:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:00:41.460] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:00:41.461] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:00:41.497] [DEBUG] QUERY OK source="tms_terminals" db=34.8ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:00:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:00:41.543] [DEBUG] QUERY OK db=45.1ms queue=0.7ms idle=36.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a0b2b58e-049d-4886-a399-0675bc32be1f", "2026-08-21T13:00:41Z", ~N[2026-08-21 13:00:41], ~N[2026-08-21 13:00:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:00:41.544] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78117, oid: "a0b2b58e-049d-4886-a399-0675bc32be1f", upload_time: "2026-08-21T13:00:41Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:41], updated_at: ~N[2026-08-21 13:00:41]} [2026-08-21 13:00:41.544] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:00:41Z", "value" => "morefun"} [2026-08-21 13:00:41.588] [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-08-21T13:00:41Z", "morefun", "vendor", 78117, ~N[2026-08-21 13:00:41], ~N[2026-08-21 13:00:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:41.589] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794997, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:41], updated_at: ~N[2026-08-21 13:00:41]}} [2026-08-21 13:00:41.589] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:00:41Z", "value" => "kiosk_launcher"} [2026-08-21 13:00:41.654] [DEBUG] QUERY OK db=64.6ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:41Z", "kiosk_launcher", "model", 78117, ~N[2026-08-21 13:00:41], ~N[2026-08-21 13:00:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:41.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 794999, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:41], updated_at: ~N[2026-08-21 13:00:41]}} [2026-08-21 13:00:41.655] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:00:41Z", "value" => "1.0"} [2026-08-21 13:00:41.708] [DEBUG] QUERY OK db=52.4ms idle=66.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:41Z", "1.0", "app_version", 78117, ~N[2026-08-21 13:00:41], ~N[2026-08-21 13:00:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:41.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795001, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:41], updated_at: ~N[2026-08-21 13:00:41]}} [2026-08-21 13:00:41.710] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:00:41Z", "value" => "13"} [2026-08-21 13:00:41.756] [DEBUG] QUERY OK db=45.9ms idle=56.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:41Z", "13", "android_version", 78117, ~N[2026-08-21 13:00:41], ~N[2026-08-21 13:00:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:41.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795003, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:41], updated_at: ~N[2026-08-21 13:00:41]}} [2026-08-21 13:00:41.758] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:00:41Z", "value" => "877"} [2026-08-21 13:00:41.816] [DEBUG] QUERY OK db=57.6ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:41Z", "877", "ram_free_mb", 78117, ~N[2026-08-21 13:00:41], ~N[2026-08-21 13:00:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:41.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795005, itemkey: "ram_free_mb", value: "877", timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:41], updated_at: ~N[2026-08-21 13:00:41]}} [2026-08-21 13:00:41.816] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:00:41Z", "value" => "WIFI"} [2026-08-21 13:00:41.866] [DEBUG] QUERY OK db=50.2ms idle=60.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:41Z", "WIFI", "network_type", 78117, ~N[2026-08-21 13:00:41], ~N[2026-08-21 13:00:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:41.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795006, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:41], updated_at: ~N[2026-08-21 13:00:41]}} [2026-08-21 13:00:41.867] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:00:41Z", "value" => "true"} [2026-08-21 13:00:41.928] [DEBUG] QUERY OK db=60.6ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:41Z", "true", "kiosk_active", 78117, ~N[2026-08-21 13:00:41], ~N[2026-08-21 13:00:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:41.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795008, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:41], updated_at: ~N[2026-08-21 13:00:41]}} [2026-08-21 13:00:41.929] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:00:41Z", "value" => ""} [2026-08-21 13:00:42.005] [DEBUG] QUERY OK db=75.6ms idle=62.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:00:41Z", "sim_operator", 78117, ~N[2026-08-21 13:00:41], ~N[2026-08-21 13:00:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:42.005] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795010, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:41], updated_at: ~N[2026-08-21 13:00:41]}} [2026-08-21 13:00:42.005] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:00:41Z", "value" => "UNKNOWN"} [2026-08-21 13:00:42.083] [DEBUG] QUERY OK db=77.1ms idle=77.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:41Z", "UNKNOWN", "sim_number", 78117, ~N[2026-08-21 13:00:42], ~N[2026-08-21 13:00:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:42.083] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795012, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:42], updated_at: ~N[2026-08-21 13:00:42]}} [2026-08-21 13:00:42.083] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:00:41Z", "value" => "UNKNOWN"} [2026-08-21 13:00:42.128] [DEBUG] QUERY OK db=44.0ms idle=78.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:41Z", "UNKNOWN", "sim_iccid", 78117, ~N[2026-08-21 13:00:42], ~N[2026-08-21 13:00:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:42.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795014, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:42], updated_at: ~N[2026-08-21 13:00:42]}} [2026-08-21 13:00:42.128] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:00:41Z", "value" => "UNKNOWN"} [2026-08-21 13:00:42.167] [DEBUG] QUERY OK db=38.1ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:41Z", "UNKNOWN", "sim_imsi", 78117, ~N[2026-08-21 13:00:42], ~N[2026-08-21 13:00:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:42.167] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795016, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:42], updated_at: ~N[2026-08-21 13:00:42]}} [2026-08-21 13:00:42.168] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:00:41Z", "value" => "UNKNOWN"} [2026-08-21 13:00:42.227] [DEBUG] QUERY OK db=58.8ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:41Z", "UNKNOWN", "sim_iccid2", 78117, ~N[2026-08-21 13:00:42], ~N[2026-08-21 13:00:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:42.228] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795018, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:42], updated_at: ~N[2026-08-21 13:00:42]}} [2026-08-21 13:00:42.228] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:00:41Z", "value" => "UNKNOWN"} [2026-08-21 13:00:42.270] [DEBUG] QUERY OK db=41.3ms queue=0.6ms idle=61.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:41Z", "UNKNOWN", "sim_imsi2", 78117, ~N[2026-08-21 13:00:42], ~N[2026-08-21 13:00:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:42.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795020, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:42], updated_at: ~N[2026-08-21 13:00:42]}} [2026-08-21 13:00:42.271] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:00:41Z", "value" => "37"} [2026-08-21 13:00:42.317] [DEBUG] QUERY OK db=45.2ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:41Z", "37", "data_usage_mb", 78117, ~N[2026-08-21 13:00:42], ~N[2026-08-21 13:00:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:42.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795022, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:42], updated_at: ~N[2026-08-21 13:00:42]}} [2026-08-21 13:00:42.317] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:00:41Z", "value" => "0"} [2026-08-21 13:00:42.380] [DEBUG] QUERY OK db=62.6ms idle=28.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:41Z", "0", "mobile_data_mb", 78117, ~N[2026-08-21 13:00:42], ~N[2026-08-21 13:00:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:42.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795024, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:42], updated_at: ~N[2026-08-21 13:00:42]}} [2026-08-21 13:00:42.381] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:00:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:00:42.441] [DEBUG] QUERY OK db=58.8ms idle=64.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:00:41Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78117, ~N[2026-08-21 13:00:42], ~N[2026-08-21 13:00:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:00:42.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795026, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:00:41Z", message: nil, status_log_id: 78117, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:00:42], updated_at: ~N[2026-08-21 13:00:42]}} [2026-08-21 13:01:11.540] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:01:11.540] [INFO ] Incoming JSON payload: {"oid":"6e54d9dc-5ca7-4335-9740-edfbc901d1d0","sn":"98251226730001","uploadTime":"2026-08-21T13:01:11Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"ram_free_mb","value":"886","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:01:11Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:01:11.542] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "6e54d9dc-5ca7-4335-9740-edfbc901d1d0", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:01:11Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:01:11Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:01:11Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:01:11Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:01:11Z", "value" => "886"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:01:11Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:01:11Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:01:11Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:01:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:01:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:01:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:01:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:01:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:01:11Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:01:11Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:01:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:01:11Z", "vendor" => "morefun"} [2026-08-21 13:01:11.543] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:01:11.543] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:01:11.543] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:01:11.544] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=143.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-08-21 13:01:11.546] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=111.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-08-21 13:01:11.546] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:01:11.547] [DEBUG] QUERY OK source="tms_terminals" db=0.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:01:11.547] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:01:11.584] [DEBUG] QUERY OK source="tms_terminals" db=36.6ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:01:11], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:01:11.584] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:01:11.586] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=37.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:01:11.639] [DEBUG] QUERY OK source="tms_terminals" db=52.9ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:01:11], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:01:11.663] [DEBUG] QUERY OK db=23.8ms idle=53.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "6e54d9dc-5ca7-4335-9740-edfbc901d1d0", "2026-08-21T13:01:11Z", ~N[2026-08-21 13:01:11], ~N[2026-08-21 13:01:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:01:11.664] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78119, oid: "6e54d9dc-5ca7-4335-9740-edfbc901d1d0", upload_time: "2026-08-21T13:01:11Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:11], updated_at: ~N[2026-08-21 13:01:11]} [2026-08-21 13:01:11.664] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:01:11Z", "value" => "morefun"} [2026-08-21 13:01:11.694] [DEBUG] QUERY OK db=30.0ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:11Z", "morefun", "vendor", 78119, ~N[2026-08-21 13:01:11], ~N[2026-08-21 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:11.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795029, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:11], updated_at: ~N[2026-08-21 13:01:11]}} [2026-08-21 13:01:11.694] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:01:11Z", "value" => "kiosk_launcher"} [2026-08-21 13:01:11.756] [DEBUG] QUERY OK db=60.7ms idle=31.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:11Z", "kiosk_launcher", "model", 78119, ~N[2026-08-21 13:01:11], ~N[2026-08-21 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:11.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795031, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:11], updated_at: ~N[2026-08-21 13:01:11]}} [2026-08-21 13:01:11.756] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:01:11Z", "value" => "1.0"} [2026-08-21 13:01:11.843] [DEBUG] QUERY OK db=85.9ms queue=0.6ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:11Z", "1.0", "app_version", 78119, ~N[2026-08-21 13:01:11], ~N[2026-08-21 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:11.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795033, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:11], updated_at: ~N[2026-08-21 13:01:11]}} [2026-08-21 13:01:11.843] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:01:11Z", "value" => "13"} [2026-08-21 13:01:11.875] [DEBUG] QUERY OK db=31.4ms idle=87.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:11Z", "13", "android_version", 78119, ~N[2026-08-21 13:01:11], ~N[2026-08-21 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:11.876] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795035, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:11], updated_at: ~N[2026-08-21 13:01:11]}} [2026-08-21 13:01:11.876] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:01:11Z", "value" => "886"} [2026-08-21 13:01:11.929] [DEBUG] QUERY OK db=53.2ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:11Z", "886", "ram_free_mb", 78119, ~N[2026-08-21 13:01:11], ~N[2026-08-21 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:11.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795037, itemkey: "ram_free_mb", value: "886", timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:11], updated_at: ~N[2026-08-21 13:01:11]}} [2026-08-21 13:01:11.930] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:01:11Z", "value" => "WIFI"} [2026-08-21 13:01:11.963] [DEBUG] QUERY OK db=32.9ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:11Z", "WIFI", "network_type", 78119, ~N[2026-08-21 13:01:11], ~N[2026-08-21 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:11.964] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795039, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:11], updated_at: ~N[2026-08-21 13:01:11]}} [2026-08-21 13:01:11.964] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:01:11Z", "value" => "true"} [2026-08-21 13:01:12.038] [DEBUG] QUERY OK db=73.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:11Z", "true", "kiosk_active", 78119, ~N[2026-08-21 13:01:11], ~N[2026-08-21 13:01:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:12.038] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795041, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:11], updated_at: ~N[2026-08-21 13:01:11]}} [2026-08-21 13:01:12.038] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:01:11Z", "value" => ""} [2026-08-21 13:01:12.073] [DEBUG] QUERY OK db=33.5ms idle=75.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:01:11Z", "sim_operator", 78119, ~N[2026-08-21 13:01:12], ~N[2026-08-21 13:01:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:12.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795043, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:12], updated_at: ~N[2026-08-21 13:01:12]}} [2026-08-21 13:01:12.073] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:01:11Z", "value" => "UNKNOWN"} [2026-08-21 13:01:12.120] [DEBUG] QUERY OK db=46.3ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:11Z", "UNKNOWN", "sim_number", 78119, ~N[2026-08-21 13:01:12], ~N[2026-08-21 13:01:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:12.120] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795045, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:12], updated_at: ~N[2026-08-21 13:01:12]}} [2026-08-21 13:01:12.120] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:01:11Z", "value" => "UNKNOWN"} [2026-08-21 13:01:12.168] [DEBUG] QUERY OK db=47.1ms idle=48.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:11Z", "UNKNOWN", "sim_iccid", 78119, ~N[2026-08-21 13:01:12], ~N[2026-08-21 13:01:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:12.169] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795047, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:12], updated_at: ~N[2026-08-21 13:01:12]}} [2026-08-21 13:01:12.169] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:01:11Z", "value" => "UNKNOWN"} [2026-08-21 13:01:12.191] [DEBUG] QUERY OK db=21.7ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:11Z", "UNKNOWN", "sim_imsi", 78119, ~N[2026-08-21 13:01:12], ~N[2026-08-21 13:01:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:12.191] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795049, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:12], updated_at: ~N[2026-08-21 13:01:12]}} [2026-08-21 13:01:12.192] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:01:11Z", "value" => "UNKNOWN"} [2026-08-21 13:01:12.282] [DEBUG] QUERY OK db=89.1ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:11Z", "UNKNOWN", "sim_iccid2", 78119, ~N[2026-08-21 13:01:12], ~N[2026-08-21 13:01:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:12.282] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795051, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:12], updated_at: ~N[2026-08-21 13:01:12]}} [2026-08-21 13:01:12.282] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:01:11Z", "value" => "UNKNOWN"} [2026-08-21 13:01:12.306] [DEBUG] QUERY OK db=23.1ms idle=91.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:11Z", "UNKNOWN", "sim_imsi2", 78119, ~N[2026-08-21 13:01:12], ~N[2026-08-21 13:01:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:12.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795053, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:12], updated_at: ~N[2026-08-21 13:01:12]}} [2026-08-21 13:01:12.306] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:01:11Z", "value" => "37"} [2026-08-21 13:01:12.359] [DEBUG] QUERY OK db=51.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-08-21T13:01:11Z", "37", "data_usage_mb", 78119, ~N[2026-08-21 13:01:12], ~N[2026-08-21 13:01:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:12.359] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795055, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:12], updated_at: ~N[2026-08-21 13:01:12]}} [2026-08-21 13:01:12.360] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:01:11Z", "value" => "0"} [2026-08-21 13:01:12.397] [DEBUG] QUERY OK db=34.5ms queue=0.8ms idle=56.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:11Z", "0", "mobile_data_mb", 78119, ~N[2026-08-21 13:01:12], ~N[2026-08-21 13:01:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:12.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795057, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:12], updated_at: ~N[2026-08-21 13:01:12]}} [2026-08-21 13:01:12.402] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:01:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:01:12.458] [DEBUG] QUERY OK db=55.9ms idle=4.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:11Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78119, ~N[2026-08-21 13:01:12], ~N[2026-08-21 13:01:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:12.460] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795059, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:01:11Z", message: nil, status_log_id: 78119, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:12], updated_at: ~N[2026-08-21 13:01:12]}} [2026-08-21 13:01:12.460] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch980308009433_20260821130111248","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T13:01:11Z"} [2026-08-21 13:01:12.460] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch980308009433_20260821130111248", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:01:11Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 27, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 57, 56, 48, 51, 48, 56, 48, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:01:19.787] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:01:24.789] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T13:01:19Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T13:01:19Z","value":"50"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T13:01:19Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T13:01:19Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T13:01:19Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T13:01:19Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T13:01:19Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T13:01:19Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T13:01:19Z","vendor":"MoreFun"} [2026-08-21 13:01:29.790] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T13:01:19Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T13:01:19Z", "value" => "50"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T13:01:19Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T13:01:19Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T13:01:19Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T13:01:19Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T13:01:19Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T13:01:19Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:01:19Z", "vendor" => "MoreFun"} [2026-08-21 13:01:29.790] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 13:01:29.791] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:01:29.791] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 13:01:29.791] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=1328.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-08-21 13:01:29.792] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=326.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 13:01:29.793] [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-08-21 13:01:29.795] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.4ms idle=1.1ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 13:01:29.796] [DEBUG] QUERY OK source="pos_terminal" db=0.6ms idle=2.5ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 13:01:29.837] [DEBUG] QUERY OK source="pos_merchant" db=40.8ms idle=1.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 13:01:29.839] [DEBUG] QUERY OK db=0.7ms queue=0.6ms idle=1410.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 ["626165170000000"] [2026-08-21 13:01:29.839] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 13:01:29.840] [DEBUG] QUERY OK source="pos_terminal_data" db=0.3ms 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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 13:01:29.841] [DEBUG] QUERY OK source="address" db=0.7ms queue=0.3ms idle=2.9ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 13:01:29.842] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 13:01:29.843] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 13:01:30.022] [DEBUG] QUERY OK db=177.1ms idle=4.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "cad6cee5c6719e869ae82516de4626957449addb9b91c17069faca99631c4f54", 997, 938, ~U[2026-08-21 13:01:29Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 13:01:29], ~N[2026-08-21 13:01:29]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 13:01:30.023] [INFO ] AutoPushService: Created push log 49151 for MF919 params.zip [2026-08-21 13:01:30.023] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 997, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 13:01:30.023] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 13:01:30.023] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 13:01:30.024] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=182.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-08-21 13:01:30.064] [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-08-21 13:01:30.262] [DEBUG] QUERY OK db=197.1ms idle=43.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "29902694330808b51e4293b21d63cbbb670fad215c8c24678905678b0a7f3870", 5890, 17947, ~U[2026-08-21 13:01:30Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 13:01:30], ~N[2026-08-21 13:01:30]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 13:01:30.262] [INFO ] AutoPushService: Created push log 49152 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 13:01:30.262] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 5890, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 13:01:30.263] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 13:01:30.263] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 13:01:30.265] [DEBUG] QUERY OK source="config_file_versions" db=2.6ms idle=238.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-08-21 13:01:30.266] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 13:01:30.267] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 13:01:30.267] [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-08-21 13:01:30.268] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 13:01:30.270] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:01:30.270] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:01:30.272] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.6ms idle=4.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 13:01:30.272] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:01:30.272] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 13:01:30.274] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms 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-08-21 13:01:30.275] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:01:30.345] [DEBUG] QUERY OK source="tms_terminals" db=70.0ms idle=3.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:01:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:01:30.347] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=71.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-08-21 13:01:30.348] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=2.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:01:30.349] [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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:01:30.349] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 13:01:30.374] [DEBUG] QUERY OK source="parameter_push_logs" db=24.3ms 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-08-21 12:31:30]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 13:01:30.374] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 13:01:30.374] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 13:01:30.375] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 13:01:30.377] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms 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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 13:01:30.377] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:01:30.378] [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-08-21 13:01:30.421] [DEBUG] QUERY OK source="tms_terminals" db=43.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:01:30], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:01:30.471] [DEBUG] QUERY OK db=48.7ms idle=44.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T13:01:19Z", ~N[2026-08-21 13:01:30], ~N[2026-08-21 13:01:30]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:01:30.472] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78122, oid: "organization_id", upload_time: "2026-08-21T13:01:19Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:30], updated_at: ~N[2026-08-21 13:01:30]} [2026-08-21 13:01:30.472] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T13:01:19Z", "value" => "online"} [2026-08-21 13:01:30.507] [DEBUG] QUERY OK db=34.7ms idle=4.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T13:01:19Z", "online", "status", 78122, ~N[2026-08-21 13:01:30], ~N[2026-08-21 13:01:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:30.508] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795069, itemkey: "status", value: "online", timestamp: "2026-08-21T13:01:19Z", message: "Terminal status update", status_log_id: 78122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:30], updated_at: ~N[2026-08-21 13:01:30]}} [2026-08-21 13:01:30.508] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 13:01:30.508] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T13:01:19Z", "value" => "50"} [2026-08-21 13:01:30.553] [DEBUG] QUERY OK db=43.8ms queue=0.6ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T13:01:19Z", "50", "battery", 78122, ~N[2026-08-21 13:01:30], ~N[2026-08-21 13:01:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:30.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795070, itemkey: "battery", value: "50", timestamp: "2026-08-21T13:01:19Z", message: "Battery level", status_log_id: 78122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:30], updated_at: ~N[2026-08-21 13:01:30]}} [2026-08-21 13:01:30.553] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T13:01:19Z", "value" => "online"} [2026-08-21 13:01:30.586] [DEBUG] QUERY OK db=33.1ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T13:01:19Z", "online", "network", 78122, ~N[2026-08-21 13:01:30], ~N[2026-08-21 13:01:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:30.587] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795071, itemkey: "network", value: "online", timestamp: "2026-08-21T13:01:19Z", message: "Network connectivity", status_log_id: 78122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:30], updated_at: ~N[2026-08-21 13:01:30]}} [2026-08-21 13:01:30.587] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 13:01:30.587] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T13:01:19Z", "value" => "0"} [2026-08-21 13:01:30.654] [DEBUG] QUERY OK db=66.6ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T13:01:19Z", "0", "cpu", 78122, ~N[2026-08-21 13:01:30], ~N[2026-08-21 13:01:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:30.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795072, itemkey: "cpu", value: "0", timestamp: "2026-08-21T13:01:19Z", message: "CPU usage percentage", status_log_id: 78122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:30], updated_at: ~N[2026-08-21 13:01:30]}} [2026-08-21 13:01:30.655] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T13:01:19Z", "value" => "1.0.0"} [2026-08-21 13:01:30.680] [DEBUG] QUERY OK db=24.5ms idle=68.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T13:01:19Z", "1.0.0", "parameter_config", 78122, ~N[2026-08-21 13:01:30], ~N[2026-08-21 13:01:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:30.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795073, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T13:01:19Z", message: "Current parameters version", status_log_id: 78122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:30], updated_at: ~N[2026-08-21 13:01:30]}} [2026-08-21 13:01:30.681] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T13:01:19Z", "value" => "1.0.1"} [2026-08-21 13:01:30.725] [DEBUG] QUERY OK db=43.5ms idle=27.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T13:01:19Z", "1.0.1", "emv_config", 78122, ~N[2026-08-21 13:01:30], ~N[2026-08-21 13:01:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:30.725] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795074, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T13:01:19Z", message: "Current EMV config version", status_log_id: 78122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:30], updated_at: ~N[2026-08-21 13:01:30]}} [2026-08-21 13:01:30.725] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T13:01:19Z", "value" => ""} [2026-08-21 13:01:30.806] [DEBUG] QUERY OK db=39.7ms queue=40.8ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T13:01:19Z", "keys_config", 78122, ~N[2026-08-21 13:01:30], ~N[2026-08-21 13:01:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:30.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795075, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T13:01:19Z", message: "Current keys config version", status_log_id: 78122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:30], updated_at: ~N[2026-08-21 13:01:30]}} [2026-08-21 13:01:30.807] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T13:01:19Z", "value" => "3.8.7.3"} [2026-08-21 13:01:30.871] [DEBUG] QUERY OK db=64.0ms idle=83.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T13:01:19Z", "3.8.7.3", "application", 78122, ~N[2026-08-21 13:01:30], ~N[2026-08-21 13:01:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:01:30.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795076, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T13:01:19Z", message: "Current application version", status_log_id: 78122, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:01:30], updated_at: ~N[2026-08-21 13:01:30]}} [2026-08-21 13:01:30.872] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T13:01:19Z"} [2026-08-21 13:01:30.872] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:01:19Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 29, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:01:40.221] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T13:01:19Z"} [2026-08-21 13:01:45.222] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:01:19Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 30, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:01:50.290] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T13:01:30Z"} [2026-08-21 13:01:50.291] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:01:30Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 31, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:01:50.632] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T13:01:30Z"} [2026-08-21 13:01:50.632] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:01:30Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 32, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:02:01.887] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:02:01.888] [INFO ] Incoming JSON payload: {"oid":"1a5b6000-59b1-4f60-9a25-0144bc0492b6","sn":"98251226730001","uploadTime":"2026-08-21T13:01:41Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"ram_free_mb","value":"886","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:01:41Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:02:01.892] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1a5b6000-59b1-4f60-9a25-0144bc0492b6", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:01:41Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:01:41Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:01:41Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:01:41Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:01:41Z", "value" => "886"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:01:41Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:01:41Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:01:41Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:01:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:01:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:01:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:01:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:01:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:01:41Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:01:41Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:01:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:01:41Z", "vendor" => "morefun"} [2026-08-21 13:02:01.892] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:02:01.892] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:02:01.893] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:02:01.897] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1305.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-08-21 13:02:01.903] [DEBUG] QUERY OK source="parameter_templates" db=5.8ms idle=303.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-08-21 13:02:01.903] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:02:01.908] [DEBUG] QUERY OK source="tms_terminals" db=3.9ms idle=6.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:02:01.912] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:02:01.926] [DEBUG] QUERY OK source="tms_terminals" db=13.1ms idle=9.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:02:01], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:02:01.926] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:02:01.935] [DEBUG] QUERY OK source="tms_terminals" db=7.8ms 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.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:02:01.982] [DEBUG] QUERY OK source="tms_terminals" db=46.9ms idle=9.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:02:01], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:02:02.034] [DEBUG] QUERY OK db=50.9ms idle=50.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "1a5b6000-59b1-4f60-9a25-0144bc0492b6", "2026-08-21T13:01:41Z", ~N[2026-08-21 13:02:01], ~N[2026-08-21 13:02:01]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:02:02.034] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78124, oid: "1a5b6000-59b1-4f60-9a25-0144bc0492b6", upload_time: "2026-08-21T13:01:41Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:01], updated_at: ~N[2026-08-21 13:02:01]} [2026-08-21 13:02:02.034] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:01:41Z", "value" => "morefun"} [2026-08-21 13:02:02.080] [DEBUG] QUERY OK db=42.8ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "morefun", "vendor", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795093, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.081] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:01:41Z", "value" => "kiosk_launcher"} [2026-08-21 13:02:02.127] [DEBUG] QUERY OK db=43.1ms queue=2.7ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "kiosk_launcher", "model", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.127] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795094, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.127] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:01:41Z", "value" => "1.0"} [2026-08-21 13:02:02.180] [DEBUG] QUERY OK db=47.8ms queue=4.6ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "1.0", "app_version", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795095, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.180] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:01:41Z", "value" => "13"} [2026-08-21 13:02:02.245] [DEBUG] QUERY OK db=64.5ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "13", "android_version", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.245] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795096, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.246] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:01:41Z", "value" => "886"} [2026-08-21 13:02:02.291] [DEBUG] QUERY OK db=45.4ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "886", "ram_free_mb", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.292] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795097, itemkey: "ram_free_mb", value: "886", timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.292] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:01:41Z", "value" => "WIFI"} [2026-08-21 13:02:02.342] [DEBUG] QUERY OK db=45.7ms idle=44.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "WIFI", "network_type", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.342] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795098, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.343] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:01:41Z", "value" => "true"} [2026-08-21 13:02:02.387] [DEBUG] QUERY OK db=43.9ms idle=54.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "true", "kiosk_active", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.388] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795099, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.388] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:01:41Z", "value" => ""} [2026-08-21 13:02:02.436] [DEBUG] QUERY OK db=46.1ms queue=1.5ms idle=46.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:01:41Z", "sim_operator", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.438] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795100, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.440] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:01:41Z", "value" => "UNKNOWN"} [2026-08-21 13:02:02.484] [DEBUG] QUERY OK db=44.5ms idle=52.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "UNKNOWN", "sim_number", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.485] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795101, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.491] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:01:41Z", "value" => "UNKNOWN"} [2026-08-21 13:02:02.551] [DEBUG] QUERY OK db=59.7ms idle=54.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "UNKNOWN", "sim_iccid", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795102, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.557] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:01:41Z", "value" => "UNKNOWN"} [2026-08-21 13:02:02.609] [DEBUG] QUERY OK db=47.8ms idle=75.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "UNKNOWN", "sim_imsi", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795103, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.610] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:01:41Z", "value" => "UNKNOWN"} [2026-08-21 13:02:02.658] [DEBUG] QUERY OK db=47.5ms idle=6.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "UNKNOWN", "sim_iccid2", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795104, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.659] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:01:41Z", "value" => "UNKNOWN"} [2026-08-21 13:02:02.694] [DEBUG] QUERY OK db=35.2ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "UNKNOWN", "sim_imsi2", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795105, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.701] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:01:41Z", "value" => "37"} [2026-08-21 13:02:02.760] [DEBUG] QUERY OK db=58.7ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "37", "data_usage_mb", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.760] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795106, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.760] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:01:41Z", "value" => "0"} [2026-08-21 13:02:02.816] [DEBUG] QUERY OK db=55.0ms idle=66.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "0", "mobile_data_mb", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795107, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:02.816] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:01:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:02:02.895] [DEBUG] QUERY OK db=77.8ms idle=56.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:01:41Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78124, ~N[2026-08-21 13:02:02], ~N[2026-08-21 13:02:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:02.919] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795108, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:01:41Z", message: nil, status_log_id: 78124, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:02], updated_at: ~N[2026-08-21 13:02:02]}} [2026-08-21 13:02:04.997] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 13:02:04.997] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T04:11:30Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T04:11:30Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T04:11:30Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T04:11:30Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T04:11:30Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T04:11:30Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T04:11:30Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T04:11:30Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T04:11:30Z","vendor":"MoreFun"} [2026-08-21 13:02:04.998] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T04:11:30Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T04:11:30Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T04:11:30Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T04:11:30Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T04:11:30Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T04:11:30Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T04:11:30Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T04:11:30Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T04:11:30Z", "vendor" => "MoreFun"} [2026-08-21 13:02:04.998] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 13:02:04.998] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 13:02:04.999] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 13:02:05.001] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=557.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 13:02:05.003] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=377.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 13:02:05.004] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms 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-08-21 13:02:05.008] [DEBUG] QUERY OK source="parameter_definitions" db=1.2ms queue=2.3ms idle=1.5ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 13:02:05.015] [DEBUG] QUERY OK source="pos_terminal" db=6.3ms idle=4.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 13:02:05.050] [DEBUG] QUERY OK source="pos_merchant" db=34.3ms idle=7.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 13:02:05.051] [DEBUG] QUERY OK db=0.5ms queue=0.5ms idle=1619.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 ["123451234512345"] [2026-08-21 13:02:05.051] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 13:02:05.053] [DEBUG] QUERY OK source="pos_terminal_data" db=1.7ms idle=40.5ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 13:02:05.053] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 13:02:05.056] [DEBUG] QUERY OK source="address" db=1.9ms idle=3.8ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 13:02:05.056] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 13:02:05.057] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 13:02:05.089] [DEBUG] QUERY OK db=30.5ms idle=4.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "673c19d812b96b9efb4aeed89e713ecbb1c4a8f5296a9a652d3dd1a45e85148d", 6146, 932, ~U[2026-08-21 13:02:05Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 13:02:05], ~N[2026-08-21 13:02:05]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 13:02:05.089] [INFO ] AutoPushService: Created push log 49153 for MF919 params.zip [2026-08-21 13:02:05.089] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 6146, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 13:02:05.089] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 13:02:05.089] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 13:02:05.094] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=37.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 13:02:05.099] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 13:02:05.148] [DEBUG] QUERY OK db=47.5ms idle=12.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3149c1360bbe60b9bc0e1ad296fa659ffd3c99e9544251313652d4f6fbb941ab", 6242, 17947, ~U[2026-08-21 13:02:05Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 13:02:05], ~N[2026-08-21 13:02:05]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 13:02:05.149] [INFO ] AutoPushService: Created push log 49155 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 13:02:05.149] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 6242, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 13:02:05.149] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 13:02:05.149] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 13:02:05.152] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms decode=0.5ms idle=55.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-08-21 13:02:05.152] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 13:02:05.153] [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` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 13:02:05.156] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 13:02:05.159] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 13:02:05.159] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:02:05.160] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:02:05.163] [DEBUG] QUERY OK source="config_file_versions" db=2.6ms idle=8.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 13:02:05.163] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:02:05.166] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 13:02:05.168] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=13.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 13:02:05.171] [INFO ] Terminal updated: 98250623730001 [2026-08-21 13:02:05.207] [DEBUG] QUERY OK source="tms_terminals" db=35.8ms idle=8.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:02:05], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:02:05.209] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.6ms idle=39.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-08-21 13:02:05.211] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=2.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:02:05.212] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=2.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:02:05.214] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 13:02:05.254] [DEBUG] QUERY OK source="parameter_push_logs" db=40.0ms idle=2.6ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [19, "application", ~N[2026-08-21 12:32:05]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 13:02:05.254] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 13:02:05.254] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 13:02:05.257] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=42.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 13:02:05.260] [DEBUG] QUERY OK source="config_file_versions" db=2.3ms idle=3.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 13:02:05.260] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:02:05.261] [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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:02:05.291] [DEBUG] QUERY OK source="tms_terminals" db=29.4ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:02:05], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:02:05.327] [DEBUG] QUERY OK db=35.2ms idle=30.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T04:11:30Z", ~N[2026-08-21 13:02:05], ~N[2026-08-21 13:02:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:02:05.327] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78125, oid: "organization_id", upload_time: "2026-08-21T04:11:30Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:05], updated_at: ~N[2026-08-21 13:02:05]} [2026-08-21 13:02:05.334] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T04:11:30Z", "value" => "online"} [2026-08-21 13:02:05.371] [DEBUG] QUERY OK db=32.8ms idle=47.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T04:11:30Z", "online", "status", 78125, ~N[2026-08-21 13:02:05], ~N[2026-08-21 13:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:05.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795109, itemkey: "status", value: "online", timestamp: "2026-08-21T04:11:30Z", message: "Terminal status update", status_log_id: 78125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:05], updated_at: ~N[2026-08-21 13:02:05]}} [2026-08-21 13:02:05.379] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 13:02:05.383] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T04:11:30Z", "value" => "51"} [2026-08-21 13:02:05.431] [DEBUG] QUERY OK db=47.6ms queue=0.1ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T04:11:30Z", "51", "battery", 78125, ~N[2026-08-21 13:02:05], ~N[2026-08-21 13:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:05.431] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795110, itemkey: "battery", value: "51", timestamp: "2026-08-21T04:11:30Z", message: "Battery level", status_log_id: 78125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:05], updated_at: ~N[2026-08-21 13:02:05]}} [2026-08-21 13:02:05.431] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T04:11:30Z", "value" => "online"} [2026-08-21 13:02:05.481] [DEBUG] QUERY OK db=44.6ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T04:11:30Z", "online", "network", 78125, ~N[2026-08-21 13:02:05], ~N[2026-08-21 13:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:05.482] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795111, itemkey: "network", value: "online", timestamp: "2026-08-21T04:11:30Z", message: "Network connectivity", status_log_id: 78125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:05], updated_at: ~N[2026-08-21 13:02:05]}} [2026-08-21 13:02:05.482] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 13:02:05.483] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T04:11:30Z", "value" => "0"} [2026-08-21 13:02:05.540] [DEBUG] QUERY OK db=56.8ms idle=52.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T04:11:30Z", "0", "cpu", 78125, ~N[2026-08-21 13:02:05], ~N[2026-08-21 13:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:05.540] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795113, itemkey: "cpu", value: "0", timestamp: "2026-08-21T04:11:30Z", message: "CPU usage percentage", status_log_id: 78125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:05], updated_at: ~N[2026-08-21 13:02:05]}} [2026-08-21 13:02:05.540] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T04:11:30Z", "value" => "1.0.0"} [2026-08-21 13:02:05.611] [DEBUG] QUERY OK db=70.0ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T04:11:30Z", "1.0.0", "parameter_config", 78125, ~N[2026-08-21 13:02:05], ~N[2026-08-21 13:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:05.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795114, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T04:11:30Z", message: "Current parameters version", status_log_id: 78125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:05], updated_at: ~N[2026-08-21 13:02:05]}} [2026-08-21 13:02:05.611] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T04:11:30Z", "value" => "1.0.1"} [2026-08-21 13:02:05.682] [DEBUG] QUERY OK db=70.8ms idle=71.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T04:11:30Z", "1.0.1", "emv_config", 78125, ~N[2026-08-21 13:02:05], ~N[2026-08-21 13:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:05.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795116, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T04:11:30Z", message: "Current EMV config version", status_log_id: 78125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:05], updated_at: ~N[2026-08-21 13:02:05]}} [2026-08-21 13:02:05.683] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T04:11:30Z", "value" => ""} [2026-08-21 13:02:05.786] [DEBUG] QUERY OK db=58.0ms queue=41.2ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T04:11:30Z", "keys_config", 78125, ~N[2026-08-21 13:02:05], ~N[2026-08-21 13:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:05.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795119, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T04:11:30Z", message: "Current keys config version", status_log_id: 78125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:05], updated_at: ~N[2026-08-21 13:02:05]}} [2026-08-21 13:02:05.791] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T04:11:30Z", "value" => "3.8.7.3"} [2026-08-21 13:02:05.875] [DEBUG] QUERY OK db=81.3ms queue=1.5ms idle=109.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T04:11:30Z", "3.8.7.3", "application", 78125, ~N[2026-08-21 13:02:05], ~N[2026-08-21 13:02:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:05.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795121, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T04:11:30Z", message: "Current application version", status_log_id: 78125, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:05], updated_at: ~N[2026-08-21 13:02:05]}} [2026-08-21 13:02:05.875] [WARN ] Unexpected async result [2026-08-21 13:02:05.875] [WARN ] Unexpected async result [2026-08-21 13:02:12.001] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:02:17.002] [INFO ] Incoming JSON payload: {"oid":"431b4631-7eaf-4bca-af10-059779281d29","sn":"98251226730001","uploadTime":"2026-08-21T13:02:11Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"ram_free_mb","value":"879","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:02:11Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:02:22.004] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "431b4631-7eaf-4bca-af10-059779281d29", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:02:11Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:02:11Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:02:11Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:02:11Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:02:11Z", "value" => "879"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:02:11Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:02:11Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:02:11Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:02:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:02:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:02:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:02:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:02:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:02:11Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:02:11Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:02:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:02:11Z", "vendor" => "morefun"} [2026-08-21 13:02:27.005] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:02:32.006] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:02:36.919] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:02:36.921] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=1193.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-08-21 13:02:36.924] [DEBUG] QUERY OK source="parameter_templates" db=3.4ms idle=191.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-08-21 13:02:36.924] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:02:36.925] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=4.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:02:36.925] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:02:36.962] [DEBUG] QUERY OK source="tms_terminals" db=35.8ms queue=0.6ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:02:36], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:02:36.962] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:02:36.963] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:02:36.997] [DEBUG] QUERY OK source="tms_terminals" db=33.5ms queue=0.1ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:02:36], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:02:37.023] [DEBUG] QUERY OK db=25.1ms idle=34.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "431b4631-7eaf-4bca-af10-059779281d29", "2026-08-21T13:02:11Z", ~N[2026-08-21 13:02:36], ~N[2026-08-21 13:02:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:02:37.023] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78128, oid: "431b4631-7eaf-4bca-af10-059779281d29", upload_time: "2026-08-21T13:02:11Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:36], updated_at: ~N[2026-08-21 13:02:36]} [2026-08-21 13:02:37.023] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:02:11Z", "value" => "morefun"} [2026-08-21 13:02:37.152] [DEBUG] QUERY OK db=87.0ms queue=41.0ms idle=26.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "morefun", "vendor", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.152] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795141, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.152] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:02:11Z", "value" => "kiosk_launcher"} [2026-08-21 13:02:37.233] [DEBUG] QUERY OK db=80.4ms idle=129.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "kiosk_launcher", "model", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.233] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795142, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.233] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:02:11Z", "value" => "1.0"} [2026-08-21 13:02:37.266] [DEBUG] QUERY OK db=31.7ms idle=82.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "1.0", "app_version", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795143, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.266] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:02:11Z", "value" => "13"} [2026-08-21 13:02:37.306] [DEBUG] QUERY OK db=39.9ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "13", "android_version", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.307] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795144, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.307] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:02:11Z", "value" => "879"} [2026-08-21 13:02:37.353] [DEBUG] QUERY OK db=45.7ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "879", "ram_free_mb", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795145, itemkey: "ram_free_mb", value: "879", timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.353] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:02:11Z", "value" => "WIFI"} [2026-08-21 13:02:37.379] [DEBUG] QUERY OK db=25.6ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "WIFI", "network_type", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795146, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.380] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:02:11Z", "value" => "true"} [2026-08-21 13:02:37.403] [DEBUG] QUERY OK db=22.9ms idle=27.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "true", "kiosk_active", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.404] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795147, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.404] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:02:11Z", "value" => ""} [2026-08-21 13:02:37.441] [DEBUG] QUERY OK db=36.8ms idle=24.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:02:11Z", "sim_operator", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.441] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795148, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.441] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:02:11Z", "value" => "UNKNOWN"} [2026-08-21 13:02:37.494] [DEBUG] QUERY OK db=52.6ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "UNKNOWN", "sim_number", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795149, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.495] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:02:11Z", "value" => "UNKNOWN"} [2026-08-21 13:02:37.544] [DEBUG] QUERY OK db=48.7ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "UNKNOWN", "sim_iccid", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795150, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.544] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:02:11Z", "value" => "UNKNOWN"} [2026-08-21 13:02:37.584] [DEBUG] QUERY OK db=37.9ms queue=0.9ms idle=50.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "UNKNOWN", "sim_imsi", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795151, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.584] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:02:11Z", "value" => "UNKNOWN"} [2026-08-21 13:02:37.633] [DEBUG] QUERY OK db=47.7ms idle=40.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "UNKNOWN", "sim_iccid2", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795152, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.633] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:02:11Z", "value" => "UNKNOWN"} [2026-08-21 13:02:37.669] [DEBUG] QUERY OK db=35.6ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "UNKNOWN", "sim_imsi2", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795153, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.670] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:02:11Z", "value" => "37"} [2026-08-21 13:02:37.710] [DEBUG] QUERY OK db=40.2ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "37", "data_usage_mb", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.711] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795154, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.711] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:02:11Z", "value" => "0"} [2026-08-21 13:02:37.752] [DEBUG] QUERY OK db=41.3ms idle=41.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "0", "mobile_data_mb", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795155, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.754] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:02:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:02:37.779] [DEBUG] QUERY OK db=23.8ms idle=21.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:11Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78128, ~N[2026-08-21 13:02:37], ~N[2026-08-21 13:02:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:37.779] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795156, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:02:11Z", message: nil, status_log_id: 78128, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:37], updated_at: ~N[2026-08-21 13:02:37]}} [2026-08-21 13:02:37.780] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch980308009433_20260821130234804","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T13:02:35Z"} [2026-08-21 13:02:37.780] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch980308009433_20260821130234804", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:02:35Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 36, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 57, 56, 48, 51, 48, 56, 48, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:02:42.098] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:02:47.099] [INFO ] Incoming JSON payload: {"oid":"4912f1cc-8b46-4d46-a797-d8634a3e77df","sn":"98251226730001","uploadTime":"2026-08-21T13:02:41Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"ram_free_mb","value":"874","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:02:41Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:02:51.925] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4912f1cc-8b46-4d46-a797-d8634a3e77df", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:02:41Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:02:41Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:02:41Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:02:41Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:02:41Z", "value" => "874"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:02:41Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:02:41Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:02:41Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:02:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:02:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:02:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:02:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:02:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:02:41Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:02:41Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:02:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:02:41Z", "vendor" => "morefun"} [2026-08-21 13:02:51.925] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:02:51.926] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:02:51.926] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:02:51.927] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.2ms idle=1153.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 13:02:51.928] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=151.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-08-21 13:02:51.928] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:02:51.929] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:02:51.929] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:02:52.130] [DEBUG] QUERY OK source="tms_terminals" db=200.4ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:02:51], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:02:52.130] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:02:52.132] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:02:52.167] [DEBUG] QUERY OK source="tms_terminals" db=34.7ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:02:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:02:52.218] [DEBUG] QUERY OK db=50.4ms idle=35.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "4912f1cc-8b46-4d46-a797-d8634a3e77df", "2026-08-21T13:02:41Z", ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:02:52.219] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78130, oid: "4912f1cc-8b46-4d46-a797-d8634a3e77df", upload_time: "2026-08-21T13:02:41Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]} [2026-08-21 13:02:52.219] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:02:41Z", "value" => "morefun"} [2026-08-21 13:02:52.274] [DEBUG] QUERY OK db=54.3ms idle=52.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "morefun", "vendor", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.274] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795173, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.274] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:02:41Z", "value" => "kiosk_launcher"} [2026-08-21 13:02:52.339] [DEBUG] QUERY OK db=64.1ms idle=56.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "kiosk_launcher", "model", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.339] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795174, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.339] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:02:41Z", "value" => "1.0"} [2026-08-21 13:02:52.362] [DEBUG] QUERY OK db=22.4ms idle=65.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "1.0", "app_version", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795175, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.362] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:02:41Z", "value" => "13"} [2026-08-21 13:02:52.442] [DEBUG] QUERY OK db=79.4ms idle=23.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "13", "android_version", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795176, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.442] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:02:41Z", "value" => "874"} [2026-08-21 13:02:52.520] [DEBUG] QUERY OK db=77.4ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "874", "ram_free_mb", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795177, itemkey: "ram_free_mb", value: "874", timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.521] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:02:41Z", "value" => "WIFI"} [2026-08-21 13:02:52.548] [DEBUG] QUERY OK db=26.2ms idle=68.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "WIFI", "network_type", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.548] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795178, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.548] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:02:41Z", "value" => "true"} [2026-08-21 13:02:52.590] [DEBUG] QUERY OK db=41.5ms queue=0.5ms idle=27.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "true", "kiosk_active", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795179, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.591] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:02:41Z", "value" => ""} [2026-08-21 13:02:52.627] [DEBUG] QUERY OK db=35.8ms idle=43.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:02:41Z", "sim_operator", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.627] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795180, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.628] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:02:41Z", "value" => "UNKNOWN"} [2026-08-21 13:02:52.677] [DEBUG] QUERY OK db=49.4ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "UNKNOWN", "sim_number", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.678] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795181, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.678] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:02:41Z", "value" => "UNKNOWN"} [2026-08-21 13:02:52.726] [DEBUG] QUERY OK db=48.0ms queue=0.1ms idle=51.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "UNKNOWN", "sim_iccid", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.727] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795182, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.727] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:02:41Z", "value" => "UNKNOWN"} [2026-08-21 13:02:52.750] [DEBUG] QUERY OK db=22.4ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "UNKNOWN", "sim_imsi", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.750] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795183, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.750] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:02:41Z", "value" => "UNKNOWN"} [2026-08-21 13:02:52.806] [DEBUG] QUERY OK db=55.6ms idle=24.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "UNKNOWN", "sim_iccid2", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795184, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.807] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:02:41Z", "value" => "UNKNOWN"} [2026-08-21 13:02:52.843] [DEBUG] QUERY OK db=35.4ms idle=27.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "UNKNOWN", "sim_imsi2", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795185, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.844] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:02:41Z", "value" => "37"} [2026-08-21 13:02:52.874] [DEBUG] QUERY OK db=29.7ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "37", "data_usage_mb", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795186, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.875] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:02:41Z", "value" => "0"} [2026-08-21 13:02:52.910] [DEBUG] QUERY OK db=34.7ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "0", "mobile_data_mb", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795187, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:52.911] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:02:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:02:52.961] [DEBUG] QUERY OK db=49.2ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:02:41Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78130, ~N[2026-08-21 13:02:52], ~N[2026-08-21 13:02:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:52.962] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795188, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:02:41Z", message: nil, status_log_id: 78130, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:52], updated_at: ~N[2026-08-21 13:02:52]}} [2026-08-21 13:02:55.655] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 13:02:55.655] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T17:02:53Z","org.device":[{"itemkey":"battery","value":39,"timestamp":"2026-08-21T17:02:53Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T17:02:53Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T17:02:53Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T17:02:53Z","message":""}]} [2026-08-21 13:02:55.656] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T17:02:53Z", "value" => 39}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T17:02:53Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T17:02:53Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T17:02:53Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T17:02:53Z"} [2026-08-21 13:02:55.656] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:02:55.657] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=1210.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:02:55.658] [INFO ] Terminal updated: 61250415798001 [2026-08-21 13:02:55.763] [DEBUG] QUERY OK source="tms_terminals" db=104.3ms queue=0.1ms idle=873.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:02:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:02:55.764] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=105.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:02:55.834] [DEBUG] QUERY OK source="tms_terminals" db=69.8ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:02:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:02:55.904] [DEBUG] QUERY OK db=68.9ms queue=0.5ms idle=47.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T17:02:53Z", ~N[2026-08-21 13:02:55], ~N[2026-08-21 13:02:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:02:55.905] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78131, oid: "org-id-placeholder", upload_time: "2026-08-21T17:02:53Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:55], updated_at: ~N[2026-08-21 13:02:55]} [2026-08-21 13:02:55.905] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T17:02:53Z", "value" => 39} [2026-08-21 13:02:56.044] [DEBUG] QUERY OK db=139.2ms idle=70.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T17:02:53Z", "39", "battery", 78131, ~N[2026-08-21 13:02:55], ~N[2026-08-21 13:02:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:56.045] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795189, itemkey: "battery", value: "39", timestamp: "2026-08-21T17:02:53Z", message: nil, status_log_id: 78131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:55], updated_at: ~N[2026-08-21 13:02:55]}} [2026-08-21 13:02:56.045] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T17:02:53Z", "value" => 50} [2026-08-21 13:02:56.092] [DEBUG] QUERY OK db=46.6ms idle=140.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T17:02:53Z", "50", "memory", 78131, ~N[2026-08-21 13:02:56], ~N[2026-08-21 13:02:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:56.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795191, itemkey: "memory", value: "50", timestamp: "2026-08-21T17:02:53Z", message: "Normal", status_log_id: 78131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:56], updated_at: ~N[2026-08-21 13:02:56]}} [2026-08-21 13:02:56.092] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T17:02:53Z", "value" => 50} [2026-08-21 13:02:56.174] [DEBUG] QUERY OK db=80.9ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T17:02:53Z", "50", "cpu", 78131, ~N[2026-08-21 13:02:56], ~N[2026-08-21 13:02:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:56.174] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795193, itemkey: "cpu", value: "50", timestamp: "2026-08-21T17:02:53Z", message: nil, status_log_id: 78131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:56], updated_at: ~N[2026-08-21 13:02:56]}} [2026-08-21 13:02:56.174] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T17:02:53Z", "value" => "online"} [2026-08-21 13:02:56.272] [DEBUG] QUERY OK db=97.3ms idle=82.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T17:02:53Z", "online", "network", 78131, ~N[2026-08-21 13:02:56], ~N[2026-08-21 13:02:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:02:56.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795195, itemkey: "network", value: "online", timestamp: "2026-08-21T17:02:53Z", message: nil, status_log_id: 78131, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:02:56], updated_at: ~N[2026-08-21 13:02:56]}} [2026-08-21 13:02:56.272] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 13:03:12.203] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:03:12.206] [INFO ] Incoming JSON payload: {"oid":"72def979-085d-4f5f-95ce-dd36ac6d74bc","sn":"98251226730001","uploadTime":"2026-08-21T13:03:11Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"ram_free_mb","value":"876","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:03:11Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:03:12.207] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "72def979-085d-4f5f-95ce-dd36ac6d74bc", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:03:11Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:03:11Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:03:11Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:03:11Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:03:11Z", "value" => "876"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:03:11Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:03:11Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:03:11Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:03:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:03:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:03:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:03:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:03:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:03:11Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:03:11Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:03:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:03:11Z", "vendor" => "morefun"} [2026-08-21 13:03:12.207] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:03:12.207] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:03:12.207] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:03:12.212] [DEBUG] QUERY OK source="parameter_templates" db=4.1ms idle=1336.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-08-21 13:03:12.218] [DEBUG] QUERY OK source="parameter_templates" db=4.1ms queue=0.1ms idle=336.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-08-21 13:03:12.219] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:03:12.224] [DEBUG] QUERY OK source="tms_terminals" db=4.1ms idle=7.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, 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-08-21 13:03:12.224] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:03:12.251] [DEBUG] QUERY OK source="tms_terminals" db=25.7ms idle=6.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:03:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:03:12.251] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:03:12.254] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=27.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:03:12.305] [DEBUG] QUERY OK source="tms_terminals" db=49.4ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:03:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:03:12.358] [DEBUG] QUERY OK db=52.1ms idle=51.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "72def979-085d-4f5f-95ce-dd36ac6d74bc", "2026-08-21T13:03:11Z", ~N[2026-08-21 13:03:12], ~N[2026-08-21 13:03:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:03:12.358] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78133, oid: "72def979-085d-4f5f-95ce-dd36ac6d74bc", upload_time: "2026-08-21T13:03:11Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:12], updated_at: ~N[2026-08-21 13:03:12]} [2026-08-21 13:03:12.358] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:03:11Z", "value" => "morefun"} [2026-08-21 13:03:12.416] [DEBUG] QUERY OK db=57.4ms idle=53.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "morefun", "vendor", 78133, ~N[2026-08-21 13:03:12], ~N[2026-08-21 13:03:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:12.416] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795197, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:12], updated_at: ~N[2026-08-21 13:03:12]}} [2026-08-21 13:03:12.416] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:03:11Z", "value" => "kiosk_launcher"} [2026-08-21 13:03:12.468] [DEBUG] QUERY OK db=51.3ms idle=58.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "kiosk_launcher", "model", 78133, ~N[2026-08-21 13:03:12], ~N[2026-08-21 13:03:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:12.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795199, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:12], updated_at: ~N[2026-08-21 13:03:12]}} [2026-08-21 13:03:12.469] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:03:11Z", "value" => "1.0"} [2026-08-21 13:03:12.519] [DEBUG] QUERY OK db=49.2ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "1.0", "app_version", 78133, ~N[2026-08-21 13:03:12], ~N[2026-08-21 13:03:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:12.519] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795201, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:12], updated_at: ~N[2026-08-21 13:03:12]}} [2026-08-21 13:03:12.519] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:03:11Z", "value" => "13"} [2026-08-21 13:03:12.573] [DEBUG] QUERY OK db=53.2ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "13", "android_version", 78133, ~N[2026-08-21 13:03:12], ~N[2026-08-21 13:03:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:12.574] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795203, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:12], updated_at: ~N[2026-08-21 13:03:12]}} [2026-08-21 13:03:12.574] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:03:11Z", "value" => "876"} [2026-08-21 13:03:12.638] [DEBUG] QUERY OK db=63.7ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "876", "ram_free_mb", 78133, ~N[2026-08-21 13:03:12], ~N[2026-08-21 13:03:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:12.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795204, itemkey: "ram_free_mb", value: "876", timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:12], updated_at: ~N[2026-08-21 13:03:12]}} [2026-08-21 13:03:12.638] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:03:11Z", "value" => "WIFI"} [2026-08-21 13:03:12.700] [DEBUG] QUERY OK db=61.6ms idle=65.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "WIFI", "network_type", 78133, ~N[2026-08-21 13:03:12], ~N[2026-08-21 13:03:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:12.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795206, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:12], updated_at: ~N[2026-08-21 13:03:12]}} [2026-08-21 13:03:12.701] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:03:11Z", "value" => "true"} [2026-08-21 13:03:12.735] [DEBUG] QUERY OK db=34.1ms idle=63.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "true", "kiosk_active", 78133, ~N[2026-08-21 13:03:12], ~N[2026-08-21 13:03:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:12.736] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795208, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:12], updated_at: ~N[2026-08-21 13:03:12]}} [2026-08-21 13:03:12.736] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:03:11Z", "value" => ""} [2026-08-21 13:03:12.776] [DEBUG] QUERY OK db=39.9ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:03:11Z", "sim_operator", 78133, ~N[2026-08-21 13:03:12], ~N[2026-08-21 13:03:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:12.776] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795210, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:12], updated_at: ~N[2026-08-21 13:03:12]}} [2026-08-21 13:03:12.776] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:03:11Z", "value" => "UNKNOWN"} [2026-08-21 13:03:12.844] [DEBUG] QUERY OK db=67.3ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "UNKNOWN", "sim_number", 78133, ~N[2026-08-21 13:03:12], ~N[2026-08-21 13:03:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:12.844] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795212, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:12], updated_at: ~N[2026-08-21 13:03:12]}} [2026-08-21 13:03:12.844] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:03:11Z", "value" => "UNKNOWN"} [2026-08-21 13:03:12.968] [DEBUG] QUERY OK db=123.1ms idle=68.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "UNKNOWN", "sim_iccid", 78133, ~N[2026-08-21 13:03:12], ~N[2026-08-21 13:03:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:12.968] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795214, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:12], updated_at: ~N[2026-08-21 13:03:12]}} [2026-08-21 13:03:12.969] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:03:11Z", "value" => "UNKNOWN"} [2026-08-21 13:03:13.026] [DEBUG] QUERY OK db=55.4ms idle=87.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "UNKNOWN", "sim_imsi", 78133, ~N[2026-08-21 13:03:12], ~N[2026-08-21 13:03:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:13.026] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795216, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:12], updated_at: ~N[2026-08-21 13:03:12]}} [2026-08-21 13:03:13.026] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:03:11Z", "value" => "UNKNOWN"} [2026-08-21 13:03:13.096] [DEBUG] QUERY OK db=69.9ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "UNKNOWN", "sim_iccid2", 78133, ~N[2026-08-21 13:03:13], ~N[2026-08-21 13:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:13.096] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795217, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:13], updated_at: ~N[2026-08-21 13:03:13]}} [2026-08-21 13:03:13.096] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:03:11Z", "value" => "UNKNOWN"} [2026-08-21 13:03:13.153] [DEBUG] QUERY OK db=55.8ms idle=71.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "UNKNOWN", "sim_imsi2", 78133, ~N[2026-08-21 13:03:13], ~N[2026-08-21 13:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:13.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795219, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:13], updated_at: ~N[2026-08-21 13:03:13]}} [2026-08-21 13:03:13.153] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:03:11Z", "value" => "37"} [2026-08-21 13:03:13.208] [DEBUG] QUERY OK db=54.0ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "37", "data_usage_mb", 78133, ~N[2026-08-21 13:03:13], ~N[2026-08-21 13:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:13.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795221, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:13], updated_at: ~N[2026-08-21 13:03:13]}} [2026-08-21 13:03:13.208] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:03:11Z", "value" => "0"} [2026-08-21 13:03:13.281] [DEBUG] QUERY OK db=72.1ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "0", "mobile_data_mb", 78133, ~N[2026-08-21 13:03:13], ~N[2026-08-21 13:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:13.281] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795223, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:13], updated_at: ~N[2026-08-21 13:03:13]}} [2026-08-21 13:03:13.282] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:03:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:03:13.357] [DEBUG] QUERY OK db=74.9ms idle=74.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:11Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78133, ~N[2026-08-21 13:03:13], ~N[2026-08-21 13:03:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:13.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795225, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:03:11Z", message: nil, status_log_id: 78133, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:13], updated_at: ~N[2026-08-21 13:03:13]}} [2026-08-21 13:03:26.400] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch980308009433_20260821130325991","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T13:03:26Z"} [2026-08-21 13:03:31.400] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch980308009433_20260821130325991", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:03:26Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 39, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 57, 56, 48, 51, 48, 56, 48, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:03:32.129] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:03:32.129] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T13:03:31Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T13:03:31Z","value":"50"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T13:03:31Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T13:03:31Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T13:03:31Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T13:03:31Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T13:03:31Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T13:03:31Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T13:03:31Z","vendor":"MoreFun"} [2026-08-21 13:03:32.130] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T13:03:31Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T13:03:31Z", "value" => "50"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T13:03:31Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T13:03:31Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T13:03:31Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T13:03:31Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T13:03:31Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T13:03:31Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:03:31Z", "vendor" => "MoreFun"} [2026-08-21 13:03:32.130] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 13:03:32.130] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:03:32.130] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 13:03:32.131] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=1188.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-08-21 13:03:32.132] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=187.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 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-08-21 13:03:32.136] [DEBUG] QUERY OK source="parameter_template_values" db=2.9ms 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-08-21 13:03:32.139] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=0.6ms idle=4.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-08-21 13:03:32.143] [DEBUG] QUERY OK source="pos_terminal" db=1.0ms queue=0.1ms idle=6.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-08-21 13:03:32.180] [DEBUG] QUERY OK source="pos_merchant" db=36.1ms idle=4.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 13:03:32.181] [DEBUG] QUERY OK db=0.7ms queue=0.6ms idle=1739.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 ["626165170000000"] [2026-08-21 13:03:32.181] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 13:03:32.184] [DEBUG] QUERY OK source="pos_terminal_data" db=2.3ms idle=38.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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 13:03:32.185] [DEBUG] QUERY OK source="address" db=0.5ms idle=4.6ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 13:03:32.185] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 13:03:32.187] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 13:03:32.225] [DEBUG] QUERY OK db=36.8ms queue=0.3ms idle=3.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "3eac4bfbba5e5e65bf892b69332d2d785e85084e08e6a4a1c530c0a2a8360f13", 1731, 938, ~U[2026-08-21 13:03:32Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 13:03:32], ~N[2026-08-21 13:03:32]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 13:03:32.226] [INFO ] AutoPushService: Created push log 49157 for MF919 params.zip [2026-08-21 13:03:32.226] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1731, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 13:03:32.226] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 13:03:32.227] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 13:03:32.229] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms queue=0.1ms idle=43.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-08-21 13:03:32.237] [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-08-21 13:03:32.292] [DEBUG] QUERY OK db=51.9ms queue=1.4ms idle=12.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "82a2707784c549ff2acada0b2516fdd6c9b3111268c3ac59d196563be300a215", 1827, 17947, ~U[2026-08-21 13:03:32Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 13:03:32], ~N[2026-08-21 13:03:32]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 13:03:32.292] [INFO ] AutoPushService: Created push log 49159 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 13:03:32.294] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 1827, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 13:03:32.294] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 13:03:32.295] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 13:03:32.298] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=1.1ms idle=66.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-08-21 13:03:32.298] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 13:03:32.299] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=6.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 13:03:32.299] [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-08-21 13:03:32.304] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 13:03:32.304] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:03:32.304] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:03:32.305] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=6.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 13:03:32.306] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:03:32.307] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 13:03:32.309] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=8.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:03:32.395] [DEBUG] QUERY OK source="tms_terminals" db=41.2ms queue=44.1ms idle=5.1ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["MoreFun", "MF919", ~N[2026-08-21 13:03:32], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 13:03:32.396] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:03:32.396] [INFO ] Event published: terminal_updated [2026-08-21 13:03:32.396] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 13:03:32.396] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 13:03:32.396] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 13:03:32.398] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.8ms queue=0.2ms idle=0.6ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 13:03:32], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 13:03:32.399] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=2.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 13:03:32.402] [DEBUG] QUERY OK source="terminal_group_rules" db=3.0ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 13:03:32.404] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 13:03:32.478] [DEBUG] QUERY OK source="tms_terminals" db=38.3ms queue=40.9ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MoreFun", "MF919", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 13:03:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:03:32.480] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.5ms idle=76.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-08-21 13:03:32.482] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.3ms idle=3.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:03:32.483] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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-08-21 13:03:32.483] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 13:03:32.559] [DEBUG] QUERY OK source="parameter_push_logs" db=76.0ms 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-08-21 12:33:32]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 13:03:32.559] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 13:03:32.559] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 13:03:32.562] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 13:03:32.568] [DEBUG] QUERY OK source="config_file_versions" db=6.1ms 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-08-21 13:03:32.569] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:03:32.571] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=9.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:03:32.632] [DEBUG] QUERY OK source="tms_terminals" db=18.7ms queue=41.3ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:03:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:03:32.692] [DEBUG] QUERY OK db=58.5ms queue=0.8ms idle=60.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T13:03:31Z", ~N[2026-08-21 13:03:32], ~N[2026-08-21 13:03:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:03:32.692] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78135, oid: "organization_id", upload_time: "2026-08-21T13:03:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:32], updated_at: ~N[2026-08-21 13:03:32]} [2026-08-21 13:03:32.692] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T13:03:31Z", "value" => "online"} [2026-08-21 13:03:32.761] [DEBUG] QUERY OK db=66.5ms idle=62.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T13:03:31Z", "online", "status", 78135, ~N[2026-08-21 13:03:32], ~N[2026-08-21 13:03:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:32.762] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795229, itemkey: "status", value: "online", timestamp: "2026-08-21T13:03:31Z", message: "Terminal status update", status_log_id: 78135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:32], updated_at: ~N[2026-08-21 13:03:32]}} [2026-08-21 13:03:32.762] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 13:03:32.762] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T13:03:31Z", "value" => "50"} [2026-08-21 13:03:32.806] [DEBUG] QUERY OK db=43.2ms idle=70.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T13:03:31Z", "50", "battery", 78135, ~N[2026-08-21 13:03:32], ~N[2026-08-21 13:03:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:32.806] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795231, itemkey: "battery", value: "50", timestamp: "2026-08-21T13:03:31Z", message: "Battery level", status_log_id: 78135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:32], updated_at: ~N[2026-08-21 13:03:32]}} [2026-08-21 13:03:32.806] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T13:03:31Z", "value" => "online"} [2026-08-21 13:03:32.899] [DEBUG] QUERY OK db=91.6ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T13:03:31Z", "online", "network", 78135, ~N[2026-08-21 13:03:32], ~N[2026-08-21 13:03:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:32.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795233, itemkey: "network", value: "online", timestamp: "2026-08-21T13:03:31Z", message: "Network connectivity", status_log_id: 78135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:32], updated_at: ~N[2026-08-21 13:03:32]}} [2026-08-21 13:03:32.899] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 13:03:32.900] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T13:03:31Z", "value" => "0"} [2026-08-21 13:03:32.967] [DEBUG] QUERY OK db=65.7ms idle=95.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T13:03:31Z", "0", "cpu", 78135, ~N[2026-08-21 13:03:32], ~N[2026-08-21 13:03:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:32.968] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795235, itemkey: "cpu", value: "0", timestamp: "2026-08-21T13:03:31Z", message: "CPU usage percentage", status_log_id: 78135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:32], updated_at: ~N[2026-08-21 13:03:32]}} [2026-08-21 13:03:32.968] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T13:03:31Z", "value" => "1.0.0"} [2026-08-21 13:03:33.015] [DEBUG] QUERY OK db=45.6ms idle=19.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T13:03:31Z", "1.0.0", "parameter_config", 78135, ~N[2026-08-21 13:03:32], ~N[2026-08-21 13:03:32]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:33.015] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795237, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T13:03:31Z", message: "Current parameters version", status_log_id: 78135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:32], updated_at: ~N[2026-08-21 13:03:32]}} [2026-08-21 13:03:33.015] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T13:03:31Z", "value" => "1.0.1"} [2026-08-21 13:03:33.069] [DEBUG] QUERY OK db=53.9ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T13:03:31Z", "1.0.1", "emv_config", 78135, ~N[2026-08-21 13:03:33], ~N[2026-08-21 13:03:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:33.069] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795238, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T13:03:31Z", message: "Current EMV config version", status_log_id: 78135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:33], updated_at: ~N[2026-08-21 13:03:33]}} [2026-08-21 13:03:33.070] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T13:03:31Z", "value" => ""} [2026-08-21 13:03:33.140] [DEBUG] QUERY OK db=68.3ms queue=1.8ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T13:03:31Z", "keys_config", 78135, ~N[2026-08-21 13:03:33], ~N[2026-08-21 13:03:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:33.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795240, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T13:03:31Z", message: "Current keys config version", status_log_id: 78135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:33], updated_at: ~N[2026-08-21 13:03:33]}} [2026-08-21 13:03:33.140] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T13:03:31Z", "value" => "3.8.7.3"} [2026-08-21 13:03:33.207] [DEBUG] QUERY OK db=62.8ms idle=75.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T13:03:31Z", "3.8.7.3", "application", 78135, ~N[2026-08-21 13:03:33], ~N[2026-08-21 13:03:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:33.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795242, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T13:03:31Z", message: "Current application version", status_log_id: 78135, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:33], updated_at: ~N[2026-08-21 13:03:33]}} [2026-08-21 13:03:33.208] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T13:03:32Z"} [2026-08-21 13:03:33.208] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:03:32Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 41, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:03:42.276] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:03:47.277] [INFO ] Incoming JSON payload: {"oid":"b13f684b-7e80-472e-aa5d-b35d6d1b3248","sn":"98251226730001","uploadTime":"2026-08-21T13:03:41Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"ram_free_mb","value":"886","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:03:41Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:03:52.190] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "b13f684b-7e80-472e-aa5d-b35d6d1b3248", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:03:41Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:03:41Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:03:41Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:03:41Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:03:41Z", "value" => "886"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:03:41Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:03:41Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:03:41Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:03:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:03:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:03:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:03:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:03:41Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:03:41Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:03:41Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:03:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:03:41Z", "vendor" => "morefun"} [2026-08-21 13:03:52.190] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:03:52.190] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:03:52.190] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:03:52.194] [DEBUG] QUERY OK source="parameter_templates" db=2.8ms 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-08-21 13:03:52.196] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.4ms idle=14.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-08-21 13:03:52.196] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:03:52.197] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms 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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:03:52.197] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:03:52.249] [DEBUG] QUERY OK source="tms_terminals" db=51.6ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:03:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:03:52.250] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:03:52.250] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=52.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-08-21 13:03:52.319] [DEBUG] QUERY OK source="tms_terminals" db=67.8ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:03:52], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:03:52.377] [DEBUG] QUERY OK db=58.0ms idle=68.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "b13f684b-7e80-472e-aa5d-b35d6d1b3248", "2026-08-21T13:03:41Z", ~N[2026-08-21 13:03:52], ~N[2026-08-21 13:03:52]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:03:52.377] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78138, oid: "b13f684b-7e80-472e-aa5d-b35d6d1b3248", upload_time: "2026-08-21T13:03:41Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:52], updated_at: ~N[2026-08-21 13:03:52]} [2026-08-21 13:03:52.377] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:03:41Z", "value" => "morefun"} [2026-08-21 13:03:52.426] [DEBUG] QUERY OK db=47.8ms idle=59.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "morefun", "vendor", 78138, ~N[2026-08-21 13:03:52], ~N[2026-08-21 13:03:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:52.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795261, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:52], updated_at: ~N[2026-08-21 13:03:52]}} [2026-08-21 13:03:52.426] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:03:41Z", "value" => "kiosk_launcher"} [2026-08-21 13:03:52.475] [DEBUG] QUERY OK db=48.0ms queue=0.4ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "kiosk_launcher", "model", 78138, ~N[2026-08-21 13:03:52], ~N[2026-08-21 13:03:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:52.475] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795262, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:52], updated_at: ~N[2026-08-21 13:03:52]}} [2026-08-21 13:03:52.475] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:03:41Z", "value" => "1.0"} [2026-08-21 13:03:52.517] [DEBUG] QUERY OK db=41.1ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "1.0", "app_version", 78138, ~N[2026-08-21 13:03:52], ~N[2026-08-21 13:03:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:52.517] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795263, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:52], updated_at: ~N[2026-08-21 13:03:52]}} [2026-08-21 13:03:52.517] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:03:41Z", "value" => "13"} [2026-08-21 13:03:52.565] [DEBUG] QUERY OK db=47.6ms idle=42.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "13", "android_version", 78138, ~N[2026-08-21 13:03:52], ~N[2026-08-21 13:03:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:52.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795264, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:52], updated_at: ~N[2026-08-21 13:03:52]}} [2026-08-21 13:03:52.565] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:03:41Z", "value" => "886"} [2026-08-21 13:03:52.610] [DEBUG] QUERY OK db=44.6ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "886", "ram_free_mb", 78138, ~N[2026-08-21 13:03:52], ~N[2026-08-21 13:03:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:52.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795265, itemkey: "ram_free_mb", value: "886", timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:52], updated_at: ~N[2026-08-21 13:03:52]}} [2026-08-21 13:03:52.611] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:03:41Z", "value" => "WIFI"} [2026-08-21 13:03:52.656] [DEBUG] QUERY OK db=44.7ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "WIFI", "network_type", 78138, ~N[2026-08-21 13:03:52], ~N[2026-08-21 13:03:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:52.656] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795266, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:52], updated_at: ~N[2026-08-21 13:03:52]}} [2026-08-21 13:03:52.656] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:03:41Z", "value" => "true"} [2026-08-21 13:03:52.699] [DEBUG] QUERY OK db=41.6ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "true", "kiosk_active", 78138, ~N[2026-08-21 13:03:52], ~N[2026-08-21 13:03:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:52.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795267, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:52], updated_at: ~N[2026-08-21 13:03:52]}} [2026-08-21 13:03:52.699] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:03:41Z", "value" => ""} [2026-08-21 13:03:52.741] [DEBUG] QUERY OK db=41.2ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:03:41Z", "sim_operator", 78138, ~N[2026-08-21 13:03:52], ~N[2026-08-21 13:03:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:52.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795268, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:52], updated_at: ~N[2026-08-21 13:03:52]}} [2026-08-21 13:03:52.741] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:03:41Z", "value" => "UNKNOWN"} [2026-08-21 13:03:52.766] [DEBUG] QUERY OK db=24.9ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "UNKNOWN", "sim_number", 78138, ~N[2026-08-21 13:03:52], ~N[2026-08-21 13:03:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:52.766] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795269, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:52], updated_at: ~N[2026-08-21 13:03:52]}} [2026-08-21 13:03:52.767] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:03:41Z", "value" => "UNKNOWN"} [2026-08-21 13:03:52.828] [DEBUG] QUERY OK db=61.6ms idle=26.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "UNKNOWN", "sim_iccid", 78138, ~N[2026-08-21 13:03:52], ~N[2026-08-21 13:03:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:52.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795270, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:52], updated_at: ~N[2026-08-21 13:03:52]}} [2026-08-21 13:03:52.829] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:03:41Z", "value" => "UNKNOWN"} [2026-08-21 13:03:52.884] [DEBUG] QUERY OK db=55.0ms idle=63.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "UNKNOWN", "sim_imsi", 78138, ~N[2026-08-21 13:03:52], ~N[2026-08-21 13:03:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:52.885] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795271, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:52], updated_at: ~N[2026-08-21 13:03:52]}} [2026-08-21 13:03:52.885] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:03:41Z", "value" => "UNKNOWN"} [2026-08-21 13:03:52.945] [DEBUG] QUERY OK db=59.4ms idle=56.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "UNKNOWN", "sim_iccid2", 78138, ~N[2026-08-21 13:03:52], ~N[2026-08-21 13:03:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:52.945] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795272, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:52], updated_at: ~N[2026-08-21 13:03:52]}} [2026-08-21 13:03:52.945] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:03:41Z", "value" => "UNKNOWN"} [2026-08-21 13:03:53.010] [DEBUG] QUERY OK db=64.2ms idle=60.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "UNKNOWN", "sim_imsi2", 78138, ~N[2026-08-21 13:03:52], ~N[2026-08-21 13:03:52]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:53.010] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795273, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:52], updated_at: ~N[2026-08-21 13:03:52]}} [2026-08-21 13:03:53.010] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:03:41Z", "value" => "37"} [2026-08-21 13:03:53.105] [DEBUG] QUERY OK db=94.0ms idle=66.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "37", "data_usage_mb", 78138, ~N[2026-08-21 13:03:53], ~N[2026-08-21 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:53.105] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795274, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:53], updated_at: ~N[2026-08-21 13:03:53]}} [2026-08-21 13:03:53.105] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:03:41Z", "value" => "0"} [2026-08-21 13:03:53.197] [DEBUG] QUERY OK db=92.1ms idle=95.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "0", "mobile_data_mb", 78138, ~N[2026-08-21 13:03:53], ~N[2026-08-21 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:53.199] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795275, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:53], updated_at: ~N[2026-08-21 13:03:53]}} [2026-08-21 13:03:53.199] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:03:41Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:03:53.290] [DEBUG] QUERY OK db=89.6ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:03:41Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78138, ~N[2026-08-21 13:03:53], ~N[2026-08-21 13:03:53]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:03:53.292] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795276, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:03:41Z", message: nil, status_log_id: 78138, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:03:53], updated_at: ~N[2026-08-21 13:03:53]}} [2026-08-21 13:03:53.293] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T13:03:32Z"} [2026-08-21 13:03:53.293] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:03:32Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 42, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:03:57.009] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:03:57.009] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T13:03:56Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T13:03:56Z","value":"50"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T13:03:56Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T13:03:56Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T13:03:56Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T13:03:56Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T13:03:56Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T13:03:56Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T13:03:56Z","vendor":"MoreFun"} [2026-08-21 13:03:57.009] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T13:03:56Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T13:03:56Z", "value" => "50"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T13:03:56Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T13:03:56Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T13:03:56Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T13:03:56Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T13:03:56Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T13:03:56Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:03:56Z", "vendor" => "MoreFun"} [2026-08-21 13:03:57.010] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 13:03:57.010] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:03:57.011] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 13:03:57.011] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=815.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-08-21 13:03:57.012] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=554.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 13:03:57.013] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms idle=1.1ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 13:03:57.016] [DEBUG] QUERY OK source="parameter_definitions" db=1.7ms queue=0.7ms 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-08-21 13:03:57.018] [DEBUG] QUERY OK source="pos_terminal" db=0.8ms idle=3.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 13:03:57.056] [DEBUG] QUERY OK source="pos_merchant" db=38.2ms idle=2.1ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 13:03:57.058] [DEBUG] QUERY OK db=0.5ms queue=1.0ms idle=1610.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 ["626165170000000"] [2026-08-21 13:03:57.058] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 13:03:57.059] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms idle=40.8ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 13:03:57.060] [DEBUG] QUERY OK source="address" db=0.2ms idle=2.9ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 13:03:57.060] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 13:03:57.062] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 13:03:57.122] [DEBUG] QUERY OK db=59.0ms idle=3.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "74719ae14586df93784b01e181e0671c394ba73816983805068a62d9c23f8dfe", 1955, 938, ~U[2026-08-21 13:03:57Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 13:03:57], ~N[2026-08-21 13:03:57]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 13:03:57.122] [INFO ] AutoPushService: Created push log 49161 for MF919 params.zip [2026-08-21 13:03:57.122] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 1955, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 13:03:57.123] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 13:03:57.123] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 13:03:57.124] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=63.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-08-21 13:03:57.127] [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-08-21 13:03:57.183] [DEBUG] QUERY OK db=55.9ms idle=5.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8344f1a7655b854ffec94e72869a0fc2950540c0471c77504d4756fc3f413604", 2051, 17947, ~U[2026-08-21 13:03:57Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 13:03:57], ~N[2026-08-21 13:03:57]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 13:03:57.183] [INFO ] AutoPushService: Created push log 49163 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 13:03:57.184] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2051, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 13:03:57.184] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 13:03:57.184] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 13:03:57.187] [DEBUG] QUERY OK source="config_file_versions" db=2.4ms idle=60.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-08-21 13:03:57.187] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 13:03:57.188] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=4.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 13:03:57.190] [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-08-21 13:03:57.191] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 13:04:02.193] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:04:07.194] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:04:12.196] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.1ms idle=1726.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-08-21 13:04:12.534] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) :ping_timeout Last message: :ping State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :up, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.1984190822.3844603908.177533>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:04:17.198] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:04:17.198] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 13:04:17.198] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) :ping_timeout Last message: {:EXIT, #PID<0.1411.0>, :ping_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.1946.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1429.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1430.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460215], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 13:04:17.209] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 13:04:17.210] [INFO ] MyXQL.Connection (#PID<0.1062.0> (:proc_lib)) disconnected: ** (DBConnection.ConnectionError) client #PID<0.1946.0> exited [2026-08-21 13:04:22.524] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 13:04:22.524] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T04:13:47Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T04:13:47Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T04:13:47Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T04:13:47Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T04:13:47Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T04:13:47Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T04:13:47Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T04:13:47Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T04:13:47Z","vendor":"MoreFun"} [2026-08-21 13:04:22.524] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T04:13:47Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T04:13:47Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T04:13:47Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T04:13:47Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T04:13:47Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T04:13:47Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T04:13:47Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T04:13:47Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T04:13:47Z", "vendor" => "MoreFun"} [2026-08-21 13:04:22.524] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 13:04:22.525] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 13:04:22.526] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 13:04:22.529] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms queue=0.7ms idle=1056.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-08-21 13:04:22.530] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.1ms idle=83.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 13:04:22.533] [DEBUG] QUERY OK source="parameter_template_values" db=2.3ms idle=2.1ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 13:04:22.536] [DEBUG] QUERY OK source="parameter_definitions" db=1.2ms queue=0.6ms idle=3.8ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 13:04:22.541] [DEBUG] QUERY OK source="pos_terminal" db=3.4ms idle=3.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 13:04:22.577] [DEBUG] QUERY OK source="pos_merchant" db=35.6ms idle=5.5ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 13:04:22.580] [DEBUG] QUERY OK db=0.8ms queue=1.7ms idle=103.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 ["123451234512345"] [2026-08-21 13:04:22.580] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 13:04:22.582] [DEBUG] QUERY OK source="pos_terminal_data" db=1.0ms idle=40.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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 13:04:22.582] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 13:04:22.583] [DEBUG] QUERY OK source="address" db=0.3ms 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` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 13:04:22.583] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 13:04:22.585] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 13:04:22.644] [DEBUG] QUERY OK db=54.6ms queue=3.5ms idle=3.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "244f5e9bf7283d9672f79c57f8eaf8ef318724338609d414a622d27c47eb17a6", 6466, 932, ~U[2026-08-21 13:04:22Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 13:04:22], ~N[2026-08-21 13:04:22]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 13:04:22.645] [INFO ] AutoPushService: Created push log 49165 for MF919 params.zip [2026-08-21 13:04:22.646] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 6466, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 13:04:22.646] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 13:04:22.646] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 13:04:22.647] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=63.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-08-21 13:04:22.653] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 13:04:22.721] [DEBUG] QUERY OK db=64.1ms queue=1.6ms idle=11.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "a5559542d32a273a1d80d9c515dc342b34feed7b0355c022f0293ff594749f79", 1797, 17947, ~U[2026-08-21 13:04:22Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 13:04:22], ~N[2026-08-21 13:04:22]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 13:04:22.721] [INFO ] AutoPushService: Created push log 49167 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 13:04:22.722] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 1797, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 13:04:22.722] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 13:04:22.722] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 13:04:22.726] [DEBUG] QUERY OK source="config_file_versions" db=3.2ms idle=75.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-08-21 13:04:22.726] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 13:04:22.731] [DEBUG] QUERY OK source="tms_terminals" db=4.9ms idle=5.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 13:04:22.731] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 13:04:22.735] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 13:04:22.735] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:04:22.735] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:04:22.742] [DEBUG] QUERY OK source="config_file_versions" db=6.9ms idle=9.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-08-21 13:04:22.743] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:04:22.743] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 13:04:22.745] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=12.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:04:22.745] [INFO ] Terminal updated: 98250623730001 [2026-08-21 13:04:22.801] [DEBUG] QUERY OK source="tms_terminals" db=53.5ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:04:22], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:04:22.805] [DEBUG] QUERY OK source="parameter_templates" db=3.0ms idle=56.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-08-21 13:04:22.808] [DEBUG] QUERY OK source="config_file_versions" db=2.3ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:04:22.812] [DEBUG] QUERY OK source="config_file_versions" db=3.6ms idle=3.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:04:22.812] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 13:04:22.836] [DEBUG] QUERY OK source="parameter_push_logs" db=22.2ms queue=0.7ms idle=5.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 [19, "application", ~N[2026-08-21 12:34:22]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 13:04:22.836] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 13:04:22.836] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 13:04:22.840] [DEBUG] QUERY OK source="tms_terminals" db=3.9ms idle=24.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 13:04:22.844] [DEBUG] QUERY OK source="config_file_versions" db=3.5ms idle=4.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 13:04:22.845] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:04:22.847] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=0.4ms idle=4.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:04:22.868] [DEBUG] QUERY OK source="tms_terminals" db=19.3ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:04:22], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:04:22.925] [DEBUG] QUERY OK db=45.5ms queue=9.8ms idle=22.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T04:13:47Z", ~N[2026-08-21 13:04:22], ~N[2026-08-21 13:04:22]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:04:22.925] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78141, oid: "organization_id", upload_time: "2026-08-21T04:13:47Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:22], updated_at: ~N[2026-08-21 13:04:22]} [2026-08-21 13:04:22.925] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T04:13:47Z", "value" => "online"} [2026-08-21 13:04:22.985] [DEBUG] QUERY OK db=59.0ms queue=0.1ms idle=58.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T04:13:47Z", "online", "status", 78141, ~N[2026-08-21 13:04:22], ~N[2026-08-21 13:04:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:22.985] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795301, itemkey: "status", value: "online", timestamp: "2026-08-21T04:13:47Z", message: "Terminal status update", status_log_id: 78141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:22], updated_at: ~N[2026-08-21 13:04:22]}} [2026-08-21 13:04:22.986] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 13:04:22.986] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T04:13:47Z", "value" => "51"} [2026-08-21 13:04:23.143] [DEBUG] QUERY OK db=154.0ms queue=2.5ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T04:13:47Z", "51", "battery", 78141, ~N[2026-08-21 13:04:22], ~N[2026-08-21 13:04:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:23.143] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795303, itemkey: "battery", value: "51", timestamp: "2026-08-21T04:13:47Z", message: "Battery level", status_log_id: 78141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:22], updated_at: ~N[2026-08-21 13:04:22]}} [2026-08-21 13:04:23.143] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T04:13:47Z", "value" => "online"} [2026-08-21 13:04:23.220] [DEBUG] QUERY OK db=76.7ms idle=158.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T04:13:47Z", "online", "network", 78141, ~N[2026-08-21 13:04:23], ~N[2026-08-21 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:23.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795305, itemkey: "network", value: "online", timestamp: "2026-08-21T04:13:47Z", message: "Network connectivity", status_log_id: 78141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:23], updated_at: ~N[2026-08-21 13:04:23]}} [2026-08-21 13:04:23.220] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 13:04:23.221] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T04:13:47Z", "value" => "0"} [2026-08-21 13:04:23.334] [DEBUG] QUERY OK db=112.8ms idle=78.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T04:13:47Z", "0", "cpu", 78141, ~N[2026-08-21 13:04:23], ~N[2026-08-21 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:23.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795307, itemkey: "cpu", value: "0", timestamp: "2026-08-21T04:13:47Z", message: "CPU usage percentage", status_log_id: 78141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:23], updated_at: ~N[2026-08-21 13:04:23]}} [2026-08-21 13:04:23.334] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T04:13:47Z", "value" => "1.0.0"} [2026-08-21 13:04:23.376] [DEBUG] QUERY OK db=41.4ms idle=114.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T04:13:47Z", "1.0.0", "parameter_config", 78141, ~N[2026-08-21 13:04:23], ~N[2026-08-21 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:23.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795309, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T04:13:47Z", message: "Current parameters version", status_log_id: 78141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:23], updated_at: ~N[2026-08-21 13:04:23]}} [2026-08-21 13:04:23.377] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T04:13:47Z", "value" => "1.0.1"} [2026-08-21 13:04:23.426] [DEBUG] QUERY OK db=48.5ms idle=43.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T04:13:47Z", "1.0.1", "emv_config", 78141, ~N[2026-08-21 13:04:23], ~N[2026-08-21 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:23.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795311, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T04:13:47Z", message: "Current EMV config version", status_log_id: 78141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:23], updated_at: ~N[2026-08-21 13:04:23]}} [2026-08-21 13:04:23.426] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T04:13:47Z", "value" => ""} [2026-08-21 13:04:23.458] [DEBUG] QUERY OK db=31.1ms queue=0.7ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T04:13:47Z", "keys_config", 78141, ~N[2026-08-21 13:04:23], ~N[2026-08-21 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:23.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795313, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T04:13:47Z", message: "Current keys config version", status_log_id: 78141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:23], updated_at: ~N[2026-08-21 13:04:23]}} [2026-08-21 13:04:23.459] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T04:13:47Z", "value" => "3.8.7.3"} [2026-08-21 13:04:23.518] [DEBUG] QUERY OK db=58.4ms idle=10.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T04:13:47Z", "3.8.7.3", "application", 78141, ~N[2026-08-21 13:04:23], ~N[2026-08-21 13:04:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:23.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795315, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T04:13:47Z", message: "Current application version", status_log_id: 78141, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:23], updated_at: ~N[2026-08-21 13:04:23]}} [2026-08-21 13:04:23.519] [WARN ] Unexpected async result [2026-08-21 13:04:23.519] [WARN ] Unexpected async result [2026-08-21 13:04:42.440] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:04:42.440] [INFO ] Incoming JSON payload: {"oid":"376c8d31-640d-4b3e-bd6e-f4110a28a8c4","sn":"98251226730001","uploadTime":"2026-08-21T13:04:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:04:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:04:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:04:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:04:42Z"},{"itemkey":"ram_free_mb","value":"880","timestamp":"2026-08-21T13:04:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:04:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:04:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:04:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:04:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:04:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:04:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:04:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:04:42Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:04:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:04: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:04:42.441] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "376c8d31-640d-4b3e-bd6e-f4110a28a8c4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:04:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:04:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:04:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:04:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:04:42Z", "value" => "880"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:04:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:04:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:04:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:04:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:04:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:04:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:04:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:04:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:04:42Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:04:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:04: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:04:42Z", "vendor" => "morefun"} [2026-08-21 13:04:42.442] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:04:42.442] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:04:42.442] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:04:42.450] [DEBUG] QUERY OK source="parameter_templates" db=8.0ms queue=0.1ms idle=1866.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-08-21 13:04:42.454] [DEBUG] QUERY OK source="parameter_templates" db=3.1ms queue=0.1ms idle=872.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-08-21 13:04:42.454] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:04:42.458] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms idle=5.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:04:42.459] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:04:42.506] [DEBUG] QUERY OK source="tms_terminals" db=47.2ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:04:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:04:42.509] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:04:42.513] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=51.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:04:42.552] [DEBUG] QUERY OK source="tms_terminals" db=39.1ms idle=7.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:04:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:04:42.576] [DEBUG] QUERY OK db=23.5ms idle=39.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "376c8d31-640d-4b3e-bd6e-f4110a28a8c4", "2026-08-21T13:04:42Z", ~N[2026-08-21 13:04:42], ~N[2026-08-21 13:04:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:04:42.577] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78143, oid: "376c8d31-640d-4b3e-bd6e-f4110a28a8c4", upload_time: "2026-08-21T13:04:42Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:42], updated_at: ~N[2026-08-21 13:04:42]} [2026-08-21 13:04:42.577] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:04:42Z", "value" => "morefun"} [2026-08-21 13:04:42.659] [DEBUG] QUERY OK db=40.0ms queue=41.4ms idle=24.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04:42Z", "morefun", "vendor", 78143, ~N[2026-08-21 13:04:42], ~N[2026-08-21 13:04:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:42.659] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795318, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:42], updated_at: ~N[2026-08-21 13:04:42]}} [2026-08-21 13:04:42.659] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:04:42Z", "value" => "kiosk_launcher"} [2026-08-21 13:04:42.724] [DEBUG] QUERY OK db=63.0ms queue=0.8ms idle=77.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04:42Z", "kiosk_launcher", "model", 78143, ~N[2026-08-21 13:04:42], ~N[2026-08-21 13:04:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:42.724] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795319, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:42], updated_at: ~N[2026-08-21 13:04:42]}} [2026-08-21 13:04:42.724] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:04:42Z", "value" => "1.0"} [2026-08-21 13:04:42.786] [DEBUG] QUERY OK db=61.6ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04:42Z", "1.0", "app_version", 78143, ~N[2026-08-21 13:04:42], ~N[2026-08-21 13:04:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:42.787] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795321, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:42], updated_at: ~N[2026-08-21 13:04:42]}} [2026-08-21 13:04:42.787] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:04:42Z", "value" => "13"} [2026-08-21 13:04:42.831] [DEBUG] QUERY OK db=43.8ms idle=63.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04:42Z", "13", "android_version", 78143, ~N[2026-08-21 13:04:42], ~N[2026-08-21 13:04:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:42.832] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795323, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:42], updated_at: ~N[2026-08-21 13:04:42]}} [2026-08-21 13:04:42.832] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:04:42Z", "value" => "880"} [2026-08-21 13:04:42.873] [DEBUG] QUERY OK db=40.8ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04:42Z", "880", "ram_free_mb", 78143, ~N[2026-08-21 13:04:42], ~N[2026-08-21 13:04:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:42.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795325, itemkey: "ram_free_mb", value: "880", timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:42], updated_at: ~N[2026-08-21 13:04:42]}} [2026-08-21 13:04:42.874] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:04:42Z", "value" => "WIFI"} [2026-08-21 13:04:42.943] [DEBUG] QUERY OK db=68.6ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04:42Z", "WIFI", "network_type", 78143, ~N[2026-08-21 13:04:42], ~N[2026-08-21 13:04:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:42.943] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795327, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:42], updated_at: ~N[2026-08-21 13:04:42]}} [2026-08-21 13:04:42.943] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:04:42Z", "value" => "true"} [2026-08-21 13:04:43.019] [DEBUG] QUERY OK db=75.7ms idle=70.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04:42Z", "true", "kiosk_active", 78143, ~N[2026-08-21 13:04:42], ~N[2026-08-21 13:04:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:43.020] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795329, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:42], updated_at: ~N[2026-08-21 13:04:42]}} [2026-08-21 13:04:43.020] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:04:42Z", "value" => ""} [2026-08-21 13:04:43.114] [DEBUG] QUERY OK db=92.9ms queue=0.4ms idle=77.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:04:42Z", "sim_operator", 78143, ~N[2026-08-21 13:04:43], ~N[2026-08-21 13:04:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:43.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795331, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:43], updated_at: ~N[2026-08-21 13:04:43]}} [2026-08-21 13:04:43.114] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:04:42Z", "value" => "UNKNOWN"} [2026-08-21 13:04:43.207] [DEBUG] QUERY OK db=90.4ms idle=96.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04:42Z", "UNKNOWN", "sim_number", 78143, ~N[2026-08-21 13:04:43], ~N[2026-08-21 13:04:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:43.209] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795333, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:43], updated_at: ~N[2026-08-21 13:04:43]}} [2026-08-21 13:04:43.209] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:04:42Z", "value" => "UNKNOWN"} [2026-08-21 13:04:43.300] [DEBUG] QUERY OK db=90.4ms idle=95.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04:42Z", "UNKNOWN", "sim_iccid", 78143, ~N[2026-08-21 13:04:43], ~N[2026-08-21 13:04:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:43.303] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795335, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:43], updated_at: ~N[2026-08-21 13:04:43]}} [2026-08-21 13:04:43.303] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:04:42Z", "value" => "UNKNOWN"} [2026-08-21 13:04:43.380] [DEBUG] QUERY OK db=76.5ms idle=97.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04:42Z", "UNKNOWN", "sim_imsi", 78143, ~N[2026-08-21 13:04:43], ~N[2026-08-21 13:04:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:43.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795337, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:43], updated_at: ~N[2026-08-21 13:04:43]}} [2026-08-21 13:04:43.381] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:04:42Z", "value" => "UNKNOWN"} [2026-08-21 13:04:43.453] [DEBUG] QUERY OK db=71.2ms idle=80.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04:42Z", "UNKNOWN", "sim_iccid2", 78143, ~N[2026-08-21 13:04:43], ~N[2026-08-21 13:04:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:43.456] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795339, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:43], updated_at: ~N[2026-08-21 13:04:43]}} [2026-08-21 13:04:43.457] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:04:42Z", "value" => "UNKNOWN"} [2026-08-21 13:04:43.636] [DEBUG] QUERY OK db=178.7ms queue=0.2ms idle=76.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04:42Z", "UNKNOWN", "sim_imsi2", 78143, ~N[2026-08-21 13:04:43], ~N[2026-08-21 13:04:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:43.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795341, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:43], updated_at: ~N[2026-08-21 13:04:43]}} [2026-08-21 13:04:43.636] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:04:42Z", "value" => "37"} [2026-08-21 13:04:43.712] [DEBUG] QUERY OK db=75.0ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04:42Z", "37", "data_usage_mb", 78143, ~N[2026-08-21 13:04:43], ~N[2026-08-21 13:04:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:43.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795343, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:43], updated_at: ~N[2026-08-21 13:04:43]}} [2026-08-21 13:04:43.712] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:04:42Z", "value" => "0"} [2026-08-21 13:04:43.772] [DEBUG] QUERY OK db=55.8ms idle=79.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04:42Z", "0", "mobile_data_mb", 78143, ~N[2026-08-21 13:04:43], ~N[2026-08-21 13:04:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:43.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795345, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:43], updated_at: ~N[2026-08-21 13:04:43]}} [2026-08-21 13:04:43.775] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:04: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:04:43.887] [DEBUG] QUERY OK db=110.6ms idle=63.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:04: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78143, ~N[2026-08-21 13:04:43], ~N[2026-08-21 13:04:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:04:43.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795347, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:04:42Z", message: nil, status_log_id: 78143, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:04:43], updated_at: ~N[2026-08-21 13:04:43]}} [2026-08-21 13:05:05.117] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"ch980308009433_20260821130504845","sn":"98251226730001","status":"error","message":"Unknown command: Refund","timestamp":"2026-08-21T13:05:04Z"} [2026-08-21 13:05:05.118] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: Refund", "oid" => "ch980308009433_20260821130504845", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:05:04Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 178, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 3, 123, 34, 111, 105, 100, 34, 58, 34, 99, 104, 57, 56, 48, 51, 48, 56, 48, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:05:07.494] [INFO ] Running offline device check... [2026-08-21 13:05:07.494] [INFO ] Starting offline device check... [2026-08-21 13:05:07.497] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=994.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-08-21 13:05:07.510] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.7ms idle=807.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 13:05:07.520] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.9ms idle=13.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.521] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=9.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.523] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.524] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.525] [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-08-21 13:05:07.526] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.527] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.528] [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 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.532] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms decode=1.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.538] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms queue=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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.539] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.554] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.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-08-21 13:05:07.560] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=14.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.563] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.565] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.566] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.587] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=20.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.589] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=20.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 13:05:07.590] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.593] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.595] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.596] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.652] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=54.6ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.653] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=56.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 13:05:07.654] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.661] [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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.661] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=6.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.664] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.665] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.667] [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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.672] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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-08-21 13:05:07.675] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.676] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.677] [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-08-21 13:05:07.678] [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-08-21 13:05:07.682] [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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.683] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.684] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.685] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.685] [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-08-21 13:05:07.686] [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 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.687] [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 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.688] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.689] [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 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.690] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.690] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.691] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.692] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.693] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.697] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.699] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:05:07.699] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 13:05:07.699] [INFO ] Offline device check completed successfully [2026-08-21 13:05:09.227] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:05:09.227] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T13:05:08Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T13:05:08Z","value":"49"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T13:05:08Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T13:05:08Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T13:05:08Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T13:05:08Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T13:05:08Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T13:05:08Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T13:05:08Z","vendor":"MoreFun"} [2026-08-21 13:05:09.234] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T13:05:08Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T13:05:08Z", "value" => "49"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T13:05:08Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T13:05:08Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T13:05:08Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T13:05:08Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T13:05:08Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T13:05:08Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:05:08Z", "vendor" => "MoreFun"} [2026-08-21 13:05:09.240] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 13:05:09.240] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:05:09.240] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 13:05:09.262] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms idle=1558.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-08-21 13:05:09.270] [DEBUG] QUERY OK source="tms_terminals" db=7.8ms queue=0.1ms idle=561.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 13:05:09.273] [DEBUG] QUERY OK source="parameter_template_values" db=2.1ms idle=10.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-08-21 13:05:09.290] [DEBUG] QUERY OK source="parameter_definitions" db=6.5ms queue=6.5ms idle=7.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-08-21 13:05:09.299] [DEBUG] QUERY OK source="pos_terminal" db=5.6ms idle=20.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-08-21 13:05:09.333] [DEBUG] QUERY OK source="pos_merchant" db=33.3ms idle=8.9ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 13:05:09.346] [DEBUG] QUERY OK db=10.8ms queue=2.1ms idle=847.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 ["626165170000000"] [2026-08-21 13:05:09.346] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 13:05:09.368] [DEBUG] QUERY OK source="pos_terminal_data" db=21.8ms idle=47.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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 13:05:09.389] [DEBUG] QUERY OK source="address" db=5.6ms queue=15.3ms idle=35.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 13:05:09.390] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 13:05:09.418] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 13:05:09.471] [DEBUG] QUERY OK db=51.2ms idle=51.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ae119e434a0bad31073f4822dd69e41cb83d39c9b4ecb9977d122db8758bd861", 2275, 938, ~U[2026-08-21 13:05:09Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 13:05:09], ~N[2026-08-21 13:05:09]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 13:05:09.471] [INFO ] AutoPushService: Created push log 49171 for MF919 params.zip [2026-08-21 13:05:09.472] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 2275, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 13:05:09.472] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 13:05:09.472] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 13:05:09.511] [DEBUG] QUERY OK source="config_file_versions" db=39.0ms idle=82.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-08-21 13:05:09.525] [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-08-21 13:05:09.584] [DEBUG] QUERY OK db=46.9ms idle=66.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "fdf189608960e324a0f9fabdd999165b28742a2b71fc15642cb439038960ec7a", 2371, 17947, ~U[2026-08-21 13:05:09Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 13:05:09], ~N[2026-08-21 13:05:09]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 13:05:09.584] [INFO ] AutoPushService: Created push log 49172 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 13:05:09.585] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2371, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 13:05:09.585] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 13:05:09.585] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 13:05:09.603] [DEBUG] QUERY OK source="config_file_versions" db=17.7ms idle=73.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-08-21 13:05:09.603] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 13:05:09.610] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.1ms idle=24.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 13:05:09.610] [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-08-21 13:05:09.633] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 13:05:09.633] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:05:09.633] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:05:09.641] [DEBUG] QUERY OK source="config_file_versions" db=4.1ms idle=37.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 13:05:09.644] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:05:09.644] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 13:05:09.645] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=34.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:05:09.645] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:05:09.747] [DEBUG] QUERY OK source="tms_terminals" db=58.1ms queue=42.3ms idle=4.6ms UPDATE `tms_terminals` SET `status` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 13:05:09], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:05:09.753] [DEBUG] QUERY OK source="parameter_templates" db=5.2ms queue=0.1ms idle=30.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 13:05:09.758] [DEBUG] QUERY OK source="config_file_versions" db=3.6ms idle=9.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:05:09.764] [DEBUG] QUERY OK source="config_file_versions" db=5.3ms idle=5.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-08-21 13:05:09.764] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 13:05:09.837] [DEBUG] QUERY OK source="parameter_push_logs" db=72.2ms idle=7.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-08-21 12:35:09]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 13:05:09.837] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 13:05:09.837] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 13:05:09.839] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=73.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 13:05:09.840] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=2.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 13:05:09.841] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:05:09.844] [DEBUG] QUERY OK source="tms_terminals" db=2.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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:05:09.923] [DEBUG] QUERY OK source="tms_terminals" db=34.2ms queue=44.1ms idle=4.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:05:09], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:05:09.998] [DEBUG] QUERY OK db=70.4ms queue=3.3ms idle=79.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T13:05:08Z", ~N[2026-08-21 13:05:09], ~N[2026-08-21 13:05:09]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:05:09.998] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78146, oid: "organization_id", upload_time: "2026-08-21T13:05:08Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:09], updated_at: ~N[2026-08-21 13:05:09]} [2026-08-21 13:05:09.998] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T13:05:08Z", "value" => "online"} [2026-08-21 13:05:10.075] [DEBUG] QUERY OK db=75.5ms queue=0.7ms idle=75.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T13:05:08Z", "online", "status", 78146, ~N[2026-08-21 13:05:09], ~N[2026-08-21 13:05:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:10.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795350, itemkey: "status", value: "online", timestamp: "2026-08-21T13:05:08Z", message: "Terminal status update", status_log_id: 78146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:09], updated_at: ~N[2026-08-21 13:05:09]}} [2026-08-21 13:05:10.076] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 13:05:10.080] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T13:05:08Z", "value" => "49"} [2026-08-21 13:05:10.134] [DEBUG] QUERY OK db=53.3ms idle=82.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T13:05:08Z", "49", "battery", 78146, ~N[2026-08-21 13:05:10], ~N[2026-08-21 13:05:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:10.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795351, itemkey: "battery", value: "49", timestamp: "2026-08-21T13:05:08Z", message: "Battery level", status_log_id: 78146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:10], updated_at: ~N[2026-08-21 13:05:10]}} [2026-08-21 13:05:10.134] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T13:05:08Z", "value" => "online"} [2026-08-21 13:05:10.212] [DEBUG] QUERY OK db=77.2ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T13:05:08Z", "online", "network", 78146, ~N[2026-08-21 13:05:10], ~N[2026-08-21 13:05:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:10.212] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795353, itemkey: "network", value: "online", timestamp: "2026-08-21T13:05:08Z", message: "Network connectivity", status_log_id: 78146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:10], updated_at: ~N[2026-08-21 13:05:10]}} [2026-08-21 13:05:10.212] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 13:05:10.213] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T13:05:08Z", "value" => "0"} [2026-08-21 13:05:10.244] [DEBUG] QUERY OK db=28.2ms idle=81.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T13:05:08Z", "0", "cpu", 78146, ~N[2026-08-21 13:05:10], ~N[2026-08-21 13:05:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:10.244] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795355, itemkey: "cpu", value: "0", timestamp: "2026-08-21T13:05:08Z", message: "CPU usage percentage", status_log_id: 78146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:10], updated_at: ~N[2026-08-21 13:05:10]}} [2026-08-21 13:05:10.244] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T13:05:08Z", "value" => "1.0.0"} [2026-08-21 13:05:10.313] [DEBUG] QUERY OK db=67.6ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T13:05:08Z", "1.0.0", "parameter_config", 78146, ~N[2026-08-21 13:05:10], ~N[2026-08-21 13:05:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:10.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795357, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T13:05:08Z", message: "Current parameters version", status_log_id: 78146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:10], updated_at: ~N[2026-08-21 13:05:10]}} [2026-08-21 13:05:10.313] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T13:05:08Z", "value" => "1.0.1"} [2026-08-21 13:05:10.374] [DEBUG] QUERY OK db=55.1ms queue=0.5ms idle=74.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T13:05:08Z", "1.0.1", "emv_config", 78146, ~N[2026-08-21 13:05:10], ~N[2026-08-21 13:05:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:10.374] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795359, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T13:05:08Z", message: "Current EMV config version", status_log_id: 78146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:10], updated_at: ~N[2026-08-21 13:05:10]}} [2026-08-21 13:05:10.374] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T13:05:08Z", "value" => ""} [2026-08-21 13:05:10.447] [DEBUG] QUERY OK db=65.9ms queue=2.3ms idle=66.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T13:05:08Z", "keys_config", 78146, ~N[2026-08-21 13:05:10], ~N[2026-08-21 13:05:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:10.447] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795361, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T13:05:08Z", message: "Current keys config version", status_log_id: 78146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:10], updated_at: ~N[2026-08-21 13:05:10]}} [2026-08-21 13:05:10.447] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T13:05:08Z", "value" => "3.8.7.3"} [2026-08-21 13:05:10.494] [DEBUG] QUERY OK db=41.9ms queue=0.7ms idle=77.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T13:05:08Z", "3.8.7.3", "application", 78146, ~N[2026-08-21 13:05:10], ~N[2026-08-21 13:05:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:10.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795363, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T13:05:08Z", message: "Current application version", status_log_id: 78146, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:10], updated_at: ~N[2026-08-21 13:05:10]}} [2026-08-21 13:05:10.495] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T13:05:09Z"} [2026-08-21 13:05:10.497] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:05:09Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 5, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:05:12.803] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:05:12.803] [INFO ] Incoming JSON payload: {"oid":"583b7b02-fc05-4df8-90e0-707aa0c92443","sn":"98251226730001","uploadTime":"2026-08-21T13:05:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:05:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:05:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:05:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:05:12Z"},{"itemkey":"ram_free_mb","value":"885","timestamp":"2026-08-21T13:05:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:05:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:05:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:05:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:05:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:05:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:05:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:05:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:05:12Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:05:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:05: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:05:12.805] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "583b7b02-fc05-4df8-90e0-707aa0c92443", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:05:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:05:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:05:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:05:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:05:12Z", "value" => "885"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:05:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:05:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:05:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:05:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:05:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:05:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:05:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:05:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:05:12Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:05:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:05: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:05:12Z", "vendor" => "morefun"} [2026-08-21 13:05:12.805] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:05:12.806] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:05:12.806] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:05:12.807] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1082.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-08-21 13:05:12.809] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.5ms idle=79.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-08-21 13:05:12.809] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:05:12.811] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=2.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:05:12.840] [DEBUG] QUERY OK source="tms_terminals" db=26.8ms queue=1.7ms idle=2.5ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["morefun", "kiosk_launcher", ~N[2026-08-21 13:05:12], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 13:05:12.840] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:05:12.840] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 13:05:12.840] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 13:05:12.840] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 13:05:12.841] [INFO ] Event published: terminal_updated [2026-08-21 13:05:12.841] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms idle=30.1ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 13:05:12], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 13:05:12.846] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 13:05:12.849] [DEBUG] QUERY OK source="terminal_group_rules" db=1.5ms queue=2.0ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 13:05:12.849] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 13:05:12.929] [DEBUG] QUERY OK source="tms_terminals" db=41.5ms queue=42.1ms idle=4.3ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "morefun", "kiosk_launcher", nil, nil, nil, nil, ~N[2026-08-21 13:05:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:05:12.929] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:05:12.932] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.1ms idle=81.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-08-21 13:05:12.964] [DEBUG] QUERY OK source="tms_terminals" db=30.6ms queue=1.1ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:05:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:05:13.021] [DEBUG] QUERY OK db=54.0ms queue=0.8ms idle=33.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "583b7b02-fc05-4df8-90e0-707aa0c92443", "2026-08-21T13:05:12Z", ~N[2026-08-21 13:05:12], ~N[2026-08-21 13:05:12]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:05:13.021] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78147, oid: "583b7b02-fc05-4df8-90e0-707aa0c92443", upload_time: "2026-08-21T13:05:12Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:12], updated_at: ~N[2026-08-21 13:05:12]} [2026-08-21 13:05:13.022] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:05:12Z", "value" => "morefun"} [2026-08-21 13:05:13.128] [DEBUG] QUERY OK db=64.5ms queue=41.7ms idle=57.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:12Z", "morefun", "vendor", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.129] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795366, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.129] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:05:12Z", "value" => "kiosk_launcher"} [2026-08-21 13:05:13.197] [DEBUG] QUERY OK db=65.3ms idle=110.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:12Z", "kiosk_launcher", "model", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795368, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.198] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:05:12Z", "value" => "1.0"} [2026-08-21 13:05:13.242] [DEBUG] QUERY OK db=43.5ms idle=69.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:12Z", "1.0", "app_version", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.242] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795369, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.242] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:05:12Z", "value" => "13"} [2026-08-21 13:05:13.303] [DEBUG] QUERY OK db=60.0ms queue=0.5ms idle=46.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:12Z", "13", "android_version", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.303] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795371, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.304] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:05:12Z", "value" => "885"} [2026-08-21 13:05:13.338] [DEBUG] QUERY OK db=33.8ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:12Z", "885", "ram_free_mb", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.338] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795373, itemkey: "ram_free_mb", value: "885", timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.338] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:05:12Z", "value" => "WIFI"} [2026-08-21 13:05:13.398] [DEBUG] QUERY OK db=58.7ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:12Z", "WIFI", "network_type", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.398] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795375, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.399] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:05:12Z", "value" => "true"} [2026-08-21 13:05:13.439] [DEBUG] QUERY OK db=40.1ms idle=61.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:12Z", "true", "kiosk_active", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795377, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.440] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:05:12Z", "value" => ""} [2026-08-21 13:05:13.497] [DEBUG] QUERY OK db=56.7ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:05:12Z", "sim_operator", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795379, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.500] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:05:12Z", "value" => "UNKNOWN"} [2026-08-21 13:05:13.550] [DEBUG] QUERY OK db=49.8ms idle=60.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:12Z", "UNKNOWN", "sim_number", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.550] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795381, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.550] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:05:12Z", "value" => "UNKNOWN"} [2026-08-21 13:05:13.608] [DEBUG] QUERY OK db=57.3ms idle=53.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:12Z", "UNKNOWN", "sim_iccid", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795383, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.608] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:05:12Z", "value" => "UNKNOWN"} [2026-08-21 13:05:13.640] [DEBUG] QUERY OK db=31.5ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:12Z", "UNKNOWN", "sim_imsi", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.641] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795385, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.641] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:05:12Z", "value" => "UNKNOWN"} [2026-08-21 13:05:13.702] [DEBUG] QUERY OK db=60.6ms idle=32.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:12Z", "UNKNOWN", "sim_iccid2", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795387, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.702] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:05:12Z", "value" => "UNKNOWN"} [2026-08-21 13:05:13.775] [DEBUG] QUERY OK db=72.1ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:12Z", "UNKNOWN", "sim_imsi2", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.775] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795389, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.775] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:05:12Z", "value" => "37"} [2026-08-21 13:05:13.826] [DEBUG] QUERY OK db=49.9ms queue=0.2ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:12Z", "37", "data_usage_mb", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.826] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795391, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.826] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:05:12Z", "value" => "0"} [2026-08-21 13:05:13.855] [DEBUG] QUERY OK db=28.5ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:12Z", "0", "mobile_data_mb", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795393, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:13.856] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:05: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:05:13.907] [DEBUG] QUERY OK db=50.6ms idle=30.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78147, ~N[2026-08-21 13:05:13], ~N[2026-08-21 13:05:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:13.909] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795395, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:05:12Z", message: nil, status_log_id: 78147, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:13], updated_at: ~N[2026-08-21 13:05:13]}} [2026-08-21 13:05:29.776] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T13:05:09Z"} [2026-08-21 13:05:29.777] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:05:09Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 6, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:05:29.916] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T13:05:09Z"} [2026-08-21 13:05:29.916] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:05:09Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 8, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:05:42.851] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:05:42.851] [INFO ] Incoming JSON payload: {"oid":"ba588fd8-9df8-4dfc-b3fd-afa00307f62e","sn":"98251226730001","uploadTime":"2026-08-21T13:05:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:05:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:05:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:05:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:05:42Z"},{"itemkey":"ram_free_mb","value":"882","timestamp":"2026-08-21T13:05:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:05:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:05:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:05:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:05:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:05:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:05:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:05:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:05:42Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:05:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:05: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:05:42.854] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ba588fd8-9df8-4dfc-b3fd-afa00307f62e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:05:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:05:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:05:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:05:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:05:42Z", "value" => "882"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:05:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:05:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:05:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:05:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:05:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:05:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:05:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:05:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:05:42Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:05:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:05: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:05:42Z", "vendor" => "morefun"} [2026-08-21 13:05:42.854] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:05:42.854] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:05:42.855] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:05:42.856] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=352.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-08-21 13:05:42.856] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=33.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-08-21 13:05:42.856] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:05:42.859] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:05:42.859] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:05:42.955] [DEBUG] QUERY OK source="tms_terminals" db=53.3ms queue=42.4ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:05:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:05:42.955] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:05:42.956] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=96.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-08-21 13:05:42.979] [DEBUG] QUERY OK source="tms_terminals" db=22.9ms queue=0.1ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:05:42], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:05:43.044] [DEBUG] QUERY OK db=64.0ms idle=23.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ba588fd8-9df8-4dfc-b3fd-afa00307f62e", "2026-08-21T13:05:42Z", ~N[2026-08-21 13:05:42], ~N[2026-08-21 13:05:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:05:43.044] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78150, oid: "ba588fd8-9df8-4dfc-b3fd-afa00307f62e", upload_time: "2026-08-21T13:05:42Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:42], updated_at: ~N[2026-08-21 13:05:42]} [2026-08-21 13:05:43.045] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:05:42Z", "value" => "morefun"} [2026-08-21 13:05:43.090] [DEBUG] QUERY OK db=44.8ms queue=0.3ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:42Z", "morefun", "vendor", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.090] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795399, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.090] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:05:42Z", "value" => "kiosk_launcher"} [2026-08-21 13:05:43.139] [DEBUG] QUERY OK db=47.2ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:42Z", "kiosk_launcher", "model", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.139] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795401, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.139] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:05:42Z", "value" => "1.0"} [2026-08-21 13:05:43.182] [DEBUG] QUERY OK db=41.9ms idle=50.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:42Z", "1.0", "app_version", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.183] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795403, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.186] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:05:42Z", "value" => "13"} [2026-08-21 13:05:43.251] [DEBUG] QUERY OK db=64.6ms idle=48.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:42Z", "13", "android_version", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795405, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.252] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:05:42Z", "value" => "882"} [2026-08-21 13:05:43.286] [DEBUG] QUERY OK db=32.1ms idle=71.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:42Z", "882", "ram_free_mb", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.287] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795407, itemkey: "ram_free_mb", value: "882", timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.287] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:05:42Z", "value" => "WIFI"} [2026-08-21 13:05:43.340] [DEBUG] QUERY OK db=53.0ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:42Z", "WIFI", "network_type", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795408, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.341] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:05:42Z", "value" => "true"} [2026-08-21 13:05:43.387] [DEBUG] QUERY OK db=45.6ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:42Z", "true", "kiosk_active", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795410, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.388] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:05:42Z", "value" => ""} [2026-08-21 13:05:43.418] [DEBUG] QUERY OK db=29.8ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:05:42Z", "sim_operator", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.419] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795412, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.419] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:05:42Z", "value" => "UNKNOWN"} [2026-08-21 13:05:43.452] [DEBUG] QUERY OK db=32.8ms idle=32.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:42Z", "UNKNOWN", "sim_number", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795414, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.452] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:05:42Z", "value" => "UNKNOWN"} [2026-08-21 13:05:43.500] [DEBUG] QUERY OK db=47.1ms idle=34.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:42Z", "UNKNOWN", "sim_iccid", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795416, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.500] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:05:42Z", "value" => "UNKNOWN"} [2026-08-21 13:05:43.530] [DEBUG] QUERY OK db=29.9ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:42Z", "UNKNOWN", "sim_imsi", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.531] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795418, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.531] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:05:42Z", "value" => "UNKNOWN"} [2026-08-21 13:05:43.567] [DEBUG] QUERY OK db=35.4ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:42Z", "UNKNOWN", "sim_iccid2", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.567] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795420, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.568] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:05:42Z", "value" => "UNKNOWN"} [2026-08-21 13:05:43.611] [DEBUG] QUERY OK db=42.4ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:42Z", "UNKNOWN", "sim_imsi2", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795422, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.611] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:05:42Z", "value" => "37"} [2026-08-21 13:05:43.637] [DEBUG] QUERY OK db=25.8ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:42Z", "37", "data_usage_mb", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795424, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.638] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:05:42Z", "value" => "0"} [2026-08-21 13:05:43.676] [DEBUG] QUERY OK db=38.3ms idle=27.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05:42Z", "0", "mobile_data_mb", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.677] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795426, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:43.677] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:05: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:05:43.753] [DEBUG] QUERY OK db=74.7ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:05: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78150, ~N[2026-08-21 13:05:43], ~N[2026-08-21 13:05:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:05:43.754] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795428, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:05:42Z", message: nil, status_log_id: 78150, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:05:43], updated_at: ~N[2026-08-21 13:05:43]}} [2026-08-21 13:05:49.778] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T13:05:09Z"} [2026-08-21 13:05:49.778] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:05:09Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 7, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:06:12.932] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:06:12.932] [INFO ] Incoming JSON payload: {"oid":"1c9ef7bc-1757-4b93-ac7e-1894dbd60fa2","sn":"98251226730001","uploadTime":"2026-08-21T13:06:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:06:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:06:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:06:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:06:12Z"},{"itemkey":"ram_free_mb","value":"882","timestamp":"2026-08-21T13:06:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:06:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:06:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:06:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:06:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:06:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:06:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:06:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:06:12Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:06:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:06: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:06:12.933] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1c9ef7bc-1757-4b93-ac7e-1894dbd60fa2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:06:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:06:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:06:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:06:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:06:12Z", "value" => "882"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:06:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:06:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:06:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:06:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:06:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:06:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:06:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:06:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:06:12Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:06:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:06: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:06:12Z", "vendor" => "morefun"} [2026-08-21 13:06:12.933] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:06:12.933] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:06:12.934] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:06:12.936] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=430.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-08-21 13:06:12.939] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms queue=0.5ms idle=1.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-08-21 13:06:12.939] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:06:12.944] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=3.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:06:12.947] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:06:12.976] [DEBUG] QUERY OK source="tms_terminals" db=28.7ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:06:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:06:12.977] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:06:12.978] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=32.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:06:13.015] [DEBUG] QUERY OK source="tms_terminals" db=37.0ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:06:12], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:06:13.059] [DEBUG] QUERY OK db=43.7ms idle=37.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "1c9ef7bc-1757-4b93-ac7e-1894dbd60fa2", "2026-08-21T13:06:12Z", ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:06:13.062] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78151, oid: "1c9ef7bc-1757-4b93-ac7e-1894dbd60fa2", upload_time: "2026-08-21T13:06:12Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]} [2026-08-21 13:06:13.062] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:06:12Z", "value" => "morefun"} [2026-08-21 13:06:13.105] [DEBUG] QUERY OK db=41.8ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:12Z", "morefun", "vendor", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.105] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795429, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.105] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:06:12Z", "value" => "kiosk_launcher"} [2026-08-21 13:06:13.149] [DEBUG] QUERY OK db=42.3ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:12Z", "kiosk_launcher", "model", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.150] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795431, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.150] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:06:12Z", "value" => "1.0"} [2026-08-21 13:06:13.204] [DEBUG] QUERY OK db=54.1ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:12Z", "1.0", "app_version", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795433, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.205] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:06:12Z", "value" => "13"} [2026-08-21 13:06:13.286] [DEBUG] QUERY OK db=80.5ms idle=56.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:12Z", "13", "android_version", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.286] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795435, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.286] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:06:12Z", "value" => "882"} [2026-08-21 13:06:13.352] [DEBUG] QUERY OK db=65.1ms idle=82.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:12Z", "882", "ram_free_mb", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795437, itemkey: "ram_free_mb", value: "882", timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.352] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:06:12Z", "value" => "WIFI"} [2026-08-21 13:06:13.386] [DEBUG] QUERY OK db=31.6ms queue=2.2ms idle=66.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:12Z", "WIFI", "network_type", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.387] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795438, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.387] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:06:12Z", "value" => "true"} [2026-08-21 13:06:13.427] [DEBUG] QUERY OK db=40.0ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:12Z", "true", "kiosk_active", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.427] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795440, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.428] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:06:12Z", "value" => ""} [2026-08-21 13:06:13.478] [DEBUG] QUERY OK db=50.2ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:06:12Z", "sim_operator", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795442, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.481] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:06:12Z", "value" => "UNKNOWN"} [2026-08-21 13:06:13.545] [DEBUG] QUERY OK db=63.0ms idle=55.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:12Z", "UNKNOWN", "sim_number", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795444, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.546] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:06:12Z", "value" => "UNKNOWN"} [2026-08-21 13:06:13.582] [DEBUG] QUERY OK db=36.0ms idle=67.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:12Z", "UNKNOWN", "sim_iccid", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795446, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.583] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:06:12Z", "value" => "UNKNOWN"} [2026-08-21 13:06:13.676] [DEBUG] QUERY OK db=92.4ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:12Z", "UNKNOWN", "sim_imsi", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.676] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795448, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.676] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:06:12Z", "value" => "UNKNOWN"} [2026-08-21 13:06:13.746] [DEBUG] QUERY OK db=69.1ms idle=94.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:12Z", "UNKNOWN", "sim_iccid2", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795450, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.746] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:06:12Z", "value" => "UNKNOWN"} [2026-08-21 13:06:13.821] [DEBUG] QUERY OK db=74.1ms idle=71.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:12Z", "UNKNOWN", "sim_imsi2", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795452, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.821] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:06:12Z", "value" => "37"} [2026-08-21 13:06:13.858] [DEBUG] QUERY OK db=36.2ms idle=76.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:12Z", "37", "data_usage_mb", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795454, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.859] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:06:12Z", "value" => "0"} [2026-08-21 13:06:13.959] [DEBUG] QUERY OK db=100.1ms idle=38.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:12Z", "0", "mobile_data_mb", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:13.959] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795456, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:13.965] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:06: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:06:14.041] [DEBUG] QUERY OK db=71.9ms queue=0.1ms idle=16.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78151, ~N[2026-08-21 13:06:13], ~N[2026-08-21 13:06:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:14.045] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795458, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:06:12Z", message: nil, status_log_id: 78151, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:13], updated_at: ~N[2026-08-21 13:06:13]}} [2026-08-21 13:06:17.018] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:06:17.018] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T13:06:16Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T13:06:16Z","value":"49"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T13:06:16Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T13:06:16Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T13:06:16Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T13:06:16Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T13:06:16Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T13:06:16Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T13:06:16Z","vendor":"MoreFun"} [2026-08-21 13:06:17.018] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T13:06:16Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T13:06:16Z", "value" => "49"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T13:06:16Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T13:06:16Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T13:06:16Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T13:06:16Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T13:06:16Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T13:06:16Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:06:16Z", "vendor" => "MoreFun"} [2026-08-21 13:06:17.020] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 13:06:17.020] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:06:17.020] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 13:06:17.021] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=514.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-08-21 13:06:17.022] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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 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-08-21 13:06:17.024] [DEBUG] QUERY OK source="parameter_template_values" db=1.2ms idle=1.7ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 13:06:17.027] [DEBUG] QUERY OK source="parameter_definitions" db=1.3ms queue=0.9ms 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-08-21 13:06:17.029] [DEBUG] QUERY OK source="pos_terminal" db=1.6ms idle=3.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 13:06:17.069] [DEBUG] QUERY OK source="pos_merchant" db=39.9ms idle=2.5ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 13:06:17.073] [DEBUG] QUERY OK db=0.8ms queue=2.3ms idle=1571.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 ["626165170000000"] [2026-08-21 13:06:17.073] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 13:06:17.074] [DEBUG] QUERY OK source="pos_terminal_data" db=0.8ms idle=44.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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 13:06:17.076] [DEBUG] QUERY OK source="address" db=1.3ms idle=5.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 13:06:17.076] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 13:06:17.078] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 13:06:17.162] [DEBUG] QUERY OK db=82.2ms idle=4.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "690eb7d60decbe0ff9fb281caadf1205069671d0435b3018b01b6412b4f02a4c", 2659, 939, ~U[2026-08-21 13:06:17Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 13:06:17], ~N[2026-08-21 13:06:17]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 13:06:17.162] [INFO ] AutoPushService: Created push log 49173 for MF919 params.zip [2026-08-21 13:06:17.162] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 2659, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 13:06:17.162] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 13:06:17.162] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 13:06:17.163] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=86.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 13:06:17.172] [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-08-21 13:06:17.197] [DEBUG] QUERY OK db=23.2ms idle=12.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d5b8c304989a8a8185e9bc4025507a46206d8d127d1f2ecd60bdae7314e51761", 2755, 17947, ~U[2026-08-21 13:06:17Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 13:06:17], ~N[2026-08-21 13:06:17]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 13:06:17.197] [INFO ] AutoPushService: Created push log 49175 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 13:06:17.197] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2755, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 13:06:17.198] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 13:06:17.198] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 13:06:17.199] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms 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 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 13:06:17.199] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 13:06:17.200] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 13:06:17.201] [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-08-21 13:06:17.204] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 13:06:17.204] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:06:17.204] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:06:17.205] [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-08-21 13:06:17.205] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:06:17.205] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 13:06:17.207] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=5.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:06:17.277] [DEBUG] QUERY OK source="tms_terminals" db=28.3ms queue=40.9ms idle=2.8ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["MoreFun", "MF919", ~N[2026-08-21 13:06:17], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 13:06:17.277] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:06:17.277] [INFO ] Event published: terminal_updated [2026-08-21 13:06:17.277] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 13:06:17.277] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 13:06:17.277] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 13:06:17.278] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms idle=70.8ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 13:06:17], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 13:06:17.279] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=2.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 13:06:17.280] [DEBUG] QUERY OK source="terminal_group_rules" db=0.7ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 13:06:17.281] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 13:06:17.354] [DEBUG] QUERY OK source="tms_terminals" db=33.6ms queue=41.6ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MoreFun", "MF919", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 13:06:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:06:17.356] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=73.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-08-21 13:06:17.356] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=1.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:06:17.358] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=1.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:06:17.358] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 13:06:17.408] [DEBUG] QUERY OK source="parameter_push_logs" db=48.5ms idle=2.4ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-08-21 12:36:17]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 13:06:17.409] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 13:06:17.409] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 13:06:17.411] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 13:06:17.413] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.7ms 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-08-21 13:06:17.413] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:06:17.415] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=3.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:06:17.480] [DEBUG] QUERY OK source="tms_terminals" db=23.8ms queue=41.2ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:06:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:06:17.527] [DEBUG] QUERY OK db=46.2ms idle=66.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T13:06:16Z", ~N[2026-08-21 13:06:17], ~N[2026-08-21 13:06:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:06:17.527] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78153, oid: "organization_id", upload_time: "2026-08-21T13:06:16Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:17], updated_at: ~N[2026-08-21 13:06:17]} [2026-08-21 13:06:17.527] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T13:06:16Z", "value" => "online"} [2026-08-21 13:06:17.561] [DEBUG] QUERY OK db=33.4ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T13:06:16Z", "online", "status", 78153, ~N[2026-08-21 13:06:17], ~N[2026-08-21 13:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:17.561] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795461, itemkey: "status", value: "online", timestamp: "2026-08-21T13:06:16Z", message: "Terminal status update", status_log_id: 78153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:17], updated_at: ~N[2026-08-21 13:06:17]}} [2026-08-21 13:06:17.562] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 13:06:17.563] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T13:06:16Z", "value" => "49"} [2026-08-21 13:06:17.663] [DEBUG] QUERY OK db=99.3ms idle=36.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T13:06:16Z", "49", "battery", 78153, ~N[2026-08-21 13:06:17], ~N[2026-08-21 13:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:17.663] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795463, itemkey: "battery", value: "49", timestamp: "2026-08-21T13:06:16Z", message: "Battery level", status_log_id: 78153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:17], updated_at: ~N[2026-08-21 13:06:17]}} [2026-08-21 13:06:17.663] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T13:06:16Z", "value" => "online"} [2026-08-21 13:06:17.758] [DEBUG] QUERY OK db=94.3ms queue=0.1ms idle=102.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T13:06:16Z", "online", "network", 78153, ~N[2026-08-21 13:06:17], ~N[2026-08-21 13:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:17.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795465, itemkey: "network", value: "online", timestamp: "2026-08-21T13:06:16Z", message: "Network connectivity", status_log_id: 78153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:17], updated_at: ~N[2026-08-21 13:06:17]}} [2026-08-21 13:06:17.759] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 13:06:17.759] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T13:06:16Z", "value" => "0"} [2026-08-21 13:06:17.816] [DEBUG] QUERY OK db=56.5ms idle=96.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T13:06:16Z", "0", "cpu", 78153, ~N[2026-08-21 13:06:17], ~N[2026-08-21 13:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:17.816] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795467, itemkey: "cpu", value: "0", timestamp: "2026-08-21T13:06:16Z", message: "CPU usage percentage", status_log_id: 78153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:17], updated_at: ~N[2026-08-21 13:06:17]}} [2026-08-21 13:06:17.817] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T13:06:16Z", "value" => "1.0.0"} [2026-08-21 13:06:17.873] [DEBUG] QUERY OK db=55.8ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T13:06:16Z", "1.0.0", "parameter_config", 78153, ~N[2026-08-21 13:06:17], ~N[2026-08-21 13:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:17.873] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795469, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T13:06:16Z", message: "Current parameters version", status_log_id: 78153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:17], updated_at: ~N[2026-08-21 13:06:17]}} [2026-08-21 13:06:17.873] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T13:06:16Z", "value" => "1.0.1"} [2026-08-21 13:06:17.918] [DEBUG] QUERY OK db=43.7ms idle=58.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T13:06:16Z", "1.0.1", "emv_config", 78153, ~N[2026-08-21 13:06:17], ~N[2026-08-21 13:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:17.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795471, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T13:06:16Z", message: "Current EMV config version", status_log_id: 78153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:17], updated_at: ~N[2026-08-21 13:06:17]}} [2026-08-21 13:06:17.920] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T13:06:16Z", "value" => ""} [2026-08-21 13:06:17.973] [DEBUG] QUERY OK db=48.5ms queue=2.8ms idle=48.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T13:06:16Z", "keys_config", 78153, ~N[2026-08-21 13:06:17], ~N[2026-08-21 13:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:17.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795473, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T13:06:16Z", message: "Current keys config version", status_log_id: 78153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:17], updated_at: ~N[2026-08-21 13:06:17]}} [2026-08-21 13:06:17.973] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T13:06:16Z", "value" => "3.8.7.3"} [2026-08-21 13:06:18.007] [DEBUG] QUERY OK db=33.8ms idle=55.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T13:06:16Z", "3.8.7.3", "application", 78153, ~N[2026-08-21 13:06:17], ~N[2026-08-21 13:06:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:18.008] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795475, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T13:06:16Z", message: "Current application version", status_log_id: 78153, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:17], updated_at: ~N[2026-08-21 13:06:17]}} [2026-08-21 13:06:18.008] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T13:06:17Z"} [2026-08-21 13:06:18.008] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:06:17Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 13, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[{{#PID<0.1949.0>, #Reference<0.1984190822.3844603908.180396>}, -576460070093207}], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:06:22.213] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_1"}} terminating ** (stop) :ping_timeout Last message: :ping State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_1", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_1", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :up, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"ota/+/+/logpush", 1}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.1984190822.3845128193.227012>, opts: [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:06:22.214] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}} terminating ** (stop) :ping_timeout Last message: {:EXIT, #PID<0.1949.0>, :ping_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_1"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.1968.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1951.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1952.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_1"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460071], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_1", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_1"]}]} [2026-08-21 13:06:22.219] [INFO ] Device phoenix_client_tms_apps_1 connected [2026-08-21 13:06:43.030] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:06:43.030] [INFO ] Incoming JSON payload: {"oid":"a644b176-d4e9-4e2e-84b9-816f4f82c0e8","sn":"98251226730001","uploadTime":"2026-08-21T13:06:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:06:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:06:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:06:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:06:42Z"},{"itemkey":"ram_free_mb","value":"886","timestamp":"2026-08-21T13:06:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:06:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:06:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:06:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:06:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:06:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:06:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:06:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:06:42Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:06:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:06: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:06:43.032] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a644b176-d4e9-4e2e-84b9-816f4f82c0e8", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:06:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:06:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:06:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:06:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:06:42Z", "value" => "886"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:06:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:06:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:06:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:06:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:06:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:06:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:06:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:06:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:06:42Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:06:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:06: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:06:42Z", "vendor" => "morefun"} [2026-08-21 13:06:43.033] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:06:43.033] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:06:43.033] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:06:43.035] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms idle=962.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 13:06:43.038] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms queue=1.0ms idle=530.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-08-21 13:06:43.038] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:06:43.041] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:06:43.066] [DEBUG] QUERY OK source="tms_terminals" db=24.2ms idle=4.2ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["morefun", "kiosk_launcher", ~N[2026-08-21 13:06:43], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 13:06:43.066] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:06:43.067] [INFO ] Event published: terminal_updated [2026-08-21 13:06:43.067] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 13:06:43.067] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 13:06:43.067] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 13:06:43.068] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms idle=27.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-08-21 13:06:43], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 13:06:43.068] [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.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 13:06:43.069] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 13:06:43.069] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 13:06:43.149] [DEBUG] QUERY OK source="tms_terminals" db=39.6ms queue=41.5ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "morefun", "kiosk_launcher", nil, nil, nil, nil, ~N[2026-08-21 13:06:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:06:43.149] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:06:43.152] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=72.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:06:43.229] [DEBUG] QUERY OK source="tms_terminals" db=34.8ms queue=41.7ms idle=3.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:06:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:06:43.312] [DEBUG] QUERY OK db=82.1ms idle=77.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a644b176-d4e9-4e2e-84b9-816f4f82c0e8", "2026-08-21T13:06:42Z", ~N[2026-08-21 13:06:43], ~N[2026-08-21 13:06:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:06:43.312] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78155, oid: "a644b176-d4e9-4e2e-84b9-816f4f82c0e8", upload_time: "2026-08-21T13:06:42Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:43], updated_at: ~N[2026-08-21 13:06:43]} [2026-08-21 13:06:43.313] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:06:42Z", "value" => "morefun"} [2026-08-21 13:06:43.440] [DEBUG] QUERY OK db=84.1ms queue=42.6ms idle=83.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:42Z", "morefun", "vendor", 78155, ~N[2026-08-21 13:06:43], ~N[2026-08-21 13:06:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:43.440] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795478, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:43], updated_at: ~N[2026-08-21 13:06:43]}} [2026-08-21 13:06:43.440] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:06:42Z", "value" => "kiosk_launcher"} [2026-08-21 13:06:43.483] [DEBUG] QUERY OK db=42.8ms idle=128.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:42Z", "kiosk_launcher", "model", 78155, ~N[2026-08-21 13:06:43], ~N[2026-08-21 13:06:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:43.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795480, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:43], updated_at: ~N[2026-08-21 13:06:43]}} [2026-08-21 13:06:43.484] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:06:42Z", "value" => "1.0"} [2026-08-21 13:06:43.542] [DEBUG] QUERY OK db=57.5ms idle=44.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:42Z", "1.0", "app_version", 78155, ~N[2026-08-21 13:06:43], ~N[2026-08-21 13:06:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:43.542] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795482, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:43], updated_at: ~N[2026-08-21 13:06:43]}} [2026-08-21 13:06:43.542] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:06:42Z", "value" => "13"} [2026-08-21 13:06:43.585] [DEBUG] QUERY OK db=42.5ms idle=59.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:42Z", "13", "android_version", 78155, ~N[2026-08-21 13:06:43], ~N[2026-08-21 13:06:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:43.585] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795484, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:43], updated_at: ~N[2026-08-21 13:06:43]}} [2026-08-21 13:06:43.585] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:06:42Z", "value" => "886"} [2026-08-21 13:06:43.625] [DEBUG] QUERY OK db=39.4ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:42Z", "886", "ram_free_mb", 78155, ~N[2026-08-21 13:06:43], ~N[2026-08-21 13:06:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:43.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795486, itemkey: "ram_free_mb", value: "886", timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:43], updated_at: ~N[2026-08-21 13:06:43]}} [2026-08-21 13:06:43.625] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:06:42Z", "value" => "WIFI"} [2026-08-21 13:06:43.704] [DEBUG] QUERY OK db=78.2ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:42Z", "WIFI", "network_type", 78155, ~N[2026-08-21 13:06:43], ~N[2026-08-21 13:06:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:43.705] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795488, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:43], updated_at: ~N[2026-08-21 13:06:43]}} [2026-08-21 13:06:43.705] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:06:42Z", "value" => "true"} [2026-08-21 13:06:43.782] [DEBUG] QUERY OK db=76.8ms idle=79.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:42Z", "true", "kiosk_active", 78155, ~N[2026-08-21 13:06:43], ~N[2026-08-21 13:06:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:43.783] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795490, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:43], updated_at: ~N[2026-08-21 13:06:43]}} [2026-08-21 13:06:43.783] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:06:42Z", "value" => ""} [2026-08-21 13:06:43.848] [DEBUG] QUERY OK db=64.9ms idle=78.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:06:42Z", "sim_operator", 78155, ~N[2026-08-21 13:06:43], ~N[2026-08-21 13:06:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:43.848] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795492, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:43], updated_at: ~N[2026-08-21 13:06:43]}} [2026-08-21 13:06:43.848] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:06:42Z", "value" => "UNKNOWN"} [2026-08-21 13:06:43.993] [DEBUG] QUERY OK db=143.9ms idle=66.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:42Z", "UNKNOWN", "sim_number", 78155, ~N[2026-08-21 13:06:43], ~N[2026-08-21 13:06:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:43.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795494, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:43], updated_at: ~N[2026-08-21 13:06:43]}} [2026-08-21 13:06:43.993] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:06:42Z", "value" => "UNKNOWN"} [2026-08-21 13:06:44.077] [DEBUG] QUERY OK db=83.9ms idle=145.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:42Z", "UNKNOWN", "sim_iccid", 78155, ~N[2026-08-21 13:06:43], ~N[2026-08-21 13:06:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:44.078] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795496, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:43], updated_at: ~N[2026-08-21 13:06:43]}} [2026-08-21 13:06:44.078] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:06:42Z", "value" => "UNKNOWN"} [2026-08-21 13:06:44.134] [DEBUG] QUERY OK db=53.5ms idle=88.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:42Z", "UNKNOWN", "sim_imsi", 78155, ~N[2026-08-21 13:06:44], ~N[2026-08-21 13:06:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:44.136] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795498, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:44], updated_at: ~N[2026-08-21 13:06:44]}} [2026-08-21 13:06:44.136] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:06:42Z", "value" => "UNKNOWN"} [2026-08-21 13:06:44.208] [DEBUG] QUERY OK db=67.7ms idle=56.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:42Z", "UNKNOWN", "sim_iccid2", 78155, ~N[2026-08-21 13:06:44], ~N[2026-08-21 13:06:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:44.208] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795500, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:44], updated_at: ~N[2026-08-21 13:06:44]}} [2026-08-21 13:06:44.209] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:06:42Z", "value" => "UNKNOWN"} [2026-08-21 13:06:44.279] [DEBUG] QUERY OK db=69.7ms idle=74.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:42Z", "UNKNOWN", "sim_imsi2", 78155, ~N[2026-08-21 13:06:44], ~N[2026-08-21 13:06:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:44.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795502, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:44], updated_at: ~N[2026-08-21 13:06:44]}} [2026-08-21 13:06:44.279] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:06:42Z", "value" => "37"} [2026-08-21 13:06:44.336] [DEBUG] QUERY OK db=55.9ms idle=71.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:42Z", "37", "data_usage_mb", 78155, ~N[2026-08-21 13:06:44], ~N[2026-08-21 13:06:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:44.337] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795504, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:44], updated_at: ~N[2026-08-21 13:06:44]}} [2026-08-21 13:06:44.338] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:06:42Z", "value" => "0"} [2026-08-21 13:06:44.380] [DEBUG] QUERY OK db=41.5ms idle=59.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06:42Z", "0", "mobile_data_mb", 78155, ~N[2026-08-21 13:06:44], ~N[2026-08-21 13:06:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:44.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795506, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:44], updated_at: ~N[2026-08-21 13:06:44]}} [2026-08-21 13:06:44.381] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:06: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:06:44.441] [DEBUG] QUERY OK db=58.6ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:06: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78155, ~N[2026-08-21 13:06:44], ~N[2026-08-21 13:06:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:06:44.442] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795508, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:06:42Z", message: nil, status_log_id: 78155, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:06:44], updated_at: ~N[2026-08-21 13:06:44]}} [2026-08-21 13:07:13.150] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:07:13.150] [INFO ] Incoming JSON payload: {"oid":"2a1fa013-63dd-422d-b6ad-8b248a2996d1","sn":"98251226730001","uploadTime":"2026-08-21T13:07:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:07:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:07:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:07:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:07:12Z"},{"itemkey":"ram_free_mb","value":"884","timestamp":"2026-08-21T13:07:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:07:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:07:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:07:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:07:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:07:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:07:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:07:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:07:12Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:07:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:07:13.151] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2a1fa013-63dd-422d-b6ad-8b248a2996d1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:07:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:07:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:07:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:07:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:07:12Z", "value" => "884"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:07:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:07:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:07:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:07:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:07:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:07:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:07:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:07:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:07:12Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:07:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:07:12Z", "vendor" => "morefun"} [2026-08-21 13:07:13.151] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:07:13.152] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:07:13.152] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:07:13.161] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=9.0ms idle=901.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-08-21 13:07:13.168] [DEBUG] QUERY OK source="parameter_templates" db=3.8ms queue=1.9ms idle=737.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-08-21 13:07:13.169] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:07:13.178] [DEBUG] QUERY OK source="tms_terminals" db=4.9ms queue=0.6ms idle=10.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-08-21 13:07:13.180] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:07:13.270] [DEBUG] QUERY OK source="tms_terminals" db=48.7ms queue=40.9ms idle=12.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:07:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:07:13.271] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:07:13.280] [DEBUG] QUERY OK source="tms_terminals" db=5.3ms idle=21.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:07:13.318] [DEBUG] QUERY OK source="tms_terminals" db=37.0ms idle=10.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:07:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:07:13.378] [DEBUG] QUERY OK db=59.8ms idle=38.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2a1fa013-63dd-422d-b6ad-8b248a2996d1", "2026-08-21T13:07:12Z", ~N[2026-08-21 13:07:13], ~N[2026-08-21 13:07:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:07:13.378] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78157, oid: "2a1fa013-63dd-422d-b6ad-8b248a2996d1", upload_time: "2026-08-21T13:07:12Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:13], updated_at: ~N[2026-08-21 13:07:13]} [2026-08-21 13:07:13.378] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:07:12Z", "value" => "morefun"} [2026-08-21 13:07:13.413] [DEBUG] QUERY OK db=34.0ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:12Z", "morefun", "vendor", 78157, ~N[2026-08-21 13:07:13], ~N[2026-08-21 13:07:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:13.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795509, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:13], updated_at: ~N[2026-08-21 13:07:13]}} [2026-08-21 13:07:13.415] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:07:12Z", "value" => "kiosk_launcher"} [2026-08-21 13:07:13.458] [DEBUG] QUERY OK db=42.6ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:12Z", "kiosk_launcher", "model", 78157, ~N[2026-08-21 13:07:13], ~N[2026-08-21 13:07:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:13.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795511, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:13], updated_at: ~N[2026-08-21 13:07:13]}} [2026-08-21 13:07:13.459] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:07:12Z", "value" => "1.0"} [2026-08-21 13:07:13.508] [DEBUG] QUERY OK db=48.7ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:12Z", "1.0", "app_version", 78157, ~N[2026-08-21 13:07:13], ~N[2026-08-21 13:07:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:13.509] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795513, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:13], updated_at: ~N[2026-08-21 13:07:13]}} [2026-08-21 13:07:13.509] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:07:12Z", "value" => "13"} [2026-08-21 13:07:13.562] [DEBUG] QUERY OK db=48.9ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:12Z", "13", "android_version", 78157, ~N[2026-08-21 13:07:13], ~N[2026-08-21 13:07:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:13.562] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795514, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:13], updated_at: ~N[2026-08-21 13:07:13]}} [2026-08-21 13:07:13.562] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:07:12Z", "value" => "884"} [2026-08-21 13:07:13.618] [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-08-21T13:07:12Z", "884", "ram_free_mb", 78157, ~N[2026-08-21 13:07:13], ~N[2026-08-21 13:07:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:13.618] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795516, itemkey: "ram_free_mb", value: "884", timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:13], updated_at: ~N[2026-08-21 13:07:13]}} [2026-08-21 13:07:13.618] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:07:12Z", "value" => "WIFI"} [2026-08-21 13:07:13.716] [DEBUG] QUERY OK db=97.0ms idle=56.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:12Z", "WIFI", "network_type", 78157, ~N[2026-08-21 13:07:13], ~N[2026-08-21 13:07:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:13.716] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795518, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:13], updated_at: ~N[2026-08-21 13:07:13]}} [2026-08-21 13:07:13.716] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:07:12Z", "value" => "true"} [2026-08-21 13:07:13.768] [DEBUG] QUERY OK db=51.5ms idle=98.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:12Z", "true", "kiosk_active", 78157, ~N[2026-08-21 13:07:13], ~N[2026-08-21 13:07:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:13.768] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795520, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:13], updated_at: ~N[2026-08-21 13:07:13]}} [2026-08-21 13:07:13.768] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:07:12Z", "value" => ""} [2026-08-21 13:07:13.828] [DEBUG] QUERY OK db=59.2ms idle=53.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:07:12Z", "sim_operator", 78157, ~N[2026-08-21 13:07:13], ~N[2026-08-21 13:07:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:13.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795522, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:13], updated_at: ~N[2026-08-21 13:07:13]}} [2026-08-21 13:07:13.828] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:07:12Z", "value" => "UNKNOWN"} [2026-08-21 13:07:13.886] [DEBUG] QUERY OK db=56.9ms idle=60.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:12Z", "UNKNOWN", "sim_number", 78157, ~N[2026-08-21 13:07:13], ~N[2026-08-21 13:07:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:13.886] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795524, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:13], updated_at: ~N[2026-08-21 13:07:13]}} [2026-08-21 13:07:13.888] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:07:12Z", "value" => "UNKNOWN"} [2026-08-21 13:07:13.947] [DEBUG] QUERY OK db=58.6ms queue=0.1ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:12Z", "UNKNOWN", "sim_iccid", 78157, ~N[2026-08-21 13:07:13], ~N[2026-08-21 13:07:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:13.947] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795526, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:13], updated_at: ~N[2026-08-21 13:07:13]}} [2026-08-21 13:07:13.947] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:07:12Z", "value" => "UNKNOWN"} [2026-08-21 13:07:14.018] [DEBUG] QUERY OK db=69.7ms idle=62.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:12Z", "UNKNOWN", "sim_imsi", 78157, ~N[2026-08-21 13:07:13], ~N[2026-08-21 13:07:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:14.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795528, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:13], updated_at: ~N[2026-08-21 13:07:13]}} [2026-08-21 13:07:14.020] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:07:12Z", "value" => "UNKNOWN"} [2026-08-21 13:07:14.067] [DEBUG] QUERY OK db=47.2ms idle=73.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:12Z", "UNKNOWN", "sim_iccid2", 78157, ~N[2026-08-21 13:07:14], ~N[2026-08-21 13:07:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:14.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795530, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:14], updated_at: ~N[2026-08-21 13:07:14]}} [2026-08-21 13:07:14.068] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:07:12Z", "value" => "UNKNOWN"} [2026-08-21 13:07:14.128] [DEBUG] QUERY OK db=59.0ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:12Z", "UNKNOWN", "sim_imsi2", 78157, ~N[2026-08-21 13:07:14], ~N[2026-08-21 13:07:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:14.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795532, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:14], updated_at: ~N[2026-08-21 13:07:14]}} [2026-08-21 13:07:14.129] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:07:12Z", "value" => "37"} [2026-08-21 13:07:14.183] [DEBUG] QUERY OK db=54.0ms idle=61.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:12Z", "37", "data_usage_mb", 78157, ~N[2026-08-21 13:07:14], ~N[2026-08-21 13:07:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:14.184] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795534, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:14], updated_at: ~N[2026-08-21 13:07:14]}} [2026-08-21 13:07:14.184] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:07:12Z", "value" => "0"} [2026-08-21 13:07:14.237] [DEBUG] QUERY OK db=52.5ms idle=55.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:12Z", "0", "mobile_data_mb", 78157, ~N[2026-08-21 13:07:14], ~N[2026-08-21 13:07:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:14.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795535, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:14], updated_at: ~N[2026-08-21 13:07:14]}} [2026-08-21 13:07:14.239] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:07:14.298] [DEBUG] QUERY OK db=56.4ms idle=56.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78157, ~N[2026-08-21 13:07:14], ~N[2026-08-21 13:07:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:14.301] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795537, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:07:12Z", message: nil, status_log_id: 78157, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:14], updated_at: ~N[2026-08-21 13:07:14]}} [2026-08-21 13:07:39.655] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 13:07:39.655] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T04:17:04Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T04:17:04Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T04:17:04Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T04:17:04Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T04:17:04Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T04:17:04Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T04:17:04Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T04:17:04Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T04:17:04Z","vendor":"MoreFun"} [2026-08-21 13:07:39.661] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T04:17:04Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T04:17:04Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T04:17:04Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T04:17:04Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T04:17:04Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T04:17:04Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T04:17:04Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T04:17:04Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T04:17:04Z", "vendor" => "MoreFun"} [2026-08-21 13:07:39.661] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 13:07:39.661] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 13:07:39.661] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 13:07:39.662] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1126.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-08-21 13:07:39.673] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=214.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 13:07:39.715] [DEBUG] QUERY OK source="parameter_template_values" db=41.5ms idle=11.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-08-21 13:07:39.720] [DEBUG] QUERY OK source="parameter_definitions" db=3.1ms queue=1.0ms idle=43.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-08-21 13:07:39.722] [DEBUG] QUERY OK source="pos_terminal" db=1.2ms idle=5.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 13:07:39.761] [DEBUG] QUERY OK source="pos_merchant" db=35.9ms queue=1.0ms idle=4.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 13:07:39.766] [DEBUG] QUERY OK db=0.9ms queue=3.4ms idle=1241.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 ["123451234512345"] [2026-08-21 13:07:39.766] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 13:07:39.770] [DEBUG] QUERY OK source="pos_terminal_data" db=3.6ms idle=44.6ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 13:07:39.770] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 13:07:39.777] [DEBUG] QUERY OK source="address" db=4.6ms idle=10.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` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 13:07:39.777] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 13:07:39.784] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 13:07:39.851] [DEBUG] QUERY OK db=64.3ms idle=16.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "69b8f92d27bfea32b01946e660de5fc1b63a50346068379c2800c652df090703", 2979, 932, ~U[2026-08-21 13:07:39Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 13:07:39], ~N[2026-08-21 13:07:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 13:07:39.853] [INFO ] AutoPushService: Created push log 49177 for MF919 params.zip [2026-08-21 13:07:39.855] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 2979, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 13:07:39.857] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 13:07:39.858] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 13:07:39.864] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms queue=2.2ms idle=82.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-08-21 13:07:39.881] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 13:07:39.917] [DEBUG] QUERY OK db=30.6ms idle=35.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "a1457265b415798cf9e0b2c1ca5cb8f651557832383b1314803e244ba448633b", 2212, 17947, ~U[2026-08-21 13:07:39Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 13:07:39], ~N[2026-08-21 13:07:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 13:07:39.917] [INFO ] AutoPushService: Created push log 49179 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 13:07:39.917] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 2212, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 13:07:39.917] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 13:07:39.917] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 13:07:39.931] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms idle=65.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-08-21 13:07:39.931] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 13:07:39.938] [DEBUG] QUERY OK source="tms_terminals" db=4.5ms idle=17.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 13:07:39.943] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 13:07:39.948] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 13:07:39.948] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:07:39.948] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:07:39.962] [DEBUG] QUERY OK source="config_file_versions" db=9.8ms idle=21.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 13:07:39.964] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:07:39.964] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 13:07:39.968] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:07:39.968] [INFO ] Terminal updated: 98250623730001 [2026-08-21 13:07:40.003] [DEBUG] QUERY OK source="tms_terminals" db=33.8ms idle=6.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:07:39], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:07:40.004] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=34.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 13:07:40.006] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.2ms idle=2.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:07:40.011] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms 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.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:07:40.014] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 13:07:40.098] [DEBUG] QUERY OK source="parameter_push_logs" db=81.5ms queue=0.6ms idle=9.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 [19, "application", ~N[2026-08-21 12:37:40]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 13:07:40.098] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 13:07:40.098] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 13:07:40.106] [DEBUG] QUERY OK source="tms_terminals" db=6.4ms queue=0.9ms idle=87.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 13:07:40.110] [DEBUG] QUERY OK source="config_file_versions" db=4.1ms idle=8.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 13:07:40.112] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:07:40.115] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=6.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:07:40.168] [DEBUG] QUERY OK source="tms_terminals" db=53.0ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:07:40], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:07:40.222] [DEBUG] QUERY OK db=53.0ms queue=0.1ms idle=53.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T04:17:04Z", ~N[2026-08-21 13:07:40], ~N[2026-08-21 13:07:40]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:07:40.224] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78160, oid: "organization_id", upload_time: "2026-08-21T04:17:04Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:40], updated_at: ~N[2026-08-21 13:07:40]} [2026-08-21 13:07:40.224] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T04:17:04Z", "value" => "online"} [2026-08-21 13:07:40.309] [DEBUG] QUERY OK db=84.3ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T04:17:04Z", "online", "status", 78160, ~N[2026-08-21 13:07:40], ~N[2026-08-21 13:07:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:40.309] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795542, itemkey: "status", value: "online", timestamp: "2026-08-21T04:17:04Z", message: "Terminal status update", status_log_id: 78160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:40], updated_at: ~N[2026-08-21 13:07:40]}} [2026-08-21 13:07:40.310] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 13:07:40.311] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T04:17:04Z", "value" => "51"} [2026-08-21 13:07:40.360] [DEBUG] QUERY OK db=46.2ms queue=2.3ms idle=88.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T04:17:04Z", "51", "battery", 78160, ~N[2026-08-21 13:07:40], ~N[2026-08-21 13:07:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:40.360] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795544, itemkey: "battery", value: "51", timestamp: "2026-08-21T04:17:04Z", message: "Battery level", status_log_id: 78160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:40], updated_at: ~N[2026-08-21 13:07:40]}} [2026-08-21 13:07:40.361] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T04:17:04Z", "value" => "online"} [2026-08-21 13:07:40.424] [DEBUG] QUERY OK db=61.3ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T04:17:04Z", "online", "network", 78160, ~N[2026-08-21 13:07:40], ~N[2026-08-21 13:07:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:40.424] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795546, itemkey: "network", value: "online", timestamp: "2026-08-21T04:17:04Z", message: "Network connectivity", status_log_id: 78160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:40], updated_at: ~N[2026-08-21 13:07:40]}} [2026-08-21 13:07:40.424] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 13:07:40.426] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T04:17:04Z", "value" => "0"} [2026-08-21 13:07:40.493] [DEBUG] QUERY OK db=66.1ms idle=67.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T04:17:04Z", "0", "cpu", 78160, ~N[2026-08-21 13:07:40], ~N[2026-08-21 13:07:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:40.494] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795548, itemkey: "cpu", value: "0", timestamp: "2026-08-21T04:17:04Z", message: "CPU usage percentage", status_log_id: 78160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:40], updated_at: ~N[2026-08-21 13:07:40]}} [2026-08-21 13:07:40.494] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T04:17:04Z", "value" => "1.0.0"} [2026-08-21 13:07:40.570] [DEBUG] QUERY OK db=73.1ms queue=1.3ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T04:17:04Z", "1.0.0", "parameter_config", 78160, ~N[2026-08-21 13:07:40], ~N[2026-08-21 13:07:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:40.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795550, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T04:17:04Z", message: "Current parameters version", status_log_id: 78160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:40], updated_at: ~N[2026-08-21 13:07:40]}} [2026-08-21 13:07:40.570] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T04:17:04Z", "value" => "1.0.1"} [2026-08-21 13:07:40.618] [DEBUG] QUERY OK db=45.7ms idle=79.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T04:17:04Z", "1.0.1", "emv_config", 78160, ~N[2026-08-21 13:07:40], ~N[2026-08-21 13:07:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:40.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795552, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T04:17:04Z", message: "Current EMV config version", status_log_id: 78160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:40], updated_at: ~N[2026-08-21 13:07:40]}} [2026-08-21 13:07:40.619] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T04:17:04Z", "value" => ""} [2026-08-21 13:07:40.740] [DEBUG] QUERY OK db=119.7ms queue=0.4ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T04:17:04Z", "keys_config", 78160, ~N[2026-08-21 13:07:40], ~N[2026-08-21 13:07:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:40.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795554, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T04:17:04Z", message: "Current keys config version", status_log_id: 78160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:40], updated_at: ~N[2026-08-21 13:07:40]}} [2026-08-21 13:07:40.742] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T04:17:04Z", "value" => "3.8.7.3"} [2026-08-21 13:07:40.801] [DEBUG] QUERY OK db=57.8ms idle=2.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T04:17:04Z", "3.8.7.3", "application", 78160, ~N[2026-08-21 13:07:40], ~N[2026-08-21 13:07:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:40.802] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795556, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T04:17:04Z", message: "Current application version", status_log_id: 78160, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:40], updated_at: ~N[2026-08-21 13:07:40]}} [2026-08-21 13:07:40.804] [WARN ] Unexpected async result [2026-08-21 13:07:40.804] [WARN ] Unexpected async result [2026-08-21 13:07:43.262] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:07:43.262] [INFO ] Incoming JSON payload: {"oid":"0987fe8e-9265-4770-94d5-8e39b65d0aec","sn":"98251226730001","uploadTime":"2026-08-21T13:07:42Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:07:42Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:07:42Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:07:42Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:07:42Z"},{"itemkey":"ram_free_mb","value":"882","timestamp":"2026-08-21T13:07:42Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:07:42Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:07:42Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:07:42Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:07:42Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:07:42Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:07:42Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:07:42Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:07:42Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:07:42Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:07:43.267] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "0987fe8e-9265-4770-94d5-8e39b65d0aec", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:07:42Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:07:42Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:07:42Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:07:42Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:07:42Z", "value" => "882"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:07:42Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:07:42Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:07:42Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:07:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:07:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:07:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:07:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:07:42Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:07:42Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:07:42Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:07:42Z", "vendor" => "morefun"} [2026-08-21 13:07:43.267] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:07:43.267] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:07:43.267] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:07:43.269] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=794.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-08-21 13:07:43.270] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.1ms idle=734.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-08-21 13:07:43.270] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:07:43.272] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:07:43.272] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:07:43.295] [DEBUG] QUERY OK source="tms_terminals" db=21.5ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:07:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:07:43.295] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:07:43.298] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=1.8ms idle=23.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:07:43.346] [DEBUG] QUERY OK source="tms_terminals" db=47.5ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:07:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:07:43.391] [DEBUG] QUERY OK db=44.1ms idle=48.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "0987fe8e-9265-4770-94d5-8e39b65d0aec", "2026-08-21T13:07:42Z", ~N[2026-08-21 13:07:43], ~N[2026-08-21 13:07:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:07:43.391] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78161, oid: "0987fe8e-9265-4770-94d5-8e39b65d0aec", upload_time: "2026-08-21T13:07:42Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:43], updated_at: ~N[2026-08-21 13:07:43]} [2026-08-21 13:07:43.391] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:07:42Z", "value" => "morefun"} [2026-08-21 13:07:43.458] [DEBUG] QUERY OK db=66.1ms queue=0.1ms idle=45.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:42Z", "morefun", "vendor", 78161, ~N[2026-08-21 13:07:43], ~N[2026-08-21 13:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:43.458] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795557, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:43], updated_at: ~N[2026-08-21 13:07:43]}} [2026-08-21 13:07:43.458] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:07:42Z", "value" => "kiosk_launcher"} [2026-08-21 13:07:43.518] [DEBUG] QUERY OK db=53.4ms queue=5.6ms idle=67.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:42Z", "kiosk_launcher", "model", 78161, ~N[2026-08-21 13:07:43], ~N[2026-08-21 13:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:43.518] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795559, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:43], updated_at: ~N[2026-08-21 13:07:43]}} [2026-08-21 13:07:43.518] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:07:42Z", "value" => "1.0"} [2026-08-21 13:07:43.701] [DEBUG] QUERY OK db=182.2ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:42Z", "1.0", "app_version", 78161, ~N[2026-08-21 13:07:43], ~N[2026-08-21 13:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:43.701] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795561, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:43], updated_at: ~N[2026-08-21 13:07:43]}} [2026-08-21 13:07:43.702] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:07:42Z", "value" => "13"} [2026-08-21 13:07:43.772] [DEBUG] QUERY OK db=70.0ms idle=184.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:42Z", "13", "android_version", 78161, ~N[2026-08-21 13:07:43], ~N[2026-08-21 13:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:43.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795563, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:43], updated_at: ~N[2026-08-21 13:07:43]}} [2026-08-21 13:07:43.773] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:07:42Z", "value" => "882"} [2026-08-21 13:07:44.009] [DEBUG] QUERY OK db=235.1ms queue=0.7ms idle=72.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:42Z", "882", "ram_free_mb", 78161, ~N[2026-08-21 13:07:43], ~N[2026-08-21 13:07:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:44.009] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795565, itemkey: "ram_free_mb", value: "882", timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:43], updated_at: ~N[2026-08-21 13:07:43]}} [2026-08-21 13:07:44.009] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:07:42Z", "value" => "WIFI"} [2026-08-21 13:07:44.051] [DEBUG] QUERY OK db=40.9ms idle=237.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:42Z", "WIFI", "network_type", 78161, ~N[2026-08-21 13:07:44], ~N[2026-08-21 13:07:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:44.051] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795567, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:44], updated_at: ~N[2026-08-21 13:07:44]}} [2026-08-21 13:07:44.051] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:07:42Z", "value" => "true"} [2026-08-21 13:07:44.120] [DEBUG] QUERY OK db=68.4ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:42Z", "true", "kiosk_active", 78161, ~N[2026-08-21 13:07:44], ~N[2026-08-21 13:07:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:44.120] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795569, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:44], updated_at: ~N[2026-08-21 13:07:44]}} [2026-08-21 13:07:44.121] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:07:42Z", "value" => ""} [2026-08-21 13:07:44.186] [DEBUG] QUERY OK db=65.2ms queue=0.2ms idle=70.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:07:42Z", "sim_operator", 78161, ~N[2026-08-21 13:07:44], ~N[2026-08-21 13:07:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:44.187] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795571, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:44], updated_at: ~N[2026-08-21 13:07:44]}} [2026-08-21 13:07:44.187] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:07:42Z", "value" => "UNKNOWN"} [2026-08-21 13:07:44.223] [DEBUG] QUERY OK db=35.0ms idle=67.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:42Z", "UNKNOWN", "sim_number", 78161, ~N[2026-08-21 13:07:44], ~N[2026-08-21 13:07:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:44.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795572, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:44], updated_at: ~N[2026-08-21 13:07:44]}} [2026-08-21 13:07:44.223] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:07:42Z", "value" => "UNKNOWN"} [2026-08-21 13:07:44.256] [DEBUG] QUERY OK db=32.1ms idle=36.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:42Z", "UNKNOWN", "sim_iccid", 78161, ~N[2026-08-21 13:07:44], ~N[2026-08-21 13:07:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:44.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795574, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:44], updated_at: ~N[2026-08-21 13:07:44]}} [2026-08-21 13:07:44.257] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:07:42Z", "value" => "UNKNOWN"} [2026-08-21 13:07:44.320] [DEBUG] QUERY OK db=63.0ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:42Z", "UNKNOWN", "sim_imsi", 78161, ~N[2026-08-21 13:07:44], ~N[2026-08-21 13:07:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:44.321] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795576, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:44], updated_at: ~N[2026-08-21 13:07:44]}} [2026-08-21 13:07:44.321] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:07:42Z", "value" => "UNKNOWN"} [2026-08-21 13:07:44.344] [DEBUG] QUERY OK db=22.0ms idle=66.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:42Z", "UNKNOWN", "sim_iccid2", 78161, ~N[2026-08-21 13:07:44], ~N[2026-08-21 13:07:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:44.345] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795578, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:44], updated_at: ~N[2026-08-21 13:07:44]}} [2026-08-21 13:07:44.345] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:07:42Z", "value" => "UNKNOWN"} [2026-08-21 13:07:44.394] [DEBUG] QUERY OK db=49.0ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:42Z", "UNKNOWN", "sim_imsi2", 78161, ~N[2026-08-21 13:07:44], ~N[2026-08-21 13:07:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:44.395] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795580, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:44], updated_at: ~N[2026-08-21 13:07:44]}} [2026-08-21 13:07:44.395] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:07:42Z", "value" => "37"} [2026-08-21 13:07:44.428] [DEBUG] QUERY OK db=32.9ms idle=51.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:42Z", "37", "data_usage_mb", 78161, ~N[2026-08-21 13:07:44], ~N[2026-08-21 13:07:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:44.428] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795581, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:44], updated_at: ~N[2026-08-21 13:07:44]}} [2026-08-21 13:07:44.431] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:07:42Z", "value" => "0"} [2026-08-21 13:07:44.473] [DEBUG] QUERY OK db=41.9ms idle=36.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07:42Z", "0", "mobile_data_mb", 78161, ~N[2026-08-21 13:07:44], ~N[2026-08-21 13:07:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:44.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795583, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:44], updated_at: ~N[2026-08-21 13:07:44]}} [2026-08-21 13:07:44.474] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:07:44.529] [DEBUG] QUERY OK db=54.4ms idle=46.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:07: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78161, ~N[2026-08-21 13:07:44], ~N[2026-08-21 13:07:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:44.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795585, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:07:42Z", message: nil, status_log_id: 78161, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:44], updated_at: ~N[2026-08-21 13:07:44]}} [2026-08-21 13:07:55.719] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 13:07:55.719] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T17:07:53Z","org.device":[{"itemkey":"battery","value":39,"timestamp":"2026-08-21T17:07:53Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T17:07:53Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T17:07:53Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T17:07:53Z","message":""}]} [2026-08-21 13:07:55.720] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T17:07:53Z", "value" => 39}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T17:07:53Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T17:07:53Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T17:07:53Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T17:07:53Z"} [2026-08-21 13:07:55.720] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:07:55.723] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=278.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:07:55.723] [INFO ] Terminal updated: 61250415798001 [2026-08-21 13:07:55.765] [DEBUG] QUERY OK source="tms_terminals" db=38.4ms queue=1.9ms idle=203.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:07:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:07:55.766] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=42.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:07:55.802] [DEBUG] QUERY OK source="tms_terminals" db=35.7ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:07:55], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:07:55.843] [DEBUG] QUERY OK db=40.1ms idle=36.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T17:07:53Z", ~N[2026-08-21 13:07:55], ~N[2026-08-21 13:07:55]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:07:55.844] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78163, oid: "org-id-placeholder", upload_time: "2026-08-21T17:07:53Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:55], updated_at: ~N[2026-08-21 13:07:55]} [2026-08-21 13:07:55.844] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T17:07:53Z", "value" => 39} [2026-08-21 13:07:55.887] [DEBUG] QUERY OK db=41.4ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T17:07:53Z", "39", "battery", 78163, ~N[2026-08-21 13:07:55], ~N[2026-08-21 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:55.887] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795589, itemkey: "battery", value: "39", timestamp: "2026-08-21T17:07:53Z", message: nil, status_log_id: 78163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:55], updated_at: ~N[2026-08-21 13:07:55]}} [2026-08-21 13:07:55.887] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T17:07:53Z", "value" => 50} [2026-08-21 13:07:55.953] [DEBUG] QUERY OK db=64.8ms idle=45.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T17:07:53Z", "50", "memory", 78163, ~N[2026-08-21 13:07:55], ~N[2026-08-21 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:55.953] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795591, itemkey: "memory", value: "50", timestamp: "2026-08-21T17:07:53Z", message: "Normal", status_log_id: 78163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:55], updated_at: ~N[2026-08-21 13:07:55]}} [2026-08-21 13:07:55.953] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T17:07:53Z", "value" => 50} [2026-08-21 13:07:56.019] [DEBUG] QUERY OK db=65.1ms idle=66.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T17:07:53Z", "50", "cpu", 78163, ~N[2026-08-21 13:07:55], ~N[2026-08-21 13:07:55]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:56.019] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795593, itemkey: "cpu", value: "50", timestamp: "2026-08-21T17:07:53Z", message: nil, status_log_id: 78163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:55], updated_at: ~N[2026-08-21 13:07:55]}} [2026-08-21 13:07:56.020] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T17:07:53Z", "value" => "online"} [2026-08-21 13:07:56.091] [DEBUG] QUERY OK db=70.2ms idle=67.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T17:07:53Z", "online", "network", 78163, ~N[2026-08-21 13:07:56], ~N[2026-08-21 13:07:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:07:56.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795594, itemkey: "network", value: "online", timestamp: "2026-08-21T17:07:53Z", message: nil, status_log_id: 78163, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:07:56], updated_at: ~N[2026-08-21 13:07:56]}} [2026-08-21 13:07:56.091] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 13:08:13.365] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:08:13.366] [INFO ] Incoming JSON payload: {"oid":"3dc01e15-67d4-4214-a3a2-5ad23c3d768b","sn":"98251226730001","uploadTime":"2026-08-21T13:08:12Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"ram_free_mb","value":"881","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:08:12Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:08:13.366] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "3dc01e15-67d4-4214-a3a2-5ad23c3d768b", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:08:12Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:08:12Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:08:12Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:08:12Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:08:12Z", "value" => "881"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:08:12Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:08:12Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:08:12Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:08:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:08:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:08:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:08:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:08:12Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:08:12Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:08:12Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:08:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:08:12Z", "vendor" => "morefun"} [2026-08-21 13:08:13.367] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:08:13.367] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:08:13.367] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:08:13.368] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=827.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-08-21 13:08:13.371] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=704.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-08-21 13:08:13.371] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:08:13.377] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=3.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:08:13.377] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:08:13.439] [DEBUG] QUERY OK source="tms_terminals" db=61.5ms idle=6.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:08:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:08:13.439] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:08:13.440] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=62.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:08:13.490] [DEBUG] QUERY OK source="tms_terminals" db=49.6ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:08:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:08:13.528] [DEBUG] QUERY OK db=36.7ms idle=50.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "3dc01e15-67d4-4214-a3a2-5ad23c3d768b", "2026-08-21T13:08:12Z", ~N[2026-08-21 13:08:13], ~N[2026-08-21 13:08:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:08:13.528] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78165, oid: "3dc01e15-67d4-4214-a3a2-5ad23c3d768b", upload_time: "2026-08-21T13:08:12Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:13], updated_at: ~N[2026-08-21 13:08:13]} [2026-08-21 13:08:13.528] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:08:12Z", "value" => "morefun"} [2026-08-21 13:08:13.571] [DEBUG] QUERY OK db=41.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-08-21T13:08:12Z", "morefun", "vendor", 78165, ~N[2026-08-21 13:08:13], ~N[2026-08-21 13:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:13.571] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795597, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:13], updated_at: ~N[2026-08-21 13:08:13]}} [2026-08-21 13:08:13.571] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:08:12Z", "value" => "kiosk_launcher"} [2026-08-21 13:08:13.620] [DEBUG] QUERY OK db=48.6ms queue=0.2ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:12Z", "kiosk_launcher", "model", 78165, ~N[2026-08-21 13:08:13], ~N[2026-08-21 13:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:13.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795599, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:13], updated_at: ~N[2026-08-21 13:08:13]}} [2026-08-21 13:08:13.621] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:08:12Z", "value" => "1.0"} [2026-08-21 13:08:13.658] [DEBUG] QUERY OK db=36.6ms idle=50.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:12Z", "1.0", "app_version", 78165, ~N[2026-08-21 13:08:13], ~N[2026-08-21 13:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:13.658] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795601, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:13], updated_at: ~N[2026-08-21 13:08:13]}} [2026-08-21 13:08:13.659] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:08:12Z", "value" => "13"} [2026-08-21 13:08:13.739] [DEBUG] QUERY OK db=78.2ms queue=0.9ms idle=39.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:12Z", "13", "android_version", 78165, ~N[2026-08-21 13:08:13], ~N[2026-08-21 13:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:13.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795603, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:13], updated_at: ~N[2026-08-21 13:08:13]}} [2026-08-21 13:08:13.739] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:08:12Z", "value" => "881"} [2026-08-21 13:08:13.798] [DEBUG] QUERY OK db=58.1ms queue=0.1ms idle=71.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:12Z", "881", "ram_free_mb", 78165, ~N[2026-08-21 13:08:13], ~N[2026-08-21 13:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:13.798] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795605, itemkey: "ram_free_mb", value: "881", timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:13], updated_at: ~N[2026-08-21 13:08:13]}} [2026-08-21 13:08:13.799] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:08:12Z", "value" => "WIFI"} [2026-08-21 13:08:13.855] [DEBUG] QUERY OK db=54.8ms idle=61.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:12Z", "WIFI", "network_type", 78165, ~N[2026-08-21 13:08:13], ~N[2026-08-21 13:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:13.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795607, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:13], updated_at: ~N[2026-08-21 13:08:13]}} [2026-08-21 13:08:13.856] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:08:12Z", "value" => "true"} [2026-08-21 13:08:13.912] [DEBUG] QUERY OK db=53.5ms idle=60.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:12Z", "true", "kiosk_active", 78165, ~N[2026-08-21 13:08:13], ~N[2026-08-21 13:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:13.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795609, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:13], updated_at: ~N[2026-08-21 13:08:13]}} [2026-08-21 13:08:13.914] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:08:12Z", "value" => ""} [2026-08-21 13:08:14.110] [DEBUG] QUERY OK db=196.2ms queue=0.1ms idle=59.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:08:12Z", "sim_operator", 78165, ~N[2026-08-21 13:08:13], ~N[2026-08-21 13:08:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:14.111] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795611, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:13], updated_at: ~N[2026-08-21 13:08:13]}} [2026-08-21 13:08:14.111] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:08:12Z", "value" => "UNKNOWN"} [2026-08-21 13:08:14.147] [DEBUG] QUERY OK db=35.7ms idle=199.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:12Z", "UNKNOWN", "sim_number", 78165, ~N[2026-08-21 13:08:14], ~N[2026-08-21 13:08:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:14.147] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795613, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:14], updated_at: ~N[2026-08-21 13:08:14]}} [2026-08-21 13:08:14.147] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:08:12Z", "value" => "UNKNOWN"} [2026-08-21 13:08:14.192] [DEBUG] QUERY OK db=43.6ms queue=0.1ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:12Z", "UNKNOWN", "sim_iccid", 78165, ~N[2026-08-21 13:08:14], ~N[2026-08-21 13:08:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:14.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795615, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:14], updated_at: ~N[2026-08-21 13:08:14]}} [2026-08-21 13:08:14.192] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:08:12Z", "value" => "UNKNOWN"} [2026-08-21 13:08:14.264] [DEBUG] QUERY OK db=71.2ms idle=45.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:12Z", "UNKNOWN", "sim_imsi", 78165, ~N[2026-08-21 13:08:14], ~N[2026-08-21 13:08:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:14.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795617, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:14], updated_at: ~N[2026-08-21 13:08:14]}} [2026-08-21 13:08:14.264] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:08:12Z", "value" => "UNKNOWN"} [2026-08-21 13:08:14.313] [DEBUG] QUERY OK db=48.4ms idle=73.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:12Z", "UNKNOWN", "sim_iccid2", 78165, ~N[2026-08-21 13:08:14], ~N[2026-08-21 13:08:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:14.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795619, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:14], updated_at: ~N[2026-08-21 13:08:14]}} [2026-08-21 13:08:14.314] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:08:12Z", "value" => "UNKNOWN"} [2026-08-21 13:08:14.361] [DEBUG] QUERY OK db=47.1ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:12Z", "UNKNOWN", "sim_imsi2", 78165, ~N[2026-08-21 13:08:14], ~N[2026-08-21 13:08:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:14.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795621, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:14], updated_at: ~N[2026-08-21 13:08:14]}} [2026-08-21 13:08:14.362] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:08:12Z", "value" => "37"} [2026-08-21 13:08:14.423] [DEBUG] QUERY OK db=60.4ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:12Z", "37", "data_usage_mb", 78165, ~N[2026-08-21 13:08:14], ~N[2026-08-21 13:08:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:14.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795623, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:14], updated_at: ~N[2026-08-21 13:08:14]}} [2026-08-21 13:08:14.423] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:08:12Z", "value" => "0"} [2026-08-21 13:08:14.468] [DEBUG] QUERY OK db=43.5ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:12Z", "0", "mobile_data_mb", 78165, ~N[2026-08-21 13:08:14], ~N[2026-08-21 13:08:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:14.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795625, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:14], updated_at: ~N[2026-08-21 13:08:14]}} [2026-08-21 13:08:14.470] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:08:12Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:08:14.538] [DEBUG] QUERY OK db=66.8ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:12Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78165, ~N[2026-08-21 13:08:14], ~N[2026-08-21 13:08:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:14.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795626, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:08:12Z", message: nil, status_log_id: 78165, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:14], updated_at: ~N[2026-08-21 13:08:14]}} [2026-08-21 13:08:43.471] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:08:43.472] [INFO ] Incoming JSON payload: {"oid":"bdef21d1-fa90-4fca-91e5-ee5c99272e18","sn":"98251226730001","uploadTime":"2026-08-21T13:08:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"ram_free_mb","value":"881","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:08:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:08:43.473] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bdef21d1-fa90-4fca-91e5-ee5c99272e18", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:08:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:08:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:08:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:08:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:08:43Z", "value" => "881"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:08:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:08:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:08:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:08:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:08:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:08:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:08:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:08:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:08:43Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:08:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:08:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:08:43Z", "vendor" => "morefun"} [2026-08-21 13:08:43.480] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:08:43.480] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:08:43.480] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:08:43.481] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=935.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-08-21 13:08:43.485] [DEBUG] QUERY OK source="parameter_templates" db=3.9ms idle=707.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-08-21 13:08:43.485] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:08:43.492] [DEBUG] QUERY OK source="tms_terminals" db=6.6ms 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-08-21 13:08:43.495] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:08:43.517] [DEBUG] QUERY OK source="tms_terminals" db=21.2ms idle=10.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:08:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:08:43.517] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:08:43.519] [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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:08:43.567] [DEBUG] QUERY OK source="tms_terminals" db=47.8ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:08:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:08:43.612] [DEBUG] QUERY OK db=44.1ms idle=48.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "bdef21d1-fa90-4fca-91e5-ee5c99272e18", "2026-08-21T13:08:43Z", ~N[2026-08-21 13:08:43], ~N[2026-08-21 13:08:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:08:43.612] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78167, oid: "bdef21d1-fa90-4fca-91e5-ee5c99272e18", upload_time: "2026-08-21T13:08:43Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:43], updated_at: ~N[2026-08-21 13:08:43]} [2026-08-21 13:08:43.612] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:08:43Z", "value" => "morefun"} [2026-08-21 13:08:43.667] [DEBUG] QUERY OK db=53.9ms idle=45.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "morefun", "vendor", 78167, ~N[2026-08-21 13:08:43], ~N[2026-08-21 13:08:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:43.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795629, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:43], updated_at: ~N[2026-08-21 13:08:43]}} [2026-08-21 13:08:43.667] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:08:43Z", "value" => "kiosk_launcher"} [2026-08-21 13:08:43.728] [DEBUG] QUERY OK db=60.8ms idle=55.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "kiosk_launcher", "model", 78167, ~N[2026-08-21 13:08:43], ~N[2026-08-21 13:08:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:43.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795631, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:43], updated_at: ~N[2026-08-21 13:08:43]}} [2026-08-21 13:08:43.729] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:08:43Z", "value" => "1.0"} [2026-08-21 13:08:43.872] [DEBUG] QUERY OK db=142.7ms idle=62.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "1.0", "app_version", 78167, ~N[2026-08-21 13:08:43], ~N[2026-08-21 13:08:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:43.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795633, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:43], updated_at: ~N[2026-08-21 13:08:43]}} [2026-08-21 13:08:43.872] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:08:43Z", "value" => "13"} [2026-08-21 13:08:43.930] [DEBUG] QUERY OK db=57.8ms idle=95.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "13", "android_version", 78167, ~N[2026-08-21 13:08:43], ~N[2026-08-21 13:08:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:43.931] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795635, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:43], updated_at: ~N[2026-08-21 13:08:43]}} [2026-08-21 13:08:43.931] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:08:43Z", "value" => "881"} [2026-08-21 13:08:43.997] [DEBUG] QUERY OK db=65.8ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "881", "ram_free_mb", 78167, ~N[2026-08-21 13:08:43], ~N[2026-08-21 13:08:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:43.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795637, itemkey: "ram_free_mb", value: "881", timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:43], updated_at: ~N[2026-08-21 13:08:43]}} [2026-08-21 13:08:43.997] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:08:43Z", "value" => "WIFI"} [2026-08-21 13:08:44.065] [DEBUG] QUERY OK db=66.9ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "WIFI", "network_type", 78167, ~N[2026-08-21 13:08:43], ~N[2026-08-21 13:08:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:44.065] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795639, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:43], updated_at: ~N[2026-08-21 13:08:43]}} [2026-08-21 13:08:44.065] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:08:43Z", "value" => "true"} [2026-08-21 13:08:44.116] [DEBUG] QUERY OK db=50.7ms idle=68.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "true", "kiosk_active", 78167, ~N[2026-08-21 13:08:44], ~N[2026-08-21 13:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:44.117] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795641, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:44], updated_at: ~N[2026-08-21 13:08:44]}} [2026-08-21 13:08:44.117] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:08:43Z", "value" => ""} [2026-08-21 13:08:44.197] [DEBUG] QUERY OK db=79.8ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:08:43Z", "sim_operator", 78167, ~N[2026-08-21 13:08:44], ~N[2026-08-21 13:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:44.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795643, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:44], updated_at: ~N[2026-08-21 13:08:44]}} [2026-08-21 13:08:44.198] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:08:43Z", "value" => "UNKNOWN"} [2026-08-21 13:08:44.256] [DEBUG] QUERY OK db=57.3ms idle=82.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "UNKNOWN", "sim_number", 78167, ~N[2026-08-21 13:08:44], ~N[2026-08-21 13:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:44.256] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795645, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:44], updated_at: ~N[2026-08-21 13:08:44]}} [2026-08-21 13:08:44.256] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:08:43Z", "value" => "UNKNOWN"} [2026-08-21 13:08:44.313] [DEBUG] QUERY OK db=53.2ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "UNKNOWN", "sim_iccid", 78167, ~N[2026-08-21 13:08:44], ~N[2026-08-21 13:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:44.313] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795647, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:44], updated_at: ~N[2026-08-21 13:08:44]}} [2026-08-21 13:08:44.313] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:08:43Z", "value" => "UNKNOWN"} [2026-08-21 13:08:44.373] [DEBUG] QUERY OK db=58.8ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "UNKNOWN", "sim_imsi", 78167, ~N[2026-08-21 13:08:44], ~N[2026-08-21 13:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:44.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795649, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:44], updated_at: ~N[2026-08-21 13:08:44]}} [2026-08-21 13:08:44.373] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:08:43Z", "value" => "UNKNOWN"} [2026-08-21 13:08:44.436] [DEBUG] QUERY OK db=62.6ms idle=60.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "UNKNOWN", "sim_iccid2", 78167, ~N[2026-08-21 13:08:44], ~N[2026-08-21 13:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:44.436] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795651, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:44], updated_at: ~N[2026-08-21 13:08:44]}} [2026-08-21 13:08:44.437] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:08:43Z", "value" => "UNKNOWN"} [2026-08-21 13:08:44.499] [DEBUG] QUERY OK db=58.5ms idle=68.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "UNKNOWN", "sim_imsi2", 78167, ~N[2026-08-21 13:08:44], ~N[2026-08-21 13:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:44.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795653, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:44], updated_at: ~N[2026-08-21 13:08:44]}} [2026-08-21 13:08:44.501] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:08:43Z", "value" => "37"} [2026-08-21 13:08:44.558] [DEBUG] QUERY OK db=56.4ms idle=65.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "37", "data_usage_mb", 78167, ~N[2026-08-21 13:08:44], ~N[2026-08-21 13:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:44.558] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795654, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:44], updated_at: ~N[2026-08-21 13:08:44]}} [2026-08-21 13:08:44.558] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:08:43Z", "value" => "0"} [2026-08-21 13:08:44.638] [DEBUG] QUERY OK db=79.1ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "0", "mobile_data_mb", 78167, ~N[2026-08-21 13:08:44], ~N[2026-08-21 13:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:44.638] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795656, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:44], updated_at: ~N[2026-08-21 13:08:44]}} [2026-08-21 13:08:44.643] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:08:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:08:44.737] [DEBUG] QUERY OK db=85.5ms idle=85.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:08:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78167, ~N[2026-08-21 13:08:44], ~N[2026-08-21 13:08:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:08:44.738] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795658, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:08:43Z", message: nil, status_log_id: 78167, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:08:44], updated_at: ~N[2026-08-21 13:08:44]}} [2026-08-21 13:09:13.587] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:09:13.587] [INFO ] Incoming JSON payload: {"oid":"2745e292-7e5c-4571-9a80-8e5d6c726832","sn":"98251226730001","uploadTime":"2026-08-21T13:09:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"ram_free_mb","value":"879","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:09:13Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:09:13.588] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "2745e292-7e5c-4571-9a80-8e5d6c726832", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:09:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:09:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:09:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:09:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:09:13Z", "value" => "879"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:09:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:09:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:09:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:09:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:09:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:09:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:09:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:09:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:09:13Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:09:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:09:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:09:13Z", "vendor" => "morefun"} [2026-08-21 13:09:13.588] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:09:13.588] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:09:13.589] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:09:13.599] [DEBUG] QUERY OK source="parameter_templates" db=9.8ms idle=576.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-08-21 13:09:13.602] [DEBUG] QUERY OK source="parameter_templates" db=1.8ms queue=0.2ms idle=22.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-08-21 13:09:13.602] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:09:13.606] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms queue=1.4ms idle=3.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:09:13.607] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:09:13.640] [DEBUG] QUERY OK source="tms_terminals" db=33.1ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:09:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:09:13.642] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:09:13.646] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:09:13.677] [DEBUG] QUERY OK source="tms_terminals" db=25.4ms queue=0.6ms idle=10.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:09:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:09:13.738] [DEBUG] QUERY OK db=60.2ms queue=0.1ms idle=31.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "2745e292-7e5c-4571-9a80-8e5d6c726832", "2026-08-21T13:09:13Z", ~N[2026-08-21 13:09:13], ~N[2026-08-21 13:09:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:09:13.738] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78169, oid: "2745e292-7e5c-4571-9a80-8e5d6c726832", upload_time: "2026-08-21T13:09:13Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:13], updated_at: ~N[2026-08-21 13:09:13]} [2026-08-21 13:09:13.739] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:09:13Z", "value" => "morefun"} [2026-08-21 13:09:13.790] [DEBUG] QUERY OK db=51.1ms idle=62.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "morefun", "vendor", 78169, ~N[2026-08-21 13:09:13], ~N[2026-08-21 13:09:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:13.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795661, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:13], updated_at: ~N[2026-08-21 13:09:13]}} [2026-08-21 13:09:13.791] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:09:13Z", "value" => "kiosk_launcher"} [2026-08-21 13:09:13.814] [DEBUG] QUERY OK db=22.7ms idle=53.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "kiosk_launcher", "model", 78169, ~N[2026-08-21 13:09:13], ~N[2026-08-21 13:09:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:13.814] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795663, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:13], updated_at: ~N[2026-08-21 13:09:13]}} [2026-08-21 13:09:13.814] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:09:13Z", "value" => "1.0"} [2026-08-21 13:09:13.865] [DEBUG] QUERY OK db=45.9ms idle=28.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "1.0", "app_version", 78169, ~N[2026-08-21 13:09:13], ~N[2026-08-21 13:09:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:13.870] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795664, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:13], updated_at: ~N[2026-08-21 13:09:13]}} [2026-08-21 13:09:13.870] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:09:13Z", "value" => "13"} [2026-08-21 13:09:13.920] [DEBUG] QUERY OK db=49.3ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "13", "android_version", 78169, ~N[2026-08-21 13:09:13], ~N[2026-08-21 13:09:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:13.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795666, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:13], updated_at: ~N[2026-08-21 13:09:13]}} [2026-08-21 13:09:13.920] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:09:13Z", "value" => "879"} [2026-08-21 13:09:14.043] [DEBUG] QUERY OK db=116.5ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "879", "ram_free_mb", 78169, ~N[2026-08-21 13:09:13], ~N[2026-08-21 13:09:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:14.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795668, itemkey: "ram_free_mb", value: "879", timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:13], updated_at: ~N[2026-08-21 13:09:13]}} [2026-08-21 13:09:14.045] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:09:13Z", "value" => "WIFI"} [2026-08-21 13:09:14.097] [DEBUG] QUERY OK db=51.0ms idle=29.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "WIFI", "network_type", 78169, ~N[2026-08-21 13:09:14], ~N[2026-08-21 13:09:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:14.097] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795670, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:14], updated_at: ~N[2026-08-21 13:09:14]}} [2026-08-21 13:09:14.097] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:09:13Z", "value" => "true"} [2026-08-21 13:09:14.136] [DEBUG] QUERY OK db=38.8ms idle=54.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "true", "kiosk_active", 78169, ~N[2026-08-21 13:09:14], ~N[2026-08-21 13:09:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:14.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795672, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:14], updated_at: ~N[2026-08-21 13:09:14]}} [2026-08-21 13:09:14.137] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:09:13Z", "value" => ""} [2026-08-21 13:09:14.213] [DEBUG] QUERY OK db=75.2ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:09:13Z", "sim_operator", 78169, ~N[2026-08-21 13:09:14], ~N[2026-08-21 13:09:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:14.216] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795674, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:14], updated_at: ~N[2026-08-21 13:09:14]}} [2026-08-21 13:09:14.217] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:09:13Z", "value" => "UNKNOWN"} [2026-08-21 13:09:14.285] [DEBUG] QUERY OK db=64.6ms queue=0.6ms idle=84.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "UNKNOWN", "sim_number", 78169, ~N[2026-08-21 13:09:14], ~N[2026-08-21 13:09:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:14.286] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795676, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:14], updated_at: ~N[2026-08-21 13:09:14]}} [2026-08-21 13:09:14.286] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:09:13Z", "value" => "UNKNOWN"} [2026-08-21 13:09:14.334] [DEBUG] QUERY OK db=47.2ms queue=0.1ms idle=72.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "UNKNOWN", "sim_iccid", 78169, ~N[2026-08-21 13:09:14], ~N[2026-08-21 13:09:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:14.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795678, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:14], updated_at: ~N[2026-08-21 13:09:14]}} [2026-08-21 13:09:14.334] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:09:13Z", "value" => "UNKNOWN"} [2026-08-21 13:09:14.399] [DEBUG] QUERY OK db=64.2ms idle=48.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "UNKNOWN", "sim_imsi", 78169, ~N[2026-08-21 13:09:14], ~N[2026-08-21 13:09:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:14.405] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795680, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:14], updated_at: ~N[2026-08-21 13:09:14]}} [2026-08-21 13:09:14.405] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:09:13Z", "value" => "UNKNOWN"} [2026-08-21 13:09:14.458] [DEBUG] QUERY OK db=50.2ms queue=0.1ms idle=74.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "UNKNOWN", "sim_iccid2", 78169, ~N[2026-08-21 13:09:14], ~N[2026-08-21 13:09:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:14.459] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795682, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:14], updated_at: ~N[2026-08-21 13:09:14]}} [2026-08-21 13:09:14.459] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:09:13Z", "value" => "UNKNOWN"} [2026-08-21 13:09:14.508] [DEBUG] QUERY OK db=49.2ms idle=60.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "UNKNOWN", "sim_imsi2", 78169, ~N[2026-08-21 13:09:14], ~N[2026-08-21 13:09:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:14.509] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795684, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:14], updated_at: ~N[2026-08-21 13:09:14]}} [2026-08-21 13:09:14.509] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:09:13Z", "value" => "37"} [2026-08-21 13:09:14.565] [DEBUG] QUERY OK db=50.2ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "37", "data_usage_mb", 78169, ~N[2026-08-21 13:09:14], ~N[2026-08-21 13:09:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:14.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795686, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:14], updated_at: ~N[2026-08-21 13:09:14]}} [2026-08-21 13:09:14.570] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:09:13Z", "value" => "0"} [2026-08-21 13:09:14.617] [DEBUG] QUERY OK db=46.7ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "0", "mobile_data_mb", 78169, ~N[2026-08-21 13:09:14], ~N[2026-08-21 13:09:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:14.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795688, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:14], updated_at: ~N[2026-08-21 13:09:14]}} [2026-08-21 13:09:14.623] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:09:13Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:09:14.683] [DEBUG] QUERY OK db=51.4ms idle=66.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:13Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78169, ~N[2026-08-21 13:09:14], ~N[2026-08-21 13:09:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:14.692] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795690, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:09:13Z", message: nil, status_log_id: 78169, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:14], updated_at: ~N[2026-08-21 13:09:14]}} [2026-08-21 13:09:32.818] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:09:32.819] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T13:09:32Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T13:09:32Z","value":"49"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T13:09:32Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T13:09:32Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T13:09:32Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T13:09:32Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T13:09:32Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T13:09:32Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T13:09:32Z","vendor":"MoreFun"} [2026-08-21 13:09:32.819] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T13:09:32Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T13:09:32Z", "value" => "49"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T13:09:32Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T13:09:32Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T13:09:32Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T13:09:32Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T13:09:32Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T13:09:32Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:09:32Z", "vendor" => "MoreFun"} [2026-08-21 13:09:32.819] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 13:09:32.819] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:09:32.819] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 13:09:32.820] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=687.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-08-21 13:09:32.821] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=235.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-08-21 13:09:32.824] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms queue=0.1ms idle=3.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-08-21 13:09:32.828] [DEBUG] QUERY OK source="parameter_definitions" db=1.3ms queue=2.0ms idle=3.4ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 13:09:32.834] [DEBUG] QUERY OK source="pos_terminal" db=5.5ms 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-08-21 13:09:32.870] [DEBUG] QUERY OK source="pos_merchant" db=35.2ms queue=0.1ms idle=6.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 13:09:32.872] [DEBUG] QUERY OK db=1.2ms queue=1.2ms idle=1287.1ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["626165170000000"] [2026-08-21 13:09:32.873] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 13:09:32.874] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms idle=39.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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 13:09:32.875] [DEBUG] QUERY OK source="address" db=0.4ms idle=4.3ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 13:09:32.875] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 13:09:32.879] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 13:09:32.936] [DEBUG] QUERY OK db=54.4ms idle=7.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ed8e9199f91d4a4ed65c8e222e0176b61eb2a26fc39c2d4b298ac9966af15af2", 2181, 939, ~U[2026-08-21 13:09:32Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 13:09:32], ~N[2026-08-21 13:09:32]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 13:09:32.937] [INFO ] AutoPushService: Created push log 49181 for MF919 params.zip [2026-08-21 13:09:32.938] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 2181, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 13:09:32.938] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 13:09:32.939] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 13:09:32.942] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms 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 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-08-21 13:09:32.950] [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-08-21 13:09:33.008] [DEBUG] QUERY OK db=55.7ms idle=10.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "54eca2225c98d4405a202e79543b95b073765a187ab49395166e3f27198f9062", 6882, 17947, ~U[2026-08-21 13:09:32Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 13:09:32], ~N[2026-08-21 13:09:32]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 13:09:33.008] [INFO ] AutoPushService: Created push log 49183 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 13:09:33.008] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 6882, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 13:09:33.009] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 13:09:33.010] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 13:09:33.011] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=49.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-08-21 13:09:33.012] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 13:09:33.017] [DEBUG] QUERY OK source="tms_terminals" db=5.5ms idle=4.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 13:09:33.018] [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-08-21 13:09:33.023] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 13:09:33.023] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:09:33.024] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:09:33.026] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms idle=12.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-08-21 13:09:33.026] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:09:33.026] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 13:09:33.029] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=9.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:09:33.112] [DEBUG] QUERY OK source="tms_terminals" db=40.7ms queue=40.7ms idle=4.5ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["MoreFun", "MF919", ~N[2026-08-21 13:09:33], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 13:09:33.112] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:09:33.112] [INFO ] Event published: terminal_updated [2026-08-21 13:09:33.113] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 13:09:33.113] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 13:09:33.114] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 13:09:33.122] [DEBUG] QUERY OK source="terminal_group_memberships" db=9.1ms queue=0.1ms idle=3.6ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 13:09:33], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 13:09:33.124] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=10.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 13:09:33.126] [DEBUG] QUERY OK source="terminal_group_rules" db=1.1ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 13:09:33.126] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 13:09:33.194] [DEBUG] QUERY OK source="tms_terminals" db=30.2ms queue=41.1ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MoreFun", "MF919", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 13:09:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:09:33.196] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=54.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-08-21 13:09:33.198] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=2.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:09:33.204] [DEBUG] QUERY OK source="config_file_versions" db=1.9ms queue=0.9ms idle=4.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:09:33.204] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 13:09:33.267] [DEBUG] QUERY OK source="parameter_push_logs" db=62.5ms idle=6.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-08-21 12:39:33]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 13:09:33.267] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 13:09:33.267] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 13:09:33.273] [DEBUG] QUERY OK source="tms_terminals" db=5.1ms idle=63.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 13:09:33.277] [DEBUG] QUERY OK source="config_file_versions" db=4.2ms idle=6.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 13:09:33.280] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:09:33.281] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms 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.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:09:33.360] [DEBUG] QUERY OK source="tms_terminals" db=36.4ms queue=41.5ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:09:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:09:33.411] [DEBUG] QUERY OK db=51.4ms queue=0.1ms idle=78.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T13:09:32Z", ~N[2026-08-21 13:09:33], ~N[2026-08-21 13:09:33]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:09:33.412] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78171, oid: "organization_id", upload_time: "2026-08-21T13:09:32Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:33], updated_at: ~N[2026-08-21 13:09:33]} [2026-08-21 13:09:33.412] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T13:09:32Z", "value" => "online"} [2026-08-21 13:09:33.488] [DEBUG] QUERY OK db=75.3ms idle=52.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T13:09:32Z", "online", "status", 78171, ~N[2026-08-21 13:09:33], ~N[2026-08-21 13:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:33.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795693, itemkey: "status", value: "online", timestamp: "2026-08-21T13:09:32Z", message: "Terminal status update", status_log_id: 78171, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:33], updated_at: ~N[2026-08-21 13:09:33]}} [2026-08-21 13:09:33.488] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 13:09:33.488] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T13:09:32Z", "value" => "49"} [2026-08-21 13:09:33.522] [DEBUG] QUERY OK db=33.9ms idle=77.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T13:09:32Z", "49", "battery", 78171, ~N[2026-08-21 13:09:33], ~N[2026-08-21 13:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:33.523] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795695, itemkey: "battery", value: "49", timestamp: "2026-08-21T13:09:32Z", message: "Battery level", status_log_id: 78171, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:33], updated_at: ~N[2026-08-21 13:09:33]}} [2026-08-21 13:09:33.523] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T13:09:32Z", "value" => "online"} [2026-08-21 13:09:33.607] [DEBUG] QUERY OK db=83.7ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T13:09:32Z", "online", "network", 78171, ~N[2026-08-21 13:09:33], ~N[2026-08-21 13:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:33.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795697, itemkey: "network", value: "online", timestamp: "2026-08-21T13:09:32Z", message: "Network connectivity", status_log_id: 78171, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:33], updated_at: ~N[2026-08-21 13:09:33]}} [2026-08-21 13:09:33.607] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 13:09:33.608] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T13:09:32Z", "value" => "0"} [2026-08-21 13:09:33.667] [DEBUG] QUERY OK db=54.4ms queue=4.1ms idle=85.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T13:09:32Z", "0", "cpu", 78171, ~N[2026-08-21 13:09:33], ~N[2026-08-21 13:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:33.667] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795698, itemkey: "cpu", value: "0", timestamp: "2026-08-21T13:09:32Z", message: "CPU usage percentage", status_log_id: 78171, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:33], updated_at: ~N[2026-08-21 13:09:33]}} [2026-08-21 13:09:33.667] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T13:09:32Z", "value" => "1.0.0"} [2026-08-21 13:09:33.716] [DEBUG] QUERY OK db=49.0ms idle=60.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T13:09:32Z", "1.0.0", "parameter_config", 78171, ~N[2026-08-21 13:09:33], ~N[2026-08-21 13:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:33.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795700, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T13:09:32Z", message: "Current parameters version", status_log_id: 78171, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:33], updated_at: ~N[2026-08-21 13:09:33]}} [2026-08-21 13:09:33.719] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T13:09:32Z", "value" => "1.0.1"} [2026-08-21 13:09:33.791] [DEBUG] QUERY OK db=69.3ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T13:09:32Z", "1.0.1", "emv_config", 78171, ~N[2026-08-21 13:09:33], ~N[2026-08-21 13:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:33.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795701, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T13:09:32Z", message: "Current EMV config version", status_log_id: 78171, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:33], updated_at: ~N[2026-08-21 13:09:33]}} [2026-08-21 13:09:33.791] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T13:09:32Z", "value" => ""} [2026-08-21 13:09:33.859] [DEBUG] QUERY OK db=66.4ms queue=1.6ms idle=74.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T13:09:32Z", "keys_config", 78171, ~N[2026-08-21 13:09:33], ~N[2026-08-21 13:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:33.860] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795703, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T13:09:32Z", message: "Current keys config version", status_log_id: 78171, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:33], updated_at: ~N[2026-08-21 13:09:33]}} [2026-08-21 13:09:33.860] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T13:09:32Z", "value" => "3.8.7.3"} [2026-08-21 13:09:33.968] [DEBUG] QUERY OK db=107.7ms idle=69.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T13:09:32Z", "3.8.7.3", "application", 78171, ~N[2026-08-21 13:09:33], ~N[2026-08-21 13:09:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:33.968] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795705, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T13:09:32Z", message: "Current application version", status_log_id: 78171, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:33], updated_at: ~N[2026-08-21 13:09:33]}} [2026-08-21 13:09:33.968] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T13:09:32Z"} [2026-08-21 13:09:33.988] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:09:32Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 9, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :up, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{"phoenix_client_tms_apps_1" => true}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:09:43.687] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:09:43.687] [INFO ] Incoming JSON payload: {"oid":"d860d98f-9d4f-42da-83c3-239e7d5dfb2c","sn":"98251226730001","uploadTime":"2026-08-21T13:09:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"ram_free_mb","value":"884","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:09:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:09:43.688] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "d860d98f-9d4f-42da-83c3-239e7d5dfb2c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:09:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:09:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:09:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:09:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:09:43Z", "value" => "884"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:09:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:09:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:09:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:09:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:09:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:09:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:09:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:09:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:09:43Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:09:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:09:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:09:43Z", "vendor" => "morefun"} [2026-08-21 13:09:43.688] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:09:43.688] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:09:43.688] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:09:43.691] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms idle=494.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-08-21 13:09:43.694] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=1.2ms idle=109.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-08-21 13:09:43.694] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:09:43.695] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=3.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:09:43.775] [DEBUG] QUERY OK source="tms_terminals" db=37.4ms queue=41.8ms idle=1.5ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["morefun", "kiosk_launcher", ~N[2026-08-21 13:09:43], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 13:09:43.775] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:09:43.777] [INFO ] Event published: terminal_updated [2026-08-21 13:09:43.777] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 13:09:43.782] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 13:09:43.783] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 13:09:43.788] [DEBUG] QUERY OK source="terminal_group_memberships" db=5.4ms queue=0.1ms idle=86.7ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 13:09:43], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 13:09:43.794] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=10.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 13:09:43.796] [DEBUG] QUERY OK source="terminal_group_rules" db=1.7ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 13:09:43.797] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 13:09:43.901] [DEBUG] QUERY OK source="tms_terminals" db=71.0ms queue=40.9ms idle=14.7ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "morefun", "kiosk_launcher", nil, nil, nil, nil, ~N[2026-08-21 13:09:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:09:43.902] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:09:43.903] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=105.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-08-21 13:09:43.945] [DEBUG] QUERY OK source="tms_terminals" db=40.3ms queue=0.7ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:09:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:09:44.000] [DEBUG] QUERY OK db=52.5ms decode=0.1ms queue=0.2ms idle=44.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "d860d98f-9d4f-42da-83c3-239e7d5dfb2c", "2026-08-21T13:09:43Z", ~N[2026-08-21 13:09:43], ~N[2026-08-21 13:09:43]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:09:44.001] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78174, oid: "d860d98f-9d4f-42da-83c3-239e7d5dfb2c", upload_time: "2026-08-21T13:09:43Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:43], updated_at: ~N[2026-08-21 13:09:43]} [2026-08-21 13:09:44.001] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:09:43Z", "value" => "morefun"} [2026-08-21 13:09:44.137] [DEBUG] QUERY OK db=95.7ms queue=40.5ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "morefun", "vendor", 78174, ~N[2026-08-21 13:09:44], ~N[2026-08-21 13:09:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:44.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795711, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:44], updated_at: ~N[2026-08-21 13:09:44]}} [2026-08-21 13:09:44.140] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:09:43Z", "value" => "kiosk_launcher"} [2026-08-21 13:09:44.198] [DEBUG] QUERY OK db=57.7ms queue=0.1ms idle=140.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "kiosk_launcher", "model", 78174, ~N[2026-08-21 13:09:44], ~N[2026-08-21 13:09:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:44.198] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795712, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:44], updated_at: ~N[2026-08-21 13:09:44]}} [2026-08-21 13:09:44.198] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:09:43Z", "value" => "1.0"} [2026-08-21 13:09:44.270] [DEBUG] QUERY OK db=71.0ms idle=2.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "1.0", "app_version", 78174, ~N[2026-08-21 13:09:44], ~N[2026-08-21 13:09:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:44.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795714, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:44], updated_at: ~N[2026-08-21 13:09:44]}} [2026-08-21 13:09:44.270] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:09:43Z", "value" => "13"} [2026-08-21 13:09:44.370] [DEBUG] QUERY OK db=98.5ms queue=0.1ms idle=72.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "13", "android_version", 78174, ~N[2026-08-21 13:09:44], ~N[2026-08-21 13:09:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:44.370] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795716, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:44], updated_at: ~N[2026-08-21 13:09:44]}} [2026-08-21 13:09:44.370] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:09:43Z", "value" => "884"} [2026-08-21 13:09:44.444] [DEBUG] QUERY OK db=73.7ms idle=100.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "884", "ram_free_mb", 78174, ~N[2026-08-21 13:09:44], ~N[2026-08-21 13:09:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:44.445] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795718, itemkey: "ram_free_mb", value: "884", timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:44], updated_at: ~N[2026-08-21 13:09:44]}} [2026-08-21 13:09:44.445] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:09:43Z", "value" => "WIFI"} [2026-08-21 13:09:44.521] [DEBUG] QUERY OK db=75.2ms idle=75.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "WIFI", "network_type", 78174, ~N[2026-08-21 13:09:44], ~N[2026-08-21 13:09:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:44.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795720, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:44], updated_at: ~N[2026-08-21 13:09:44]}} [2026-08-21 13:09:44.521] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:09:43Z", "value" => "true"} [2026-08-21 13:09:44.731] [DEBUG] QUERY OK db=209.0ms idle=77.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "true", "kiosk_active", 78174, ~N[2026-08-21 13:09:44], ~N[2026-08-21 13:09:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:44.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795722, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:44], updated_at: ~N[2026-08-21 13:09:44]}} [2026-08-21 13:09:44.732] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:09:43Z", "value" => ""} [2026-08-21 13:09:44.761] [DEBUG] QUERY OK db=28.5ms idle=211.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:09:43Z", "sim_operator", 78174, ~N[2026-08-21 13:09:44], ~N[2026-08-21 13:09:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:44.762] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795724, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:44], updated_at: ~N[2026-08-21 13:09:44]}} [2026-08-21 13:09:44.762] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:09:43Z", "value" => "UNKNOWN"} [2026-08-21 13:09:44.823] [DEBUG] QUERY OK db=60.0ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "UNKNOWN", "sim_number", 78174, ~N[2026-08-21 13:09:44], ~N[2026-08-21 13:09:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:44.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795726, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:44], updated_at: ~N[2026-08-21 13:09:44]}} [2026-08-21 13:09:44.823] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:09:43Z", "value" => "UNKNOWN"} [2026-08-21 13:09:44.896] [DEBUG] QUERY OK db=72.6ms idle=62.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "UNKNOWN", "sim_iccid", 78174, ~N[2026-08-21 13:09:44], ~N[2026-08-21 13:09:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:44.896] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795728, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:44], updated_at: ~N[2026-08-21 13:09:44]}} [2026-08-21 13:09:44.897] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:09:43Z", "value" => "UNKNOWN"} [2026-08-21 13:09:44.930] [DEBUG] QUERY OK db=32.8ms idle=73.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "UNKNOWN", "sim_imsi", 78174, ~N[2026-08-21 13:09:44], ~N[2026-08-21 13:09:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:44.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795729, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:44], updated_at: ~N[2026-08-21 13:09:44]}} [2026-08-21 13:09:44.930] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:09:43Z", "value" => "UNKNOWN"} [2026-08-21 13:09:44.997] [DEBUG] QUERY OK db=64.9ms queue=0.1ms idle=34.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "UNKNOWN", "sim_iccid2", 78174, ~N[2026-08-21 13:09:44], ~N[2026-08-21 13:09:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:44.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795731, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:44], updated_at: ~N[2026-08-21 13:09:44]}} [2026-08-21 13:09:44.997] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:09:43Z", "value" => "UNKNOWN"} [2026-08-21 13:09:45.051] [DEBUG] QUERY OK db=53.2ms idle=67.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "UNKNOWN", "sim_imsi2", 78174, ~N[2026-08-21 13:09:44], ~N[2026-08-21 13:09:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:45.053] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795733, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:44], updated_at: ~N[2026-08-21 13:09:44]}} [2026-08-21 13:09:45.053] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:09:43Z", "value" => "37"} [2026-08-21 13:09:45.128] [DEBUG] QUERY OK db=73.6ms queue=0.9ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "37", "data_usage_mb", 78174, ~N[2026-08-21 13:09:45], ~N[2026-08-21 13:09:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:45.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795735, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:45], updated_at: ~N[2026-08-21 13:09:45]}} [2026-08-21 13:09:45.128] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:09:43Z", "value" => "0"} [2026-08-21 13:09:45.177] [DEBUG] QUERY OK db=48.5ms queue=0.2ms idle=77.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "0", "mobile_data_mb", 78174, ~N[2026-08-21 13:09:45], ~N[2026-08-21 13:09:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:45.178] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795737, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:45], updated_at: ~N[2026-08-21 13:09:45]}} [2026-08-21 13:09:45.178] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:09:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:09:45.236] [DEBUG] QUERY OK db=57.1ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:09:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78174, ~N[2026-08-21 13:09:45], ~N[2026-08-21 13:09:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:09:45.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795739, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:09:43Z", message: nil, status_log_id: 78174, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:09:45], updated_at: ~N[2026-08-21 13:09:45]}} [2026-08-21 13:09:53.320] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T13:09:32Z"} [2026-08-21 13:09:53.321] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:09:32Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 10, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:09:53.331] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T13:09:33Z"} [2026-08-21 13:09:53.331] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:09:33Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 11, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:09:53.333] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T13:09:33Z"} [2026-08-21 13:09:53.333] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:09:33Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 12, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:10:07.275] [INFO ] Performing scheduled filter cache refresh... [2026-08-21 13:10:07.278] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms queue=0.2ms idle=978.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-08-21 13:10:07.282] [DEBUG] QUERY OK source="filter_usage" db=3.1ms idle=693.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-08-21 13:10:07.284] [INFO ] Filter cache rebuilt: 0 areas, 4 vendors, 8 models [2026-08-21 13:10:07.704] [INFO ] Running offline device check... [2026-08-21 13:10:07.704] [INFO ] Starting offline device check... [2026-08-21 13:10:07.711] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms idle=425.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 13:10:07.728] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.9ms idle=409.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 13:10:07.744] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.4ms idle=22.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.750] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=1.1ms idle=16.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.756] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.758] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=9.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.766] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.0ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.771] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=12.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.780] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.9ms queue=0.1ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.785] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=9.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.793] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.4ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.807] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.813] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=17.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.829] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.3ms idle=9.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.837] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms 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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.840] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.841] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.842] [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 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.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 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.870] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=23.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.880] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=12.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.885] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms idle=10.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.890] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms 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 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.892] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.940] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=47.5ms queue=0.3ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.941] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.3ms idle=48.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 13:10:07.942] [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 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.951] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.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 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.953] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=9.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.957] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms queue=0.3ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.958] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 13:10:07.961] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.966] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.969] [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 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.971] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=1.9ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.974] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.976] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.979] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.980] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.981] [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-08-21 13:10:07.982] [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 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.983] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.986] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.987] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.5ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.988] [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 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.990] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.992] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.993] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.994] [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 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.996] [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 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.997] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.998] [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 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.999] [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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:10:07.999] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 13:10:07.999] [INFO ] Offline device check completed successfully [2026-08-21 13:10:13.798] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:10:13.798] [INFO ] Incoming JSON payload: {"oid":"af5f14ee-a835-4745-8c91-40a2d136452e","sn":"98251226730001","uploadTime":"2026-08-21T13:10:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:10:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:10:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:10:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:10:13Z"},{"itemkey":"ram_free_mb","value":"881","timestamp":"2026-08-21T13:10:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:10:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:10:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:10:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:10:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:10:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:10:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:10:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:10:13Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:10:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:10:13.801] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "af5f14ee-a835-4745-8c91-40a2d136452e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:10:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:10:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:10:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:10:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:10:13Z", "value" => "881"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:10:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:10:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:10:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:10:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:10:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:10:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:10:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:10:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:10:13Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:10:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:10:13Z", "vendor" => "morefun"} [2026-08-21 13:10:13.802] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:10:13.802] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:10:13.802] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:10:13.805] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=0.8ms idle=456.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-08-21 13:10:13.806] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=213.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-08-21 13:10:13.806] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:10:13.808] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=2.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:10:13.808] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:10:13.890] [DEBUG] QUERY OK source="tms_terminals" db=41.0ms queue=40.6ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:10:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:10:13.891] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:10:13.894] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=1.3ms 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.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:10:13.955] [DEBUG] QUERY OK source="tms_terminals" db=60.3ms idle=3.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:10:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:10:14.016] [DEBUG] QUERY OK db=60.3ms idle=61.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "af5f14ee-a835-4745-8c91-40a2d136452e", "2026-08-21T13:10:13Z", ~N[2026-08-21 13:10:13], ~N[2026-08-21 13:10:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:10:14.016] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78175, oid: "af5f14ee-a835-4745-8c91-40a2d136452e", upload_time: "2026-08-21T13:10:13Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:13], updated_at: ~N[2026-08-21 13:10:13]} [2026-08-21 13:10:14.016] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:10:13Z", "value" => "morefun"} [2026-08-21 13:10:14.080] [DEBUG] QUERY OK db=63.5ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:13Z", "morefun", "vendor", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.080] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795741, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.080] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:10:13Z", "value" => "kiosk_launcher"} [2026-08-21 13:10:14.139] [DEBUG] QUERY OK db=58.4ms idle=65.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:13Z", "kiosk_launcher", "model", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.140] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795743, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.140] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:10:13Z", "value" => "1.0"} [2026-08-21 13:10:14.188] [DEBUG] QUERY OK db=47.4ms idle=60.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:13Z", "1.0", "app_version", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795745, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.188] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:10:13Z", "value" => "13"} [2026-08-21 13:10:14.254] [DEBUG] QUERY OK db=65.2ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:13Z", "13", "android_version", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795747, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.255] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:10:13Z", "value" => "881"} [2026-08-21 13:10:14.304] [DEBUG] QUERY OK db=48.0ms idle=67.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:13Z", "881", "ram_free_mb", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795749, itemkey: "ram_free_mb", value: "881", timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.304] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:10:13Z", "value" => "WIFI"} [2026-08-21 13:10:14.351] [DEBUG] QUERY OK db=41.2ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:13Z", "WIFI", "network_type", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795751, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.352] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:10:13Z", "value" => "true"} [2026-08-21 13:10:14.423] [DEBUG] QUERY OK db=63.2ms idle=11.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:13Z", "true", "kiosk_active", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795753, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.424] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:10:13Z", "value" => ""} [2026-08-21 13:10:14.492] [DEBUG] QUERY OK db=68.2ms idle=61.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:10:13Z", "sim_operator", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795755, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.493] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:10:13Z", "value" => "UNKNOWN"} [2026-08-21 13:10:14.539] [DEBUG] QUERY OK db=45.6ms queue=0.1ms idle=70.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:13Z", "UNKNOWN", "sim_number", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795757, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.539] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:10:13Z", "value" => "UNKNOWN"} [2026-08-21 13:10:14.609] [DEBUG] QUERY OK db=69.1ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:13Z", "UNKNOWN", "sim_iccid", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.610] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795759, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.610] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:10:13Z", "value" => "UNKNOWN"} [2026-08-21 13:10:14.660] [DEBUG] QUERY OK db=49.3ms idle=71.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:13Z", "UNKNOWN", "sim_imsi", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.660] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795761, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.661] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:10:13Z", "value" => "UNKNOWN"} [2026-08-21 13:10:14.714] [DEBUG] QUERY OK db=52.2ms queue=0.7ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:13Z", "UNKNOWN", "sim_iccid2", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.715] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795763, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.715] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:10:13Z", "value" => "UNKNOWN"} [2026-08-21 13:10:14.777] [DEBUG] QUERY OK db=60.2ms idle=56.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:13Z", "UNKNOWN", "sim_imsi2", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.778] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795765, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.778] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:10:13Z", "value" => "37"} [2026-08-21 13:10:14.866] [DEBUG] QUERY OK db=87.2ms idle=63.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:13Z", "37", "data_usage_mb", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.866] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795767, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.866] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:10:13Z", "value" => "0"} [2026-08-21 13:10:14.928] [DEBUG] QUERY OK db=61.3ms idle=89.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:13Z", "0", "mobile_data_mb", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:14.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795769, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:14.932] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:10:15.012] [DEBUG] QUERY OK db=74.8ms queue=0.6ms idle=67.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78175, ~N[2026-08-21 13:10:14], ~N[2026-08-21 13:10:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:15.031] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795771, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:10:13Z", message: nil, status_log_id: 78175, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:14], updated_at: ~N[2026-08-21 13:10:14]}} [2026-08-21 13:10:44.143] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:10:44.144] [INFO ] Incoming JSON payload: {"oid":"fe44e937-076f-43a2-8293-e15497f3b59e","sn":"98251226730001","uploadTime":"2026-08-21T13:10:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"ram_free_mb","value":"884","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:10:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:10:44.146] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "fe44e937-076f-43a2-8293-e15497f3b59e", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:10:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:10:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:10:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:10:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:10:43Z", "value" => "884"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:10:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:10:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:10:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:10:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:10:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:10:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:10:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:10:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:10:43Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:10:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:10:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:10:43Z", "vendor" => "morefun"} [2026-08-21 13:10:44.146] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:10:44.146] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:10:44.147] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:10:44.147] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=647.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-08-21 13:10:44.148] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=72.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-08-21 13:10:44.148] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:10:44.149] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:10:44.149] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:10:44.173] [DEBUG] QUERY OK source="tms_terminals" db=23.3ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:10:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:10:44.173] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:10:44.174] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:10:44.235] [DEBUG] QUERY OK source="tms_terminals" db=60.8ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:10:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:10:44.248] [DEBUG] QUERY OK db=12.3ms idle=61.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "fe44e937-076f-43a2-8293-e15497f3b59e", "2026-08-21T13:10:43Z", ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:10:44.248] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78177, oid: "fe44e937-076f-43a2-8293-e15497f3b59e", upload_time: "2026-08-21T13:10:43Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]} [2026-08-21 13:10:44.248] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:10:43Z", "value" => "morefun"} [2026-08-21 13:10:44.272] [DEBUG] QUERY OK db=21.4ms idle=15.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "morefun", "vendor", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795773, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.272] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:10:43Z", "value" => "kiosk_launcher"} [2026-08-21 13:10:44.315] [DEBUG] QUERY OK db=42.9ms idle=24.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "kiosk_launcher", "model", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795774, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.316] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:10:43Z", "value" => "1.0"} [2026-08-21 13:10:44.339] [DEBUG] QUERY OK db=22.5ms queue=0.1ms idle=44.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "1.0", "app_version", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.339] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795775, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.339] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:10:43Z", "value" => "13"} [2026-08-21 13:10:44.359] [DEBUG] QUERY OK db=18.8ms queue=0.1ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "13", "android_version", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.359] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795776, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.360] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:10:43Z", "value" => "884"} [2026-08-21 13:10:44.380] [DEBUG] QUERY OK db=19.9ms idle=21.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "884", "ram_free_mb", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795777, itemkey: "ram_free_mb", value: "884", timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.380] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:10:43Z", "value" => "WIFI"} [2026-08-21 13:10:44.400] [DEBUG] QUERY OK db=19.5ms idle=21.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "WIFI", "network_type", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.401] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795778, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.401] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:10:43Z", "value" => "true"} [2026-08-21 13:10:44.449] [DEBUG] QUERY OK db=48.4ms idle=20.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "true", "kiosk_active", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795779, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.450] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:10:43Z", "value" => ""} [2026-08-21 13:10:44.497] [DEBUG] QUERY OK db=46.0ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:10:43Z", "sim_operator", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.497] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795780, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.497] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:10:43Z", "value" => "UNKNOWN"} [2026-08-21 13:10:44.526] [DEBUG] QUERY OK db=28.4ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "UNKNOWN", "sim_number", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795781, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.526] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:10:43Z", "value" => "UNKNOWN"} [2026-08-21 13:10:44.575] [DEBUG] QUERY OK db=48.4ms idle=25.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "UNKNOWN", "sim_iccid", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795782, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.576] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:10:43Z", "value" => "UNKNOWN"} [2026-08-21 13:10:44.635] [DEBUG] QUERY OK db=58.9ms idle=49.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "UNKNOWN", "sim_imsi", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.635] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795783, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.636] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:10:43Z", "value" => "UNKNOWN"} [2026-08-21 13:10:44.694] [DEBUG] QUERY OK db=57.7ms queue=0.1ms idle=60.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "UNKNOWN", "sim_iccid2", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.694] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795784, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.694] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:10:43Z", "value" => "UNKNOWN"} [2026-08-21 13:10:44.719] [DEBUG] QUERY OK db=24.1ms idle=59.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "UNKNOWN", "sim_imsi2", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.719] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795785, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.719] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:10:43Z", "value" => "37"} [2026-08-21 13:10:44.787] [DEBUG] QUERY OK db=68.0ms idle=25.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "37", "data_usage_mb", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.788] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795786, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.788] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:10:43Z", "value" => "0"} [2026-08-21 13:10:44.818] [DEBUG] QUERY OK db=29.7ms idle=69.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "0", "mobile_data_mb", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.818] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795787, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:10:44.821] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:10:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:10:44.881] [DEBUG] QUERY OK db=59.1ms queue=0.1ms idle=33.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:10:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78177, ~N[2026-08-21 13:10:44], ~N[2026-08-21 13:10:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:10:44.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795788, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:10:43Z", message: nil, status_log_id: 78177, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:10:44], updated_at: ~N[2026-08-21 13:10:44]}} [2026-08-21 13:11:11.398] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 13:11:11.398] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T04:20:36Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T04:20:36Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T04:20:36Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T04:20:36Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T04:20:36Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T04:20:36Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T04:20:36Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T04:20:36Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T04:20:36Z","vendor":"MoreFun"} [2026-08-21 13:11:11.400] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T04:20:36Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T04:20:36Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T04:20:36Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T04:20:36Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T04:20:36Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T04:20:36Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T04:20:36Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T04:20:36Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T04:20:36Z", "vendor" => "MoreFun"} [2026-08-21 13:11:11.400] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 13:11:11.400] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 13:11:11.400] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 13:11:11.405] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=802.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 13:11:11.407] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=695.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 13:11:11.410] [DEBUG] QUERY OK source="parameter_template_values" db=1.3ms 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-08-21 13:11:11.414] [DEBUG] QUERY OK source="parameter_definitions" db=1.9ms queue=0.9ms idle=3.2ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 13:11:11.416] [DEBUG] QUERY OK source="pos_terminal" db=0.8ms idle=5.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 13:11:11.456] [DEBUG] QUERY OK source="pos_merchant" db=39.6ms queue=0.2ms idle=2.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 13:11:11.461] [DEBUG] QUERY OK db=1.2ms queue=3.2ms idle=851.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 ["123451234512345"] [2026-08-21 13:11:11.461] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 13:11:11.467] [DEBUG] QUERY OK source="pos_terminal_data" db=4.1ms queue=0.7ms idle=45.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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 13:11:11.467] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 13:11:11.469] [DEBUG] QUERY OK source="address" db=2.0ms idle=10.7ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 13:11:11.469] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 13:11:11.471] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 13:11:11.556] [DEBUG] QUERY OK db=81.7ms idle=7.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b2bbc958a3fefebf26144c493bce211f8b96219a7dcab894423dda157c2d1bc3", 3043, 932, ~U[2026-08-21 13:11:11Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 13:11:11], ~N[2026-08-21 13:11:11]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 13:11:11.556] [INFO ] AutoPushService: Created push log 49185 for MF919 params.zip [2026-08-21 13:11:11.556] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 3043, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 13:11:11.556] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 13:11:11.556] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 13:11:11.557] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=87.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-08-21 13:11:11.562] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 13:11:11.632] [DEBUG] QUERY OK db=69.2ms idle=7.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "30904b13fde30e7dcc697b37fbd77696cb42c20dd9fffc98c8dc42ac2e0edf97", 3139, 17947, ~U[2026-08-21 13:11:11Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 13:11:11], ~N[2026-08-21 13:11:11]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 13:11:11.632] [INFO ] AutoPushService: Created push log 49187 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 13:11:11.633] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 3139, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 13:11:11.633] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 13:11:11.633] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 13:11:11.634] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms idle=75.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 13:11:11.634] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 13:11:11.637] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=2.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 13:11:11.637] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 13:11:11.639] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 13:11:11.639] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:11:11.639] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:11:11.640] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms 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-08-21 13:11:11.643] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:11:11.643] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 13:11:11.644] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=6.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:11:11.645] [INFO ] Terminal updated: 98250623730001 [2026-08-21 13:11:11.704] [DEBUG] QUERY OK source="tms_terminals" db=58.2ms idle=5.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:11:11], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:11:11.706] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=60.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-08-21 13:11:11.707] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=2.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:11:11.707] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=0.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:11:11.708] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 13:11:11.766] [DEBUG] QUERY OK source="parameter_push_logs" db=57.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 [19, "application", ~N[2026-08-21 12:41:11]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 13:11:11.766] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 13:11:11.766] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 13:11:11.767] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=53.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 13:11:11.768] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms 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-08-21 13:11:11.769] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:11:11.770] [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"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:11:11.799] [DEBUG] QUERY OK source="tms_terminals" db=28.9ms queue=0.3ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:11:11], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:11:11.852] [DEBUG] QUERY OK db=51.6ms queue=0.1ms idle=29.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T04:20:36Z", ~N[2026-08-21 13:11:11], ~N[2026-08-21 13:11:11]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:11:11.852] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78178, oid: "organization_id", upload_time: "2026-08-21T04:20:36Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:11], updated_at: ~N[2026-08-21 13:11:11]} [2026-08-21 13:11:11.852] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T04:20:36Z", "value" => "online"} [2026-08-21 13:11:11.882] [DEBUG] QUERY OK db=29.9ms idle=52.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T04:20:36Z", "online", "status", 78178, ~N[2026-08-21 13:11:11], ~N[2026-08-21 13:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:11.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795789, itemkey: "status", value: "online", timestamp: "2026-08-21T04:20:36Z", message: "Terminal status update", status_log_id: 78178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:11], updated_at: ~N[2026-08-21 13:11:11]}} [2026-08-21 13:11:11.883] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 13:11:11.883] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T04:20:36Z", "value" => "51"} [2026-08-21 13:11:11.934] [DEBUG] QUERY OK db=50.6ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T04:20:36Z", "51", "battery", 78178, ~N[2026-08-21 13:11:11], ~N[2026-08-21 13:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:11.935] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795790, itemkey: "battery", value: "51", timestamp: "2026-08-21T04:20:36Z", message: "Battery level", status_log_id: 78178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:11], updated_at: ~N[2026-08-21 13:11:11]}} [2026-08-21 13:11:11.935] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T04:20:36Z", "value" => "online"} [2026-08-21 13:11:11.967] [DEBUG] QUERY OK db=32.0ms idle=52.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T04:20:36Z", "online", "network", 78178, ~N[2026-08-21 13:11:11], ~N[2026-08-21 13:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:11.967] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795791, itemkey: "network", value: "online", timestamp: "2026-08-21T04:20:36Z", message: "Network connectivity", status_log_id: 78178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:11], updated_at: ~N[2026-08-21 13:11:11]}} [2026-08-21 13:11:11.968] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 13:11:11.968] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T04:20:36Z", "value" => "0"} [2026-08-21 13:11:12.017] [DEBUG] QUERY OK db=48.6ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T04:20:36Z", "0", "cpu", 78178, ~N[2026-08-21 13:11:11], ~N[2026-08-21 13:11:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:12.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795792, itemkey: "cpu", value: "0", timestamp: "2026-08-21T04:20:36Z", message: "CPU usage percentage", status_log_id: 78178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:11], updated_at: ~N[2026-08-21 13:11:11]}} [2026-08-21 13:11:12.017] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T04:20:36Z", "value" => "1.0.0"} [2026-08-21 13:11:12.052] [DEBUG] QUERY OK db=34.7ms idle=50.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T04:20:36Z", "1.0.0", "parameter_config", 78178, ~N[2026-08-21 13:11:12], ~N[2026-08-21 13:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:12.053] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795793, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T04:20:36Z", message: "Current parameters version", status_log_id: 78178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:12], updated_at: ~N[2026-08-21 13:11:12]}} [2026-08-21 13:11:12.053] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T04:20:36Z", "value" => "1.0.1"} [2026-08-21 13:11:12.087] [DEBUG] QUERY OK db=33.8ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T04:20:36Z", "1.0.1", "emv_config", 78178, ~N[2026-08-21 13:11:12], ~N[2026-08-21 13:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:12.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795794, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T04:20:36Z", message: "Current EMV config version", status_log_id: 78178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:12], updated_at: ~N[2026-08-21 13:11:12]}} [2026-08-21 13:11:12.087] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T04:20:36Z", "value" => ""} [2026-08-21 13:11:12.185] [DEBUG] QUERY OK db=57.0ms queue=40.8ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T04:20:36Z", "keys_config", 78178, ~N[2026-08-21 13:11:12], ~N[2026-08-21 13:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:12.186] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795795, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T04:20:36Z", message: "Current keys config version", status_log_id: 78178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:12], updated_at: ~N[2026-08-21 13:11:12]}} [2026-08-21 13:11:12.186] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T04:20:36Z", "value" => "3.8.7.3"} [2026-08-21 13:11:12.267] [DEBUG] QUERY OK db=80.8ms idle=99.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T04:20:36Z", "3.8.7.3", "application", 78178, ~N[2026-08-21 13:11:12], ~N[2026-08-21 13:11:12]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:12.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795796, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T04:20:36Z", message: "Current application version", status_log_id: 78178, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:12], updated_at: ~N[2026-08-21 13:11:12]}} [2026-08-21 13:11:12.268] [WARN ] Unexpected async result [2026-08-21 13:11:12.268] [WARN ] Unexpected async result [2026-08-21 13:11:14.236] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:11:14.236] [INFO ] Incoming JSON payload: {"oid":"4f081748-10b2-4f5b-b483-a99c3b6bdab7","sn":"98251226730001","uploadTime":"2026-08-21T13:11:13Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:11:13Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:11:13Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:11:13Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:11:13Z"},{"itemkey":"ram_free_mb","value":"880","timestamp":"2026-08-21T13:11:13Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:11:13Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:11:13Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:11:13Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:11:13Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:11:13Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:11:13Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:11:13Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:11:13Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:11:13Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:11:14.237] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "4f081748-10b2-4f5b-b483-a99c3b6bdab7", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:11:13Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:11:13Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:11:13Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:11:13Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:11:13Z", "value" => "880"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:11:13Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:11:13Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:11:13Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:11:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:11:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:11:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:11:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:11:13Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:11:13Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:11:13Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:11:13Z", "vendor" => "morefun"} [2026-08-21 13:11:14.237] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:11:14.238] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:11:14.238] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:11:14.239] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=1522.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-08-21 13:11:14.240] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=511.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-08-21 13:11:14.240] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:11:14.241] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:11:14.241] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:11:14.273] [DEBUG] QUERY OK source="tms_terminals" db=31.2ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:11:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:11:14.273] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:11:14.274] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=32.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:11:14.299] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:11:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:11:14.345] [DEBUG] QUERY OK db=45.9ms idle=24.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "4f081748-10b2-4f5b-b483-a99c3b6bdab7", "2026-08-21T13:11:13Z", ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:11:14.346] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78179, oid: "4f081748-10b2-4f5b-b483-a99c3b6bdab7", upload_time: "2026-08-21T13:11:13Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]} [2026-08-21 13:11:14.346] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:11:13Z", "value" => "morefun"} [2026-08-21 13:11:14.414] [DEBUG] QUERY OK db=25.8ms queue=42.0ms idle=47.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:13Z", "morefun", "vendor", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:14.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795797, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:14.414] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:11:13Z", "value" => "kiosk_launcher"} [2026-08-21 13:11:14.443] [DEBUG] QUERY OK db=28.4ms idle=69.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:13Z", "kiosk_launcher", "model", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:14.443] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795798, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:14.444] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:11:13Z", "value" => "1.0"} [2026-08-21 13:11:14.504] [DEBUG] QUERY OK db=60.1ms idle=29.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:13Z", "1.0", "app_version", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:14.505] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795799, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:14.505] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:11:13Z", "value" => "13"} [2026-08-21 13:11:14.557] [DEBUG] QUERY OK db=51.7ms queue=0.3ms idle=62.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:13Z", "13", "android_version", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:14.558] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795800, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:14.558] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:11:13Z", "value" => "880"} [2026-08-21 13:11:14.622] [DEBUG] QUERY OK db=63.5ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:13Z", "880", "ram_free_mb", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:14.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795801, itemkey: "ram_free_mb", value: "880", timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:14.622] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:11:13Z", "value" => "WIFI"} [2026-08-21 13:11:14.661] [DEBUG] QUERY OK db=38.9ms idle=64.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:13Z", "WIFI", "network_type", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:14.662] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795802, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:14.662] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:11:13Z", "value" => "true"} [2026-08-21 13:11:14.733] [DEBUG] QUERY OK db=70.2ms queue=0.2ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:13Z", "true", "kiosk_active", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:14.734] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795803, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:14.735] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:11:13Z", "value" => ""} [2026-08-21 13:11:14.774] [DEBUG] QUERY OK db=38.5ms queue=0.1ms idle=3.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:11:13Z", "sim_operator", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:14.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795804, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:14.775] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:11:13Z", "value" => "UNKNOWN"} [2026-08-21 13:11:14.811] [DEBUG] QUERY OK db=36.3ms idle=42.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:13Z", "UNKNOWN", "sim_number", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:14.812] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795805, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:14.812] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:11:13Z", "value" => "UNKNOWN"} [2026-08-21 13:11:14.837] [DEBUG] QUERY OK db=24.1ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:13Z", "UNKNOWN", "sim_iccid", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:14.837] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795806, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:14.837] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:11:13Z", "value" => "UNKNOWN"} [2026-08-21 13:11:14.889] [DEBUG] QUERY OK db=51.5ms queue=0.1ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:13Z", "UNKNOWN", "sim_imsi", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:14.889] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795807, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:14.892] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:11:13Z", "value" => "UNKNOWN"} [2026-08-21 13:11:14.925] [DEBUG] QUERY OK db=32.9ms idle=55.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:13Z", "UNKNOWN", "sim_iccid2", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:14.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795808, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:14.926] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:11:13Z", "value" => "UNKNOWN"} [2026-08-21 13:11:14.960] [DEBUG] QUERY OK db=33.5ms idle=36.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:13Z", "UNKNOWN", "sim_imsi2", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:14.960] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795809, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:14.961] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:11:13Z", "value" => "37"} [2026-08-21 13:11:14.998] [DEBUG] QUERY OK db=36.8ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:13Z", "37", "data_usage_mb", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:14.999] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795810, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:14.999] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:11:13Z", "value" => "0"} [2026-08-21 13:11:15.031] [DEBUG] QUERY OK db=32.1ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:13Z", "0", "mobile_data_mb", 78179, ~N[2026-08-21 13:11:14], ~N[2026-08-21 13:11:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:15.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795811, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:14], updated_at: ~N[2026-08-21 13:11:14]}} [2026-08-21 13:11:15.033] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:11:15.072] [DEBUG] QUERY OK db=37.6ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78179, ~N[2026-08-21 13:11:15], ~N[2026-08-21 13:11:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:15.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795812, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:11:13Z", message: nil, status_log_id: 78179, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:15], updated_at: ~N[2026-08-21 13:11:15]}} [2026-08-21 13:11:44.355] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:11:44.356] [INFO ] Incoming JSON payload: {"oid":"e8dd2ddd-5c54-4754-af27-c73df9fd5ad2","sn":"98251226730001","uploadTime":"2026-08-21T13:11:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"ram_free_mb","value":"878","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:11:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:11:44.357] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e8dd2ddd-5c54-4754-af27-c73df9fd5ad2", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:11:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:11:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:11:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:11:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:11:43Z", "value" => "878"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:11:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:11:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:11:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:11:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:11:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:11:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:11:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:11:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:11:43Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:11:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:11:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:11:43Z", "vendor" => "morefun"} [2026-08-21 13:11:44.358] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:11:44.358] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:11:44.358] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:11:44.359] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=746.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-08-21 13:11:44.360] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=511.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-08-21 13:11:44.360] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:11:44.361] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:11:44.362] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:11:44.465] [DEBUG] QUERY OK source="tms_terminals" db=103.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:11:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:11:44.465] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:11:44.466] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=104.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 13:11:44.509] [DEBUG] QUERY OK source="tms_terminals" db=42.2ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:11:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:11:44.549] [DEBUG] QUERY OK db=39.8ms idle=42.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e8dd2ddd-5c54-4754-af27-c73df9fd5ad2", "2026-08-21T13:11:43Z", ~N[2026-08-21 13:11:44], ~N[2026-08-21 13:11:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:11:44.549] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78180, oid: "e8dd2ddd-5c54-4754-af27-c73df9fd5ad2", upload_time: "2026-08-21T13:11:43Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:44], updated_at: ~N[2026-08-21 13:11:44]} [2026-08-21 13:11:44.550] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:11:43Z", "value" => "morefun"} [2026-08-21 13:11:44.609] [DEBUG] QUERY OK db=58.7ms idle=41.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:43Z", "morefun", "vendor", 78180, ~N[2026-08-21 13:11:44], ~N[2026-08-21 13:11:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:44.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795813, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:44], updated_at: ~N[2026-08-21 13:11:44]}} [2026-08-21 13:11:44.609] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:11:43Z", "value" => "kiosk_launcher"} [2026-08-21 13:11:44.655] [DEBUG] QUERY OK db=45.2ms idle=60.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:43Z", "kiosk_launcher", "model", 78180, ~N[2026-08-21 13:11:44], ~N[2026-08-21 13:11:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:44.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795814, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:44], updated_at: ~N[2026-08-21 13:11:44]}} [2026-08-21 13:11:44.655] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:11:43Z", "value" => "1.0"} [2026-08-21 13:11:44.687] [DEBUG] QUERY OK db=32.0ms idle=46.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:43Z", "1.0", "app_version", 78180, ~N[2026-08-21 13:11:44], ~N[2026-08-21 13:11:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:44.688] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795815, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:44], updated_at: ~N[2026-08-21 13:11:44]}} [2026-08-21 13:11:44.688] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:11:43Z", "value" => "13"} [2026-08-21 13:11:44.721] [DEBUG] QUERY OK db=33.3ms idle=33.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:43Z", "13", "android_version", 78180, ~N[2026-08-21 13:11:44], ~N[2026-08-21 13:11:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:44.722] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795816, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:44], updated_at: ~N[2026-08-21 13:11:44]}} [2026-08-21 13:11:44.722] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:11:43Z", "value" => "878"} [2026-08-21 13:11:44.759] [DEBUG] QUERY OK db=36.6ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:43Z", "878", "ram_free_mb", 78180, ~N[2026-08-21 13:11:44], ~N[2026-08-21 13:11:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:44.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795817, itemkey: "ram_free_mb", value: "878", timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:44], updated_at: ~N[2026-08-21 13:11:44]}} [2026-08-21 13:11:44.759] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:11:43Z", "value" => "WIFI"} [2026-08-21 13:11:44.803] [DEBUG] QUERY OK db=43.0ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:43Z", "WIFI", "network_type", 78180, ~N[2026-08-21 13:11:44], ~N[2026-08-21 13:11:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:44.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795818, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:44], updated_at: ~N[2026-08-21 13:11:44]}} [2026-08-21 13:11:44.803] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:11:43Z", "value" => "true"} [2026-08-21 13:11:44.829] [DEBUG] QUERY OK db=24.9ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:43Z", "true", "kiosk_active", 78180, ~N[2026-08-21 13:11:44], ~N[2026-08-21 13:11:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:44.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795819, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:44], updated_at: ~N[2026-08-21 13:11:44]}} [2026-08-21 13:11:44.829] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:11:43Z", "value" => ""} [2026-08-21 13:11:44.880] [DEBUG] QUERY OK db=50.8ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:11:43Z", "sim_operator", 78180, ~N[2026-08-21 13:11:44], ~N[2026-08-21 13:11:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:44.881] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795820, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:44], updated_at: ~N[2026-08-21 13:11:44]}} [2026-08-21 13:11:44.881] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:11:43Z", "value" => "UNKNOWN"} [2026-08-21 13:11:44.914] [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-08-21T13:11:43Z", "UNKNOWN", "sim_number", 78180, ~N[2026-08-21 13:11:44], ~N[2026-08-21 13:11:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:44.915] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795821, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:44], updated_at: ~N[2026-08-21 13:11:44]}} [2026-08-21 13:11:44.915] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:11:43Z", "value" => "UNKNOWN"} [2026-08-21 13:11:44.940] [DEBUG] QUERY OK db=24.3ms queue=0.1ms idle=35.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:43Z", "UNKNOWN", "sim_iccid", 78180, ~N[2026-08-21 13:11:44], ~N[2026-08-21 13:11:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:44.940] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795822, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:44], updated_at: ~N[2026-08-21 13:11:44]}} [2026-08-21 13:11:44.941] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:11:43Z", "value" => "UNKNOWN"} [2026-08-21 13:11:44.998] [DEBUG] QUERY OK db=56.6ms idle=26.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:43Z", "UNKNOWN", "sim_imsi", 78180, ~N[2026-08-21 13:11:44], ~N[2026-08-21 13:11:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:44.998] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795823, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:44], updated_at: ~N[2026-08-21 13:11:44]}} [2026-08-21 13:11:44.998] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:11:43Z", "value" => "UNKNOWN"} [2026-08-21 13:11:45.042] [DEBUG] QUERY OK db=43.4ms idle=58.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:43Z", "UNKNOWN", "sim_iccid2", 78180, ~N[2026-08-21 13:11:44], ~N[2026-08-21 13:11:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:45.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795824, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:44], updated_at: ~N[2026-08-21 13:11:44]}} [2026-08-21 13:11:45.042] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:11:43Z", "value" => "UNKNOWN"} [2026-08-21 13:11:45.081] [DEBUG] QUERY OK db=38.7ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:43Z", "UNKNOWN", "sim_imsi2", 78180, ~N[2026-08-21 13:11:45], ~N[2026-08-21 13:11:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:45.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795825, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:45], updated_at: ~N[2026-08-21 13:11:45]}} [2026-08-21 13:11:45.082] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:11:43Z", "value" => "37"} [2026-08-21 13:11:45.118] [DEBUG] QUERY OK db=35.6ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:43Z", "37", "data_usage_mb", 78180, ~N[2026-08-21 13:11:45], ~N[2026-08-21 13:11:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:45.118] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795826, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:45], updated_at: ~N[2026-08-21 13:11:45]}} [2026-08-21 13:11:45.118] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:11:43Z", "value" => "0"} [2026-08-21 13:11:45.187] [DEBUG] QUERY OK db=68.9ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:43Z", "0", "mobile_data_mb", 78180, ~N[2026-08-21 13:11:45], ~N[2026-08-21 13:11:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:45.188] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795827, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:45], updated_at: ~N[2026-08-21 13:11:45]}} [2026-08-21 13:11:45.188] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:11:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:11:45.350] [DEBUG] QUERY OK db=161.0ms queue=0.2ms idle=70.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:11:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78180, ~N[2026-08-21 13:11:45], ~N[2026-08-21 13:11:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:11:45.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795828, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:11:43Z", message: nil, status_log_id: 78180, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:11:45], updated_at: ~N[2026-08-21 13:11:45]}} [2026-08-21 13:12:14.452] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:12:14.452] [INFO ] Incoming JSON payload: {"oid":"df9a8432-b587-4785-a6fc-7aff18b8c520","sn":"98251226730001","uploadTime":"2026-08-21T13:12:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"ram_free_mb","value":"873","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:12:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:12:14.453] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "df9a8432-b587-4785-a6fc-7aff18b8c520", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:12:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:12:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:12:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:12:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:12:14Z", "value" => "873"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:12:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:12:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:12:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:12:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:12:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:12:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:12:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:12:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:12:14Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:12:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:12:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:12:14Z", "vendor" => "morefun"} [2026-08-21 13:12:14.453] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:12:14.453] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:12:14.453] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:12:14.456] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=838.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-08-21 13:12:14.457] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=486.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-08-21 13:12:14.457] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:12:14.458] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:12:14.458] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:12:14.493] [DEBUG] QUERY OK source="tms_terminals" db=34.1ms idle=2.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:12:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:12:14.493] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:12:14.494] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=35.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:12:14.525] [DEBUG] QUERY OK source="tms_terminals" db=30.3ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:12:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:12:14.550] [DEBUG] QUERY OK db=24.5ms idle=31.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "df9a8432-b587-4785-a6fc-7aff18b8c520", "2026-08-21T13:12:14Z", ~N[2026-08-21 13:12:14], ~N[2026-08-21 13:12:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:12:14.550] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78181, oid: "df9a8432-b587-4785-a6fc-7aff18b8c520", upload_time: "2026-08-21T13:12:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:14], updated_at: ~N[2026-08-21 13:12:14]} [2026-08-21 13:12:14.550] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:12:14Z", "value" => "morefun"} [2026-08-21 13:12:14.617] [DEBUG] QUERY OK db=66.3ms idle=25.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "morefun", "vendor", 78181, ~N[2026-08-21 13:12:14], ~N[2026-08-21 13:12:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:14.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795829, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:14], updated_at: ~N[2026-08-21 13:12:14]}} [2026-08-21 13:12:14.617] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:12:14Z", "value" => "kiosk_launcher"} [2026-08-21 13:12:14.673] [DEBUG] QUERY OK db=55.7ms idle=67.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "kiosk_launcher", "model", 78181, ~N[2026-08-21 13:12:14], ~N[2026-08-21 13:12:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:14.674] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795830, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:14], updated_at: ~N[2026-08-21 13:12:14]}} [2026-08-21 13:12:14.674] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:12:14Z", "value" => "1.0"} [2026-08-21 13:12:14.757] [DEBUG] QUERY OK db=83.2ms idle=57.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "1.0", "app_version", 78181, ~N[2026-08-21 13:12:14], ~N[2026-08-21 13:12:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:14.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795831, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:14], updated_at: ~N[2026-08-21 13:12:14]}} [2026-08-21 13:12:14.758] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:12:14Z", "value" => "13"} [2026-08-21 13:12:14.815] [DEBUG] QUERY OK db=56.8ms idle=84.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "13", "android_version", 78181, ~N[2026-08-21 13:12:14], ~N[2026-08-21 13:12:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:14.815] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795832, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:14], updated_at: ~N[2026-08-21 13:12:14]}} [2026-08-21 13:12:14.815] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:12:14Z", "value" => "873"} [2026-08-21 13:12:14.880] [DEBUG] QUERY OK db=64.0ms idle=58.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "873", "ram_free_mb", 78181, ~N[2026-08-21 13:12:14], ~N[2026-08-21 13:12:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:14.880] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795833, itemkey: "ram_free_mb", value: "873", timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:14], updated_at: ~N[2026-08-21 13:12:14]}} [2026-08-21 13:12:14.880] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:12:14Z", "value" => "WIFI"} [2026-08-21 13:12:14.917] [DEBUG] QUERY OK db=36.5ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "WIFI", "network_type", 78181, ~N[2026-08-21 13:12:14], ~N[2026-08-21 13:12:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:14.917] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795834, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:14], updated_at: ~N[2026-08-21 13:12:14]}} [2026-08-21 13:12:14.917] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:12:14Z", "value" => "true"} [2026-08-21 13:12:14.975] [DEBUG] QUERY OK db=57.0ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "true", "kiosk_active", 78181, ~N[2026-08-21 13:12:14], ~N[2026-08-21 13:12:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:14.975] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795835, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:14], updated_at: ~N[2026-08-21 13:12:14]}} [2026-08-21 13:12:14.975] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:12:14Z", "value" => ""} [2026-08-21 13:12:14.999] [DEBUG] QUERY OK db=23.3ms idle=3.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:12:14Z", "sim_operator", 78181, ~N[2026-08-21 13:12:14], ~N[2026-08-21 13:12:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:14.999] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795836, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:14], updated_at: ~N[2026-08-21 13:12:14]}} [2026-08-21 13:12:14.999] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:12:14Z", "value" => "UNKNOWN"} [2026-08-21 13:12:15.035] [DEBUG] QUERY OK db=35.4ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "UNKNOWN", "sim_number", 78181, ~N[2026-08-21 13:12:14], ~N[2026-08-21 13:12:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:15.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795837, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:14], updated_at: ~N[2026-08-21 13:12:14]}} [2026-08-21 13:12:15.035] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:12:14Z", "value" => "UNKNOWN"} [2026-08-21 13:12:15.071] [DEBUG] QUERY OK db=34.9ms idle=37.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "UNKNOWN", "sim_iccid", 78181, ~N[2026-08-21 13:12:15], ~N[2026-08-21 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:15.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795838, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:15], updated_at: ~N[2026-08-21 13:12:15]}} [2026-08-21 13:12:15.071] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:12:14Z", "value" => "UNKNOWN"} [2026-08-21 13:12:15.119] [DEBUG] QUERY OK db=47.4ms idle=36.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "UNKNOWN", "sim_imsi", 78181, ~N[2026-08-21 13:12:15], ~N[2026-08-21 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:15.119] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795839, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:15], updated_at: ~N[2026-08-21 13:12:15]}} [2026-08-21 13:12:15.119] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:12:14Z", "value" => "UNKNOWN"} [2026-08-21 13:12:15.214] [DEBUG] QUERY OK db=93.6ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "UNKNOWN", "sim_iccid2", 78181, ~N[2026-08-21 13:12:15], ~N[2026-08-21 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:15.214] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795840, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:15], updated_at: ~N[2026-08-21 13:12:15]}} [2026-08-21 13:12:15.214] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:12:14Z", "value" => "UNKNOWN"} [2026-08-21 13:12:15.453] [DEBUG] QUERY OK db=237.5ms idle=95.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "UNKNOWN", "sim_imsi2", 78181, ~N[2026-08-21 13:12:15], ~N[2026-08-21 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:15.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795841, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:15], updated_at: ~N[2026-08-21 13:12:15]}} [2026-08-21 13:12:15.453] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:12:14Z", "value" => "37"} [2026-08-21 13:12:15.535] [DEBUG] QUERY OK db=80.6ms idle=240.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "37", "data_usage_mb", 78181, ~N[2026-08-21 13:12:15], ~N[2026-08-21 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:15.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795842, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:15], updated_at: ~N[2026-08-21 13:12:15]}} [2026-08-21 13:12:15.535] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:12:14Z", "value" => "0"} [2026-08-21 13:12:15.576] [DEBUG] QUERY OK db=39.8ms idle=83.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "0", "mobile_data_mb", 78181, ~N[2026-08-21 13:12:15], ~N[2026-08-21 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:15.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795843, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:15], updated_at: ~N[2026-08-21 13:12:15]}} [2026-08-21 13:12:15.576] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:12:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:12:15.616] [DEBUG] QUERY OK db=38.6ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78181, ~N[2026-08-21 13:12:15], ~N[2026-08-21 13:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:15.617] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795844, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:12:14Z", message: nil, status_log_id: 78181, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:15], updated_at: ~N[2026-08-21 13:12:15]}} [2026-08-21 13:12:44.605] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:12:44.606] [INFO ] Incoming JSON payload: {"oid":"f445e745-7e31-4926-b627-a99287de934a","sn":"98251226730001","uploadTime":"2026-08-21T13:12:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"ram_free_mb","value":"880","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:12:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:12:44.608] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f445e745-7e31-4926-b627-a99287de934a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:12:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:12:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:12:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:12:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:12:44Z", "value" => "880"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:12:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:12:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:12:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:12:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:12:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:12:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:12:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:12:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:12:44Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:12:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:12:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:12:44Z", "vendor" => "morefun"} [2026-08-21 13:12:44.608] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:12:44.609] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:12:44.610] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:12:44.613] [DEBUG] QUERY OK source="parameter_templates" db=3.2ms idle=1484.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-08-21 13:12:44.614] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=475.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-08-21 13:12:44.616] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:12:44.619] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:12:44.620] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:12:44.643] [DEBUG] QUERY OK source="tms_terminals" db=23.3ms idle=5.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:12:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:12:44.643] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:12:44.644] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms 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` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:12:44.706] [DEBUG] QUERY OK source="tms_terminals" db=61.1ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:12:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:12:44.750] [DEBUG] QUERY OK db=41.9ms idle=63.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "f445e745-7e31-4926-b627-a99287de934a", "2026-08-21T13:12:44Z", ~N[2026-08-21 13:12:44], ~N[2026-08-21 13:12:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:12:44.750] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78182, oid: "f445e745-7e31-4926-b627-a99287de934a", upload_time: "2026-08-21T13:12:44Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:44], updated_at: ~N[2026-08-21 13:12:44]} [2026-08-21 13:12:44.751] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:12:44Z", "value" => "morefun"} [2026-08-21 13:12:44.818] [DEBUG] QUERY OK db=67.3ms queue=0.1ms idle=45.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "morefun", "vendor", 78182, ~N[2026-08-21 13:12:44], ~N[2026-08-21 13:12:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:44.819] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795845, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:44], updated_at: ~N[2026-08-21 13:12:44]}} [2026-08-21 13:12:44.819] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:12:44Z", "value" => "kiosk_launcher"} [2026-08-21 13:12:44.853] [DEBUG] QUERY OK db=33.7ms idle=68.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "kiosk_launcher", "model", 78182, ~N[2026-08-21 13:12:44], ~N[2026-08-21 13:12:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:44.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795846, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:44], updated_at: ~N[2026-08-21 13:12:44]}} [2026-08-21 13:12:44.855] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:12:44Z", "value" => "1.0"} [2026-08-21 13:12:44.894] [DEBUG] QUERY OK db=38.7ms idle=37.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "1.0", "app_version", 78182, ~N[2026-08-21 13:12:44], ~N[2026-08-21 13:12:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:44.898] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795847, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:44], updated_at: ~N[2026-08-21 13:12:44]}} [2026-08-21 13:12:44.898] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:12:44Z", "value" => "13"} [2026-08-21 13:12:45.018] [DEBUG] QUERY OK db=118.7ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "13", "android_version", 78182, ~N[2026-08-21 13:12:44], ~N[2026-08-21 13:12:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:45.023] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795848, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:44], updated_at: ~N[2026-08-21 13:12:44]}} [2026-08-21 13:12:45.023] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:12:44Z", "value" => "880"} [2026-08-21 13:12:45.098] [DEBUG] QUERY OK db=60.1ms idle=143.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "880", "ram_free_mb", 78182, ~N[2026-08-21 13:12:45], ~N[2026-08-21 13:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:45.101] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795849, itemkey: "ram_free_mb", value: "880", timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:45], updated_at: ~N[2026-08-21 13:12:45]}} [2026-08-21 13:12:45.103] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:12:44Z", "value" => "WIFI"} [2026-08-21 13:12:45.151] [DEBUG] QUERY OK db=47.3ms idle=86.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "WIFI", "network_type", 78182, ~N[2026-08-21 13:12:45], ~N[2026-08-21 13:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:45.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795850, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:45], updated_at: ~N[2026-08-21 13:12:45]}} [2026-08-21 13:12:45.155] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:12:44Z", "value" => "true"} [2026-08-21 13:12:45.276] [DEBUG] QUERY OK db=120.3ms idle=13.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "true", "kiosk_active", 78182, ~N[2026-08-21 13:12:45], ~N[2026-08-21 13:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:45.276] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795851, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:45], updated_at: ~N[2026-08-21 13:12:45]}} [2026-08-21 13:12:45.276] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:12:44Z", "value" => ""} [2026-08-21 13:12:45.510] [DEBUG] QUERY OK db=233.1ms idle=125.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:12:44Z", "sim_operator", 78182, ~N[2026-08-21 13:12:45], ~N[2026-08-21 13:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:45.511] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795852, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:45], updated_at: ~N[2026-08-21 13:12:45]}} [2026-08-21 13:12:45.511] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:12:44Z", "value" => "UNKNOWN"} [2026-08-21 13:12:45.606] [DEBUG] QUERY OK db=89.5ms idle=241.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "UNKNOWN", "sim_number", 78182, ~N[2026-08-21 13:12:45], ~N[2026-08-21 13:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:45.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795853, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:45], updated_at: ~N[2026-08-21 13:12:45]}} [2026-08-21 13:12:45.608] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:12:44Z", "value" => "UNKNOWN"} [2026-08-21 13:12:45.703] [DEBUG] QUERY OK db=94.3ms queue=0.5ms idle=99.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "UNKNOWN", "sim_iccid", 78182, ~N[2026-08-21 13:12:45], ~N[2026-08-21 13:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:45.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795854, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:45], updated_at: ~N[2026-08-21 13:12:45]}} [2026-08-21 13:12:45.704] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:12:44Z", "value" => "UNKNOWN"} [2026-08-21 13:12:45.771] [DEBUG] QUERY OK db=65.6ms idle=99.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "UNKNOWN", "sim_imsi", 78182, ~N[2026-08-21 13:12:45], ~N[2026-08-21 13:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:45.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795855, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:45], updated_at: ~N[2026-08-21 13:12:45]}} [2026-08-21 13:12:45.772] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:12:44Z", "value" => "UNKNOWN"} [2026-08-21 13:12:45.854] [DEBUG] QUERY OK db=81.9ms idle=68.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "UNKNOWN", "sim_iccid2", 78182, ~N[2026-08-21 13:12:45], ~N[2026-08-21 13:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:45.855] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795856, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:45], updated_at: ~N[2026-08-21 13:12:45]}} [2026-08-21 13:12:45.855] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:12:44Z", "value" => "UNKNOWN"} [2026-08-21 13:12:45.928] [DEBUG] QUERY OK db=72.1ms idle=83.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "UNKNOWN", "sim_imsi2", 78182, ~N[2026-08-21 13:12:45], ~N[2026-08-21 13:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:45.928] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795857, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:45], updated_at: ~N[2026-08-21 13:12:45]}} [2026-08-21 13:12:45.929] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:12:44Z", "value" => "37"} [2026-08-21 13:12:45.990] [DEBUG] QUERY OK db=59.9ms idle=75.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "37", "data_usage_mb", 78182, ~N[2026-08-21 13:12:45], ~N[2026-08-21 13:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:45.990] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795858, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:45], updated_at: ~N[2026-08-21 13:12:45]}} [2026-08-21 13:12:45.990] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:12:44Z", "value" => "0"} [2026-08-21 13:12:46.045] [DEBUG] QUERY OK db=52.8ms idle=64.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "0", "mobile_data_mb", 78182, ~N[2026-08-21 13:12:45], ~N[2026-08-21 13:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:46.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795859, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:45], updated_at: ~N[2026-08-21 13:12:45]}} [2026-08-21 13:12:46.048] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:12:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:12:46.119] [DEBUG] QUERY OK db=61.7ms queue=2.0ms idle=61.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:12:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78182, ~N[2026-08-21 13:12:46], ~N[2026-08-21 13:12:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:12:46.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795860, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:12:44Z", message: nil, status_log_id: 78182, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:12:46], updated_at: ~N[2026-08-21 13:12:46]}} [2026-08-21 13:12:55.710] [INFO ] Received status update for terminal 61250415798001 [2026-08-21 13:12:59.176] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 13:12:59.612] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","uploadTime":"2026-08-21T17:12:53Z","org.device":[{"itemkey":"battery","value":38,"timestamp":"2026-08-21T17:12:53Z","message":""},{"itemkey":"memory","value":50,"timestamp":"2026-08-21T17:12:53Z","message":"Normal"},{"itemkey":"cpu","value":50,"timestamp":"2026-08-21T17:12:53Z","message":""},{"itemkey":"network","value":"online","timestamp":"2026-08-21T17:12:53Z","message":""}]} [2026-08-21 13:12:59.613] [INFO ] Decoded JSON: %{"oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T17:12:53Z", "value" => 38}, %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T17:12:53Z", "value" => 50}, %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T17:12:53Z", "value" => 50}, %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T17:12:53Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2026-08-21T17:12:53Z"} [2026-08-21 13:12:59.613] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:13:04.614] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 13:13:05.548] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 13:13:05.753] [DEBUG] QUERY OK source="tms_terminals" db=6139.9ms idle=1983.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:13:05.754] [INFO ] Terminal updated: 61250415798001 [2026-08-21 13:13:08.478] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1138.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-08-21 13:13:09.056] [ERROR] MyXQL.Connection (#PID<0.1062.0> (:proc_lib)) disconnected: ** (DBConnection.ConnectionError) client #PID<0.1138.0> (:proc_lib) timed out because it queued and checked out the connection for longer than 15000ms #PID<0.1138.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:848: DBConnection.execute/4 (ecto_sql 3.13.4) lib/ecto/adapters/myxql/connection.ex:41: Ecto.Adapters.MyXQL.Connection.execute/4 (ecto_sql 3.13.4) lib/ecto/adapters/sql.ex:1055: 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/sunny/tmsapp/tmsuat_apps/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-08-21 13:13:10.171] [DEBUG] QUERY OK source="tms_terminals" db=3745.8ms queue=671.7ms idle=0.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:13:05], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:13:10.175] [DEBUG] QUERY OK source="tms_terminals" db=3.5ms queue=0.2ms idle=0.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:13:10.547] [DEBUG] QUERY OK source="tms_terminals" db=366.5ms queue=4.1ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:13:10], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:13:10.737] [DEBUG] QUERY OK db=188.9ms queue=0.9ms idle=371.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2026-08-21T17:12:53Z", ~N[2026-08-21 13:13:10], ~N[2026-08-21 13:13:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:13:10.737] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78183, oid: "org-id-placeholder", upload_time: "2026-08-21T17:12:53Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:10], updated_at: ~N[2026-08-21 13:13:10]} [2026-08-21 13:13:10.738] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "", "timestamp" => "2026-08-21T17:12:53Z", "value" => 38} [2026-08-21 13:13:10.924] [DEBUG] QUERY OK db=124.1ms queue=59.3ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T17:12:53Z", "38", "battery", 78183, ~N[2026-08-21 13:13:10], ~N[2026-08-21 13:13:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:10.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795861, itemkey: "battery", value: "38", timestamp: "2026-08-21T17:12:53Z", message: nil, status_log_id: 78183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:10], updated_at: ~N[2026-08-21 13:13:10]}} [2026-08-21 13:13:10.924] [INFO ] Saving status item: %{"itemkey" => "memory", "message" => "Normal", "timestamp" => "2026-08-21T17:12:53Z", "value" => 50} [2026-08-21 13:13:11.169] [DEBUG] QUERY OK db=145.8ms queue=93.3ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Normal", "2026-08-21T17:12:53Z", "50", "memory", 78183, ~N[2026-08-21 13:13:10], ~N[2026-08-21 13:13:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:11.170] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795862, itemkey: "memory", value: "50", timestamp: "2026-08-21T17:12:53Z", message: "Normal", status_log_id: 78183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:10], updated_at: ~N[2026-08-21 13:13:10]}} [2026-08-21 13:13:11.170] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "", "timestamp" => "2026-08-21T17:12:53Z", "value" => 50} [2026-08-21 13:13:11.477] [DEBUG] QUERY OK db=40.4ms queue=260.5ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T17:12:53Z", "50", "cpu", 78183, ~N[2026-08-21 13:13:11], ~N[2026-08-21 13:13:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:11.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795863, itemkey: "cpu", value: "50", timestamp: "2026-08-21T17:12:53Z", message: nil, status_log_id: 78183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:11], updated_at: ~N[2026-08-21 13:13:11]}} [2026-08-21 13:13:11.479] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "", "timestamp" => "2026-08-21T17:12:53Z", "value" => "online"} [2026-08-21 13:13:11.592] [DEBUG] QUERY OK db=77.2ms queue=35.8ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T17:12:53Z", "online", "network", 78183, ~N[2026-08-21 13:13:11], ~N[2026-08-21 13:13:11]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:11.592] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795864, itemkey: "network", value: "online", timestamp: "2026-08-21T17:12:53Z", message: nil, status_log_id: 78183, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:11], updated_at: ~N[2026-08-21 13:13:11]}} [2026-08-21 13:13:11.592] [INFO ] Setting terminal 61250415798001 status to 'online' from network itemkey [2026-08-21 13:13:14.709] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:13:14.709] [INFO ] Incoming JSON payload: {"oid":"460b30fc-2625-4995-bc6a-d717ec40ec6d","sn":"98251226730001","uploadTime":"2026-08-21T13:13:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"ram_free_mb","value":"883","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:13:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:13:14.710] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "460b30fc-2625-4995-bc6a-d717ec40ec6d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:13:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:13:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:13:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:13:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:13:14Z", "value" => "883"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:13:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:13:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:13:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:13:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:13:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:13:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:13:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:13:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:13:14Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:13:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:13:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:13:14Z", "vendor" => "morefun"} [2026-08-21 13:13:14.710] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:13:14.710] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:13:14.710] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:13:14.775] [DEBUG] QUERY OK source="parameter_templates" db=59.2ms queue=4.7ms idle=331.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-08-21 13:13:14.781] [DEBUG] QUERY OK source="parameter_templates" db=5.4ms idle=357.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-08-21 13:13:14.781] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:13:14.834] [DEBUG] QUERY OK source="tms_terminals" db=52.7ms idle=6.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:13:14.859] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:13:15.029] [DEBUG] QUERY OK source="tms_terminals" db=145.4ms queue=0.1ms idle=102.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:13:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:13:15.029] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:13:15.048] [DEBUG] QUERY OK source="tms_terminals" db=18.2ms idle=195.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-08-21 13:13:15.139] [DEBUG] QUERY OK source="tms_terminals" db=90.4ms idle=19.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:13:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:13:15.539] [DEBUG] QUERY OK db=57.5ms queue=342.7ms idle=0.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "460b30fc-2625-4995-bc6a-d717ec40ec6d", "2026-08-21T13:13:14Z", ~N[2026-08-21 13:13:15], ~N[2026-08-21 13:13:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:13:15.543] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78184, oid: "460b30fc-2625-4995-bc6a-d717ec40ec6d", upload_time: "2026-08-21T13:13:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:15], updated_at: ~N[2026-08-21 13:13:15]} [2026-08-21 13:13:15.543] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:13:14Z", "value" => "morefun"} [2026-08-21 13:13:15.628] [DEBUG] QUERY OK db=84.5ms idle=53.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "morefun", "vendor", 78184, ~N[2026-08-21 13:13:15], ~N[2026-08-21 13:13:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:15.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795865, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:15], updated_at: ~N[2026-08-21 13:13:15]}} [2026-08-21 13:13:15.631] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:13:14Z", "value" => "kiosk_launcher"} [2026-08-21 13:13:15.682] [DEBUG] QUERY OK db=43.6ms idle=98.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "kiosk_launcher", "model", 78184, ~N[2026-08-21 13:13:15], ~N[2026-08-21 13:13:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:15.685] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795866, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:15], updated_at: ~N[2026-08-21 13:13:15]}} [2026-08-21 13:13:15.685] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:13:14Z", "value" => "1.0"} [2026-08-21 13:13:15.756] [DEBUG] QUERY OK db=59.5ms idle=67.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "1.0", "app_version", 78184, ~N[2026-08-21 13:13:15], ~N[2026-08-21 13:13:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:15.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795867, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:15], updated_at: ~N[2026-08-21 13:13:15]}} [2026-08-21 13:13:15.756] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:13:14Z", "value" => "13"} [2026-08-21 13:13:15.820] [DEBUG] QUERY OK db=54.2ms idle=83.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "13", "android_version", 78184, ~N[2026-08-21 13:13:15], ~N[2026-08-21 13:13:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:15.823] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795868, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:15], updated_at: ~N[2026-08-21 13:13:15]}} [2026-08-21 13:13:15.823] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:13:14Z", "value" => "883"} [2026-08-21 13:13:15.891] [DEBUG] QUERY OK db=66.9ms idle=68.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "883", "ram_free_mb", 78184, ~N[2026-08-21 13:13:15], ~N[2026-08-21 13:13:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:15.891] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795869, itemkey: "ram_free_mb", value: "883", timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:15], updated_at: ~N[2026-08-21 13:13:15]}} [2026-08-21 13:13:15.891] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:13:14Z", "value" => "WIFI"} [2026-08-21 13:13:15.949] [DEBUG] QUERY OK db=57.8ms idle=71.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "WIFI", "network_type", 78184, ~N[2026-08-21 13:13:15], ~N[2026-08-21 13:13:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:15.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795870, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:15], updated_at: ~N[2026-08-21 13:13:15]}} [2026-08-21 13:13:15.950] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:13:14Z", "value" => "true"} [2026-08-21 13:13:15.992] [DEBUG] QUERY OK db=41.9ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "true", "kiosk_active", 78184, ~N[2026-08-21 13:13:15], ~N[2026-08-21 13:13:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:15.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795871, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:15], updated_at: ~N[2026-08-21 13:13:15]}} [2026-08-21 13:13:15.992] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:13:14Z", "value" => ""} [2026-08-21 13:13:16.053] [DEBUG] QUERY OK db=60.4ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:13:14Z", "sim_operator", 78184, ~N[2026-08-21 13:13:15], ~N[2026-08-21 13:13:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:16.053] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795872, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:15], updated_at: ~N[2026-08-21 13:13:15]}} [2026-08-21 13:13:16.054] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:13:14Z", "value" => "UNKNOWN"} [2026-08-21 13:13:16.138] [DEBUG] QUERY OK db=83.4ms idle=62.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "UNKNOWN", "sim_number", 78184, ~N[2026-08-21 13:13:16], ~N[2026-08-21 13:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:16.138] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795873, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:16], updated_at: ~N[2026-08-21 13:13:16]}} [2026-08-21 13:13:16.138] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:13:14Z", "value" => "UNKNOWN"} [2026-08-21 13:13:16.464] [DEBUG] QUERY OK db=52.9ms queue=272.1ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "UNKNOWN", "sim_iccid", 78184, ~N[2026-08-21 13:13:16], ~N[2026-08-21 13:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:16.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795874, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:16], updated_at: ~N[2026-08-21 13:13:16]}} [2026-08-21 13:13:16.468] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:13:14Z", "value" => "UNKNOWN"} [2026-08-21 13:13:16.520] [DEBUG] QUERY OK db=51.4ms idle=43.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "UNKNOWN", "sim_imsi", 78184, ~N[2026-08-21 13:13:16], ~N[2026-08-21 13:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:21.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795875, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:16], updated_at: ~N[2026-08-21 13:13:16]}} [2026-08-21 13:13:26.481] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:13:14Z", "value" => "UNKNOWN"} [2026-08-21 13:13:26.519] [DEBUG] QUERY OK db=37.1ms idle=130.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "UNKNOWN", "sim_iccid2", 78184, ~N[2026-08-21 13:13:26], ~N[2026-08-21 13:13:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:26.519] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795876, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:26], updated_at: ~N[2026-08-21 13:13:26]}} [2026-08-21 13:13:26.519] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:13:14Z", "value" => "UNKNOWN"} [2026-08-21 13:13:26.543] [DEBUG] QUERY OK db=23.4ms idle=131.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "UNKNOWN", "sim_imsi2", 78184, ~N[2026-08-21 13:13:26], ~N[2026-08-21 13:13:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:26.544] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795877, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:26], updated_at: ~N[2026-08-21 13:13:26]}} [2026-08-21 13:13:26.544] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:13:14Z", "value" => "37"} [2026-08-21 13:13:26.608] [DEBUG] QUERY OK db=63.5ms idle=24.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "37", "data_usage_mb", 78184, ~N[2026-08-21 13:13:26], ~N[2026-08-21 13:13:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:26.608] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795878, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:26], updated_at: ~N[2026-08-21 13:13:26]}} [2026-08-21 13:13:26.608] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:13:14Z", "value" => "0"} [2026-08-21 13:13:26.649] [DEBUG] QUERY OK db=40.3ms idle=65.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "0", "mobile_data_mb", 78184, ~N[2026-08-21 13:13:26], ~N[2026-08-21 13:13:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:26.649] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795879, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:26], updated_at: ~N[2026-08-21 13:13:26]}} [2026-08-21 13:13:26.652] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:13:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:13:26.707] [DEBUG] QUERY OK db=53.7ms idle=44.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78184, ~N[2026-08-21 13:13:26], ~N[2026-08-21 13:13:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:26.707] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795880, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:13:14Z", message: nil, status_log_id: 78184, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:26], updated_at: ~N[2026-08-21 13:13:26]}} [2026-08-21 13:13:28.022] [INFO ] Received status update for terminal 98250623730001 [2026-08-21 13:13:28.022] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T04:22:53Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T04:22:53Z","value":"51"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T04:22:53Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T04:22:53Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T04:22:53Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T04:22:53Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T04:22:53Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T04:22:53Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98250623730001","uploadTime":"2026-08-21T04:22:53Z","vendor":"MoreFun"} [2026-08-21 13:13:28.025] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T04:22:53Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T04:22:53Z", "value" => "51"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T04:22:53Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T04:22:53Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T04:22:53Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T04:22:53Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T04:22:53Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T04:22:53Z", "value" => "3.8.7.3"}], "sn" => "98250623730001", "uploadTime" => "2026-08-21T04:22:53Z", "vendor" => "MoreFun"} [2026-08-21 13:13:28.026] [INFO ] Extracted versions for 98250623730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 13:13:28.026] [INFO ] Detected missing versions for 98250623730001, triggering auto-push [2026-08-21 13:13:28.026] [INFO ] AutoPushService: Triggering auto-push for 98250623730001 (MoreFun MF919) - missing version [2026-08-21 13:13:28.029] [DEBUG] QUERY OK source="parameter_templates" db=2.3ms idle=676.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-08-21 13:13:28.143] [DEBUG] QUERY OK source="tms_terminals" db=110.8ms queue=1.2ms idle=647.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-08-21 13:13:28.369] [DEBUG] QUERY OK source="parameter_template_values" db=1.0ms queue=222.9ms idle=0.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-08-21 13:13:28.377] [DEBUG] QUERY OK source="parameter_definitions" db=2.7ms queue=0.5ms idle=4.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-08-21 13:13:28.420] [DEBUG] QUERY OK source="pos_terminal" db=42.3ms idle=0.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98250623730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 13:13:28.421] [DEBUG] QUERY OK source="pos_merchant" db=0.6ms queue=0.1ms idle=39.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [10] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 13:13:28.423] [DEBUG] QUERY OK db=0.9ms queue=1.2ms idle=1774.9ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["123451234512345"] [2026-08-21 13:13:28.423] [INFO ] ParamsZipBuilder: Merchant info for merchantid=123451234512345 - business_name=Frog8 Cafe, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 13:13:28.428] [DEBUG] QUERY OK source="pos_terminal_data" db=4.5ms idle=3.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 ["81748891"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 13:13:28.428] [INFO ] ParamsZipBuilder: no pos_terminal_data for terminalid=81748891, using defaults [2026-08-21 13:13:28.430] [DEBUG] QUERY OK source="address" db=2.1ms idle=7.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` = ?) [238] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 13:13:28.431] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98250623730001, pos_merchant.merchantid="123451234512345" [2026-08-21 13:13:28.436] [INFO ] ParamsZipBuilder: params.zip stored for 98250623730001 at priv/ota/98250623730001/params.zip [2026-08-21 13:13:28.487] [DEBUG] QUERY OK db=50.0ms queue=0.1ms idle=8.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d4aa07a1010daab3384a06488dbfc0c415111e057452b39f8710f0e7db156cd7", 14372, 932, ~U[2026-08-21 13:13:28Z], "priv/ota/98250623730001/params.zip", 19, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 13:13:28], ~N[2026-08-21 13:13:28]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 13:13:28.488] [INFO ] AutoPushService: Created push log 49189 for MF919 params.zip [2026-08-21 13:13:28.488] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/params.zip", "requestId" => 14372, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 13:13:28.488] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 13:13:28.488] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98250623730001 [2026-08-21 13:13:28.492] [DEBUG] QUERY OK source="config_file_versions" db=3.7ms idle=57.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-08-21 13:13:28.501] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98250623730001 at priv/ota/98250623730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-08-21 13:13:28.556] [DEBUG] QUERY OK db=43.9ms queue=1.6ms idle=23.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "10cfa399d9e4606bae3b42c0f99bdbd6c81c12ef3a0f482508f4b510f9fbcfc8", 9090, 17947, ~U[2026-08-21 13:13:28Z], "priv/ota/98250623730001/l3config.zip", 19, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 13:13:28], ~N[2026-08-21 13:13:28]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 13:13:28.557] [INFO ] AutoPushService: Created push log 49190 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 13:13:28.557] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98250623730001/l3config.zip", "requestId" => 9090, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 13:13:28.557] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98250623730001 on topic: /ota/pFppbioOCKlo5c8E/98250623730001/update [2026-08-21 13:13:28.557] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98250623730001 [2026-08-21 13:13:28.566] [DEBUG] QUERY OK source="config_file_versions" db=4.5ms idle=69.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-08-21 13:13:28.567] [INFO ] KeysConfigService: Generating keys.json for 98250623730001 (MF919) [2026-08-21 13:13:28.571] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 13:13:28.571] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98250623730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98250623730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-08-21 13:13:28.579] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 13:13:28.579] [ERROR] KeysConfigService: Failed to generate keys for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:13:28.579] [ERROR] AutoPushService: Failed to generate keys.json for 98250623730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:13:28.584] [DEBUG] QUERY OK source="config_file_versions" db=4.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-08-21 13:13:28.584] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:13:28.584] [INFO ] AutoPushService: Auto-push completed for 98250623730001 [2026-08-21 13:13:28.585] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms 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"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:13:28.586] [INFO ] Terminal updated: 98250623730001 [2026-08-21 13:13:28.628] [DEBUG] QUERY OK source="tms_terminals" db=40.7ms queue=1.5ms idle=1.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:13:28], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:13:28.631] [DEBUG] QUERY OK source="parameter_templates" db=2.9ms idle=43.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 13:13:28.634] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms queue=1.1ms idle=3.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:13:28.636] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms idle=3.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:13:28.636] [INFO ] VersionComplianceChecker: 98250623730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 13:13:28.910] [DEBUG] QUERY OK source="parameter_push_logs" db=273.8ms idle=2.4ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [19, "application", ~N[2026-08-21 12:43:28]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 13:13:28.911] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98250623730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 13:13:28.912] [INFO ] AutoPushService: Targeted application push for 98250623730001 (MoreFun MF919) [2026-08-21 13:13:28.918] [DEBUG] QUERY OK source="tms_terminals" db=5.9ms idle=276.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-08-21 13:13:28.926] [DEBUG] QUERY OK source="config_file_versions" db=3.1ms idle=12.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-08-21 13:13:28.926] [ERROR] AutoPushService: Failed to resolve application artifact for 98250623730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:13:28.935] [DEBUG] QUERY OK source="tms_terminals" db=8.3ms idle=8.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98250623730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:13:29.004] [DEBUG] QUERY OK source="tms_terminals" db=68.5ms idle=9.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:13:28], 19] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:13:29.044] [DEBUG] QUERY OK db=39.1ms idle=69.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [19, "organization_id", "2026-08-21T04:22:53Z", ~N[2026-08-21 13:13:29], ~N[2026-08-21 13:13:29]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:13:29.044] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78185, oid: "organization_id", upload_time: "2026-08-21T04:22:53Z", terminal_id: 19, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:29], updated_at: ~N[2026-08-21 13:13:29]} [2026-08-21 13:13:29.044] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T04:22:53Z", "value" => "online"} [2026-08-21 13:13:29.141] [DEBUG] QUERY OK db=93.7ms queue=0.7ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T04:22:53Z", "online", "status", 78185, ~N[2026-08-21 13:13:29], ~N[2026-08-21 13:13:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:29.141] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795881, itemkey: "status", value: "online", timestamp: "2026-08-21T04:22:53Z", message: "Terminal status update", status_log_id: 78185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:29], updated_at: ~N[2026-08-21 13:13:29]}} [2026-08-21 13:13:29.141] [INFO ] Setting terminal 98250623730001 status to 'online' from status itemkey [2026-08-21 13:13:29.142] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T04:22:53Z", "value" => "51"} [2026-08-21 13:13:29.436] [DEBUG] QUERY OK db=30.4ms queue=263.1ms idle=0.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T04:22:53Z", "51", "battery", 78185, ~N[2026-08-21 13:13:29], ~N[2026-08-21 13:13:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:29.436] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795882, itemkey: "battery", value: "51", timestamp: "2026-08-21T04:22:53Z", message: "Battery level", status_log_id: 78185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:29], updated_at: ~N[2026-08-21 13:13:29]}} [2026-08-21 13:13:29.436] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T04:22:53Z", "value" => "online"} [2026-08-21 13:13:29.467] [DEBUG] QUERY OK db=29.4ms idle=29.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T04:22:53Z", "online", "network", 78185, ~N[2026-08-21 13:13:29], ~N[2026-08-21 13:13:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:29.467] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795883, itemkey: "network", value: "online", timestamp: "2026-08-21T04:22:53Z", message: "Network connectivity", status_log_id: 78185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:29], updated_at: ~N[2026-08-21 13:13:29]}} [2026-08-21 13:13:29.467] [INFO ] Setting terminal 98250623730001 status to 'online' from network itemkey [2026-08-21 13:13:29.468] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T04:22:53Z", "value" => "0"} [2026-08-21 13:13:29.496] [DEBUG] QUERY OK db=27.7ms idle=32.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T04:22:53Z", "0", "cpu", 78185, ~N[2026-08-21 13:13:29], ~N[2026-08-21 13:13:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:29.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795884, itemkey: "cpu", value: "0", timestamp: "2026-08-21T04:22:53Z", message: "CPU usage percentage", status_log_id: 78185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:29], updated_at: ~N[2026-08-21 13:13:29]}} [2026-08-21 13:13:29.496] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T04:22:53Z", "value" => "1.0.0"} [2026-08-21 13:13:29.559] [DEBUG] QUERY OK db=62.3ms idle=29.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T04:22:53Z", "1.0.0", "parameter_config", 78185, ~N[2026-08-21 13:13:29], ~N[2026-08-21 13:13:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:29.559] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795885, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T04:22:53Z", message: "Current parameters version", status_log_id: 78185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:29], updated_at: ~N[2026-08-21 13:13:29]}} [2026-08-21 13:13:29.559] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T04:22:53Z", "value" => "1.0.1"} [2026-08-21 13:13:29.591] [DEBUG] QUERY OK db=31.0ms idle=63.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T04:22:53Z", "1.0.1", "emv_config", 78185, ~N[2026-08-21 13:13:29], ~N[2026-08-21 13:13:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:29.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795886, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T04:22:53Z", message: "Current EMV config version", status_log_id: 78185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:29], updated_at: ~N[2026-08-21 13:13:29]}} [2026-08-21 13:13:29.594] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T04:22:53Z", "value" => ""} [2026-08-21 13:13:29.659] [DEBUG] QUERY OK db=59.6ms queue=0.6ms idle=40.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T04:22:53Z", "keys_config", 78185, ~N[2026-08-21 13:13:29], ~N[2026-08-21 13:13:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:29.659] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795887, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T04:22:53Z", message: "Current keys config version", status_log_id: 78185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:29], updated_at: ~N[2026-08-21 13:13:29]}} [2026-08-21 13:13:29.659] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T04:22:53Z", "value" => "3.8.7.3"} [2026-08-21 13:13:29.706] [DEBUG] QUERY OK db=45.9ms idle=69.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T04:22:53Z", "3.8.7.3", "application", 78185, ~N[2026-08-21 13:13:29], ~N[2026-08-21 13:13:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:29.706] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795888, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T04:22:53Z", message: "Current application version", status_log_id: 78185, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:29], updated_at: ~N[2026-08-21 13:13:29]}} [2026-08-21 13:13:29.706] [WARN ] Unexpected async result [2026-08-21 13:13:29.706] [WARN ] Unexpected async result [2026-08-21 13:13:44.792] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:13:49.797] [INFO ] Incoming JSON payload: {"oid":"ba80e325-398a-4b57-bff0-c7606733b037","sn":"98251226730001","uploadTime":"2026-08-21T13:13:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"ram_free_mb","value":"883","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:13:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:13:49.798] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ba80e325-398a-4b57-bff0-c7606733b037", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:13:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:13:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:13:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:13:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:13:44Z", "value" => "883"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:13:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:13:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:13:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:13:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:13:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:13:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:13:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:13:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:13:44Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:13:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:13:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:13:44Z", "vendor" => "morefun"} [2026-08-21 13:13:49.802] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:13:49.802] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:13:49.802] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:13:49.807] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=644.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-08-21 13:13:49.808] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.4ms idle=154.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-08-21 13:13:49.808] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:13:49.810] [DEBUG] QUERY OK source="tms_terminals" db=1.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` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:13:49.810] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:13:49.884] [DEBUG] QUERY OK source="tms_terminals" db=73.4ms idle=2.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:13:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:13:49.884] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:13:49.886] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=74.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 13:13:49.921] [DEBUG] QUERY OK source="tms_terminals" db=33.9ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:13:49], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:13:49.955] [DEBUG] QUERY OK db=33.7ms idle=34.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ba80e325-398a-4b57-bff0-c7606733b037", "2026-08-21T13:13:44Z", ~N[2026-08-21 13:13:49], ~N[2026-08-21 13:13:49]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:13:49.956] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78186, oid: "ba80e325-398a-4b57-bff0-c7606733b037", upload_time: "2026-08-21T13:13:44Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:49], updated_at: ~N[2026-08-21 13:13:49]} [2026-08-21 13:13:49.956] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:13:44Z", "value" => "morefun"} [2026-08-21 13:13:50.017] [DEBUG] QUERY OK db=58.0ms idle=38.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "morefun", "vendor", 78186, ~N[2026-08-21 13:13:49], ~N[2026-08-21 13:13:49]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.017] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795889, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:49], updated_at: ~N[2026-08-21 13:13:49]}} [2026-08-21 13:13:50.018] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:13:44Z", "value" => "kiosk_launcher"} [2026-08-21 13:13:50.117] [DEBUG] QUERY OK db=57.1ms queue=41.7ms idle=63.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "kiosk_launcher", "model", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.118] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795890, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:13:50.118] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:13:44Z", "value" => "1.0"} [2026-08-21 13:13:50.203] [DEBUG] QUERY OK db=84.4ms idle=101.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "1.0", "app_version", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.203] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795891, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:13:50.203] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:13:44Z", "value" => "13"} [2026-08-21 13:13:50.250] [DEBUG] QUERY OK db=46.2ms idle=36.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "13", "android_version", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.250] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795892, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:13:50.250] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:13:44Z", "value" => "883"} [2026-08-21 13:13:50.306] [DEBUG] QUERY OK db=53.9ms idle=48.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "883", "ram_free_mb", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.306] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795893, itemkey: "ram_free_mb", value: "883", timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:13:50.306] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:13:44Z", "value" => "WIFI"} [2026-08-21 13:13:50.356] [DEBUG] QUERY OK db=49.0ms idle=56.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "WIFI", "network_type", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795894, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:13:50.357] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:13:44Z", "value" => "true"} [2026-08-21 13:13:50.393] [DEBUG] QUERY OK db=36.5ms idle=51.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "true", "kiosk_active", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.394] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795895, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:13:50.394] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:13:44Z", "value" => ""} [2026-08-21 13:13:50.466] [DEBUG] QUERY OK db=72.0ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:13:44Z", "sim_operator", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795896, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:13:50.467] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:13:44Z", "value" => "UNKNOWN"} [2026-08-21 13:13:50.500] [DEBUG] QUERY OK db=32.6ms idle=73.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "UNKNOWN", "sim_number", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.501] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795897, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:13:50.502] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:13:44Z", "value" => "UNKNOWN"} [2026-08-21 13:13:50.552] [DEBUG] QUERY OK db=49.4ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "UNKNOWN", "sim_iccid", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795898, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:13:50.552] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:13:44Z", "value" => "UNKNOWN"} [2026-08-21 13:13:50.598] [DEBUG] QUERY OK db=45.5ms idle=53.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "UNKNOWN", "sim_imsi", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.598] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795899, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:13:50.598] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:13:44Z", "value" => "UNKNOWN"} [2026-08-21 13:13:50.633] [DEBUG] QUERY OK db=33.9ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "UNKNOWN", "sim_iccid2", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795900, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:13:50.633] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:13:44Z", "value" => "UNKNOWN"} [2026-08-21 13:13:50.665] [DEBUG] QUERY OK db=31.5ms idle=35.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "UNKNOWN", "sim_imsi2", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.666] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795901, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:13:50.666] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:13:44Z", "value" => "37"} [2026-08-21 13:13:50.703] [DEBUG] QUERY OK db=37.3ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "37", "data_usage_mb", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.704] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795902, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:13:50.704] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:13:44Z", "value" => "0"} [2026-08-21 13:13:50.755] [DEBUG] QUERY OK db=50.9ms idle=38.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "0", "mobile_data_mb", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795903, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:13:50.758] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:13:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:13:50.808] [DEBUG] QUERY OK db=49.5ms idle=54.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:13:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78186, ~N[2026-08-21 13:13:50], ~N[2026-08-21 13:13:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:13:50.809] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795904, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:13:44Z", message: nil, status_log_id: 78186, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:13:50], updated_at: ~N[2026-08-21 13:13:50]}} [2026-08-21 13:14:14.900] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:14:14.900] [INFO ] Incoming JSON payload: {"oid":"a816b419-0272-4816-a935-d1d014467064","sn":"98251226730001","uploadTime":"2026-08-21T13:14:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"ram_free_mb","value":"882","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:14:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:14:14.902] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "a816b419-0272-4816-a935-d1d014467064", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:14:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:14:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:14:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:14:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:14:14Z", "value" => "882"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:14:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:14:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:14:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:14:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:14:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:14:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:14:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:14:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:14:14Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:14:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:14:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:14:14Z", "vendor" => "morefun"} [2026-08-21 13:14:14.902] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:14:14.902] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:14:14.902] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:14:14.904] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=0.1ms idle=1248.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-08-21 13:14:14.904] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=613.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-08-21 13:14:14.904] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:14:14.905] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=0.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:14:14.905] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:14:14.947] [DEBUG] QUERY OK source="tms_terminals" db=41.6ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:14:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:14:14.948] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:14:14.949] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:14:14.996] [DEBUG] QUERY OK source="tms_terminals" db=46.8ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:14:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:14:15.034] [DEBUG] QUERY OK db=36.9ms idle=47.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "a816b419-0272-4816-a935-d1d014467064", "2026-08-21T13:14:14Z", ~N[2026-08-21 13:14:14], ~N[2026-08-21 13:14:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:14:15.034] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78187, oid: "a816b419-0272-4816-a935-d1d014467064", upload_time: "2026-08-21T13:14:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:14], updated_at: ~N[2026-08-21 13:14:14]} [2026-08-21 13:14:15.034] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:14:14Z", "value" => "morefun"} [2026-08-21 13:14:15.071] [DEBUG] QUERY OK db=35.0ms queue=1.5ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "morefun", "vendor", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795905, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.072] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:14:14Z", "value" => "kiosk_launcher"} [2026-08-21 13:14:15.102] [DEBUG] QUERY OK db=30.5ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "kiosk_launcher", "model", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.103] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795906, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.103] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:14:14Z", "value" => "1.0"} [2026-08-21 13:14:15.141] [DEBUG] QUERY OK db=37.4ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "1.0", "app_version", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.142] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795907, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.142] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:14:14Z", "value" => "13"} [2026-08-21 13:14:15.185] [DEBUG] QUERY OK db=41.4ms queue=0.3ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "13", "android_version", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.185] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795908, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.186] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:14:14Z", "value" => "882"} [2026-08-21 13:14:15.223] [DEBUG] QUERY OK db=36.6ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "882", "ram_free_mb", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795909, itemkey: "ram_free_mb", value: "882", timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.223] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:14:14Z", "value" => "WIFI"} [2026-08-21 13:14:15.269] [DEBUG] QUERY OK db=44.6ms idle=39.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "WIFI", "network_type", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.269] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795910, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.269] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:14:14Z", "value" => "true"} [2026-08-21 13:14:15.319] [DEBUG] QUERY OK db=48.8ms idle=46.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "true", "kiosk_active", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.319] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795911, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.320] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:14:14Z", "value" => ""} [2026-08-21 13:14:15.371] [DEBUG] QUERY OK db=50.6ms queue=0.2ms idle=24.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:14:14Z", "sim_operator", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795912, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.373] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:14:14Z", "value" => "UNKNOWN"} [2026-08-21 13:14:15.410] [DEBUG] QUERY OK db=36.9ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "UNKNOWN", "sim_number", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.411] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795913, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.412] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:14:14Z", "value" => "UNKNOWN"} [2026-08-21 13:14:15.451] [DEBUG] QUERY OK db=38.7ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "UNKNOWN", "sim_iccid", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.452] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795914, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.452] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:14:14Z", "value" => "UNKNOWN"} [2026-08-21 13:14:15.485] [DEBUG] QUERY OK db=33.0ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "UNKNOWN", "sim_imsi", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795915, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.486] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:14:14Z", "value" => "UNKNOWN"} [2026-08-21 13:14:15.520] [DEBUG] QUERY OK db=34.0ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "UNKNOWN", "sim_iccid2", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.520] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795916, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.520] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:14:14Z", "value" => "UNKNOWN"} [2026-08-21 13:14:15.554] [DEBUG] QUERY OK db=33.0ms idle=35.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "UNKNOWN", "sim_imsi2", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.554] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795917, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.554] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:14:14Z", "value" => "37"} [2026-08-21 13:14:15.596] [DEBUG] QUERY OK db=41.2ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "37", "data_usage_mb", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.596] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795918, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.596] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:14:14Z", "value" => "0"} [2026-08-21 13:14:15.625] [DEBUG] QUERY OK db=27.9ms idle=42.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "0", "mobile_data_mb", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795919, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:15.627] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:14:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:14:15.689] [DEBUG] QUERY OK db=61.8ms idle=31.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78187, ~N[2026-08-21 13:14:15], ~N[2026-08-21 13:14:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:15.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795920, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:14:14Z", message: nil, status_log_id: 78187, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:15], updated_at: ~N[2026-08-21 13:14:15]}} [2026-08-21 13:14:45.240] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:14:45.240] [INFO ] Incoming JSON payload: {"oid":"5e30dcce-282b-4384-aeea-d8978a37ad32","sn":"98251226730001","uploadTime":"2026-08-21T13:14:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"ram_free_mb","value":"883","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:14:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:14:45.242] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5e30dcce-282b-4384-aeea-d8978a37ad32", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:14:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:14:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:14:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:14:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:14:44Z", "value" => "883"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:14:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:14:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:14:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:14:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:14:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:14:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:14:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:14:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:14:44Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:14:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:14:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:14:44Z", "vendor" => "morefun"} [2026-08-21 13:14:45.242] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:14:45.242] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:14:45.242] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:14:45.243] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1584.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-08-21 13:14:45.243] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=832.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-08-21 13:14:45.244] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:14:45.244] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:14:45.245] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:14:45.305] [DEBUG] QUERY OK source="tms_terminals" db=60.3ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:14:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:14:45.305] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:14:45.306] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms 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 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:14:45.370] [DEBUG] QUERY OK source="tms_terminals" db=63.1ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:14:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:14:45.478] [DEBUG] QUERY OK db=107.0ms queue=0.1ms idle=63.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "5e30dcce-282b-4384-aeea-d8978a37ad32", "2026-08-21T13:14:44Z", ~N[2026-08-21 13:14:45], ~N[2026-08-21 13:14:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:14:45.479] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78188, oid: "5e30dcce-282b-4384-aeea-d8978a37ad32", upload_time: "2026-08-21T13:14:44Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:45], updated_at: ~N[2026-08-21 13:14:45]} [2026-08-21 13:14:45.479] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:14:44Z", "value" => "morefun"} [2026-08-21 13:14:45.511] [DEBUG] QUERY OK db=31.8ms idle=65.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "morefun", "vendor", 78188, ~N[2026-08-21 13:14:45], ~N[2026-08-21 13:14:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:45.512] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795921, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:45], updated_at: ~N[2026-08-21 13:14:45]}} [2026-08-21 13:14:45.512] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:14:44Z", "value" => "kiosk_launcher"} [2026-08-21 13:14:45.569] [DEBUG] QUERY OK db=57.2ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "kiosk_launcher", "model", 78188, ~N[2026-08-21 13:14:45], ~N[2026-08-21 13:14:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:45.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795923, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:45], updated_at: ~N[2026-08-21 13:14:45]}} [2026-08-21 13:14:45.570] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:14:44Z", "value" => "1.0"} [2026-08-21 13:14:45.629] [DEBUG] QUERY OK db=59.5ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "1.0", "app_version", 78188, ~N[2026-08-21 13:14:45], ~N[2026-08-21 13:14:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:45.630] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795925, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:45], updated_at: ~N[2026-08-21 13:14:45]}} [2026-08-21 13:14:45.630] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:14:44Z", "value" => "13"} [2026-08-21 13:14:45.692] [DEBUG] QUERY OK db=61.9ms idle=60.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "13", "android_version", 78188, ~N[2026-08-21 13:14:45], ~N[2026-08-21 13:14:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:45.693] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795927, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:45], updated_at: ~N[2026-08-21 13:14:45]}} [2026-08-21 13:14:45.693] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:14:44Z", "value" => "883"} [2026-08-21 13:14:45.764] [DEBUG] QUERY OK db=70.4ms idle=64.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "883", "ram_free_mb", 78188, ~N[2026-08-21 13:14:45], ~N[2026-08-21 13:14:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:45.765] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795929, itemkey: "ram_free_mb", value: "883", timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:45], updated_at: ~N[2026-08-21 13:14:45]}} [2026-08-21 13:14:45.765] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:14:44Z", "value" => "WIFI"} [2026-08-21 13:14:45.803] [DEBUG] QUERY OK db=37.2ms idle=73.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "WIFI", "network_type", 78188, ~N[2026-08-21 13:14:45], ~N[2026-08-21 13:14:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:45.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795931, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:45], updated_at: ~N[2026-08-21 13:14:45]}} [2026-08-21 13:14:45.803] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:14:44Z", "value" => "true"} [2026-08-21 13:14:45.877] [DEBUG] QUERY OK db=73.4ms idle=39.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "true", "kiosk_active", 78188, ~N[2026-08-21 13:14:45], ~N[2026-08-21 13:14:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:45.877] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795933, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:45], updated_at: ~N[2026-08-21 13:14:45]}} [2026-08-21 13:14:45.878] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:14:44Z", "value" => ""} [2026-08-21 13:14:45.933] [DEBUG] QUERY OK db=55.2ms idle=74.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:14:44Z", "sim_operator", 78188, ~N[2026-08-21 13:14:45], ~N[2026-08-21 13:14:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:45.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795935, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:45], updated_at: ~N[2026-08-21 13:14:45]}} [2026-08-21 13:14:45.934] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:14:44Z", "value" => "UNKNOWN"} [2026-08-21 13:14:45.994] [DEBUG] QUERY OK db=59.5ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "UNKNOWN", "sim_number", 78188, ~N[2026-08-21 13:14:45], ~N[2026-08-21 13:14:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:45.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795937, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:45], updated_at: ~N[2026-08-21 13:14:45]}} [2026-08-21 13:14:45.994] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:14:44Z", "value" => "UNKNOWN"} [2026-08-21 13:14:46.058] [DEBUG] QUERY OK db=63.5ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "UNKNOWN", "sim_iccid", 78188, ~N[2026-08-21 13:14:45], ~N[2026-08-21 13:14:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:46.059] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795939, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:45], updated_at: ~N[2026-08-21 13:14:45]}} [2026-08-21 13:14:46.059] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:14:44Z", "value" => "UNKNOWN"} [2026-08-21 13:14:46.103] [DEBUG] QUERY OK db=41.9ms idle=66.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "UNKNOWN", "sim_imsi", 78188, ~N[2026-08-21 13:14:46], ~N[2026-08-21 13:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:46.104] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795941, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:46], updated_at: ~N[2026-08-21 13:14:46]}} [2026-08-21 13:14:46.104] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:14:44Z", "value" => "UNKNOWN"} [2026-08-21 13:14:46.162] [DEBUG] QUERY OK db=57.1ms idle=46.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "UNKNOWN", "sim_iccid2", 78188, ~N[2026-08-21 13:14:46], ~N[2026-08-21 13:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:46.162] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795943, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:46], updated_at: ~N[2026-08-21 13:14:46]}} [2026-08-21 13:14:46.162] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:14:44Z", "value" => "UNKNOWN"} [2026-08-21 13:14:46.221] [DEBUG] QUERY OK db=57.6ms idle=60.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "UNKNOWN", "sim_imsi2", 78188, ~N[2026-08-21 13:14:46], ~N[2026-08-21 13:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:46.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795945, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:46], updated_at: ~N[2026-08-21 13:14:46]}} [2026-08-21 13:14:46.221] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:14:44Z", "value" => "37"} [2026-08-21 13:14:46.285] [DEBUG] QUERY OK db=63.2ms idle=59.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "37", "data_usage_mb", 78188, ~N[2026-08-21 13:14:46], ~N[2026-08-21 13:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:46.285] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795947, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:46], updated_at: ~N[2026-08-21 13:14:46]}} [2026-08-21 13:14:46.285] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:14:44Z", "value" => "0"} [2026-08-21 13:14:46.358] [DEBUG] QUERY OK db=72.7ms idle=64.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "0", "mobile_data_mb", 78188, ~N[2026-08-21 13:14:46], ~N[2026-08-21 13:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:46.359] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795949, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:46], updated_at: ~N[2026-08-21 13:14:46]}} [2026-08-21 13:14:46.359] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:14:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:14:46.413] [DEBUG] QUERY OK db=53.2ms idle=74.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:14:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78188, ~N[2026-08-21 13:14:46], ~N[2026-08-21 13:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:14:46.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795951, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:14:44Z", message: nil, status_log_id: 78188, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:14:46], updated_at: ~N[2026-08-21 13:14:46]}} [2026-08-21 13:14:49.695] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:14:49.695] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-08-21T13:14:49Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-08-21T13:14:49Z","value":"49"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-08-21T13:14:49Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-08-21T13:14:49Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-08-21T13:14:49Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-08-21T13:14:49Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-08-21T13:14:49Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-08-21T13:14:49Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-08-21T13:14:49Z","vendor":"MoreFun"} [2026-08-21 13:14:49.695] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T13:14:49Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T13:14:49Z", "value" => "49"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T13:14:49Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T13:14:49Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T13:14:49Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T13:14:49Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T13:14:49Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T13:14:49Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:14:49Z", "vendor" => "MoreFun"} [2026-08-21 13:14:49.696] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-08-21 13:14:49.696] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:14:49.696] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-08-21 13:14:49.702] [DEBUG] QUERY OK source="parameter_templates" db=5.5ms idle=337.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-08-21 13:14:49.703] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=277.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 13:14:49.705] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms queue=0.5ms 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-08-21 13:14:49.707] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.8ms idle=2.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-08-21 13:14:49.710] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms queue=0.1ms idle=3.8ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-08-21 13:14:49.750] [DEBUG] QUERY OK source="pos_merchant" db=39.8ms idle=2.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [298] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-08-21 13:14:49.755] [DEBUG] QUERY OK db=1.5ms queue=3.1ms idle=96.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 ["626165170000000"] [2026-08-21 13:14:49.755] [INFO ] ParamsZipBuilder: Merchant info for merchantid=626165170000000 - business_name=ShubhamTest, QR_USE_SSL=1, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-08-21 13:14:49.761] [DEBUG] QUERY OK source="pos_terminal_data" db=3.0ms idle=48.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 ["16517856"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-08-21 13:14:49.768] [DEBUG] QUERY OK source="address" db=1.2ms idle=12.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` = ?) [588] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-08-21 13:14:49.768] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="626165170000000" [2026-08-21 13:14:49.770] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-08-21 13:14:49.848] [DEBUG] QUERY OK db=74.8ms queue=0.7ms idle=9.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d5f3d13180571aded741f510d8e05471d277882f53d2e66ed6fa69138f47dc0b", 10338, 939, ~U[2026-08-21 13:14:49Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-08-21 13:14:49], ~N[2026-08-21 13:14:49]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-08-21 13:14:49.848] [INFO ] AutoPushService: Created push log 49191 for MF919 params.zip [2026-08-21 13:14:49.849] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/params.zip", "requestId" => 10338, "type" => "tms_command", "version" => "1.0.0"} [2026-08-21 13:14:49.849] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 13:14:49.850] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-08-21 13:14:49.852] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=87.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-08-21 13:14:49.857] [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-08-21 13:14:49.940] [DEBUG] QUERY OK db=76.2ms queue=4.1ms idle=12.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "d34a0e45afb26becb472f4bc8977b32e37bab8babfd98efdc09a6579b41a4c4c", 2789, 17947, ~U[2026-08-21 13:14:49Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-08-21 13:14:49], ~N[2026-08-21 13:14:49]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-08-21 13:14:49.940] [INFO ] AutoPushService: Created push log 49193 for MF919 l3config.zip (version: 1.0.1) [2026-08-21 13:14:49.940] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4019/ota/98251226730001/l3config.zip", "requestId" => 2789, "type" => "tms_command", "version" => "1.0.1"} [2026-08-21 13:14:49.941] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-08-21 13:14:49.941] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-08-21 13:14:49.943] [DEBUG] QUERY OK source="config_file_versions" db=2.0ms idle=88.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-08-21 13:14:49.946] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-08-21 13:14:49.951] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=8.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-08-21 13:14:49.951] [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-08-21 13:14:49.972] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-08-21 13:14:49.974] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:14:49.974] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-08-21 13:14:49.975] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms 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 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-08-21 13:14:49.981] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:14:49.981] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-08-21 13:14:49.984] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=30.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-08-21 13:14:50.100] [DEBUG] QUERY OK source="tms_terminals" db=69.7ms queue=44.1ms idle=11.9ms UPDATE `tms_terminals` SET `vendor` = ?, `model` = ?, `updated_at` = ? WHERE `id` = ? ["MoreFun", "MF919", ~N[2026-08-21 13:14:49], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-08-21 13:14:50.102] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:14:50.104] [DEBUG] Processing terminal event: terminal_updated [2026-08-21 13:14:50.104] [INFO ] Processing terminal_updated event for terminal 33 [2026-08-21 13:14:50.104] [INFO ] Changed fields: [:vendor, :model] [2026-08-21 13:14:50.104] [INFO ] Event published: terminal_updated [2026-08-21 13:14:50.114] [DEBUG] QUERY OK source="terminal_group_memberships" db=7.4ms idle=122.7ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-08-21 13:14:50], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-08-21 13:14:50.122] [DEBUG] QUERY OK source="tms_terminals" db=7.3ms idle=14.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-08-21 13:14:50.125] [DEBUG] QUERY OK source="terminal_group_rules" db=1.5ms idle=1.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-08-21 13:14:50.128] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-08-21 13:14:50.198] [DEBUG] QUERY OK source="tms_terminals" db=39.2ms queue=44.1ms idle=0.5ms UPDATE `tms_terminals` SET `status` = ?, `vendor` = ?, `model` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "MoreFun", "MF919", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-08-21 13:14:50], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:14:50.201] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.2ms idle=75.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-08-21 13:14:50.203] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms idle=3.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-08-21 13:14:50.204] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=2.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-08-21 13:14:50.204] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-08-21 13:14:50.284] [DEBUG] QUERY OK source="parameter_push_logs" db=79.7ms 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-08-21 12:44:50]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-08-21 13:14:55.285] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-08-21 13:15:00.286] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-08-21 13:15:05.290] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=800.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 13:15:07.999] [INFO ] Running offline device check... [2026-08-21 13:15:10.291] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=1623.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-08-21 13:15:13.000] [INFO ] Starting offline device check... [2026-08-21 13:15:15.253] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=0.2ms idle=1591.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_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-08-21 13:15:15.255] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-08-21 13:15:15.257] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:15:15.267] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.5ms idle=707.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`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-08-21 13:15:15.280] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.6ms queue=2.8ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.282] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.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 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.283] [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 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.284] [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 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.285] [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-08-21 13:15:15.286] [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-08-21 13:15:15.287] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.288] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.290] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.295] [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 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.296] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.309] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.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 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.314] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.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 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.316] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms 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 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.317] [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-08-21 13:15:15.318] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.336] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.2ms queue=0.3ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.337] [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 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.339] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.340] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.341] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.343] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms 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 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.367] [DEBUG] QUERY OK source="tms_terminals" db=66.6ms queue=42.6ms idle=0.3ms UPDATE `tms_terminals` SET `updated_at` = ? WHERE `id` = ? [~N[2026-08-21 13:15:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:15:15.404] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=60.8ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.406] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.8ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.407] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.415] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.2ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.418] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.425] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms queue=0.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 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.427] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.428] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.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 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.435] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.434] [DEBUG] QUERY OK db=66.3ms queue=0.2ms idle=0.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-08-21T13:14:49Z", ~N[2026-08-21 13:15:15], ~N[2026-08-21 13:15:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:15:15.436] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78191, oid: "organization_id", upload_time: "2026-08-21T13:14:49Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:15], updated_at: ~N[2026-08-21 13:15:15]} [2026-08-21 13:15:15.436] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-08-21T13:14:49Z", "value" => "online"} [2026-08-21 13:15:15.437] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.440] [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 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.441] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms 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 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.442] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.444] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.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 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.445] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.446] [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 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.447] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.4ms idle=0.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 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-08-21 13:15:15.448] [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 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.450] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.452] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.455] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.457] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.458] [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 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.459] [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 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.465] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.466] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.467] [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 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.469] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.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 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:762 [2026-08-21 13:15:15.471] [INFO ] Offline device check completed. Found 47 offline devices, updated 0 statuses. [2026-08-21 13:15:15.471] [INFO ] Offline device check completed successfully [2026-08-21 13:15:15.519] [DEBUG] QUERY OK db=80.9ms idle=2.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-08-21T13:14:49Z", "online", "status", 78191, ~N[2026-08-21 13:15:15], ~N[2026-08-21 13:15:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:15.519] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795961, itemkey: "status", value: "online", timestamp: "2026-08-21T13:14:49Z", message: "Terminal status update", status_log_id: 78191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:15], updated_at: ~N[2026-08-21 13:15:15]}} [2026-08-21 13:15:15.519] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-08-21 13:15:15.520] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-08-21T13:14:49Z", "value" => "49"} [2026-08-21 13:15:15.690] [DEBUG] QUERY OK db=169.7ms idle=48.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-08-21T13:14:49Z", "49", "battery", 78191, ~N[2026-08-21 13:15:15], ~N[2026-08-21 13:15:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:15.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795962, itemkey: "battery", value: "49", timestamp: "2026-08-21T13:14:49Z", message: "Battery level", status_log_id: 78191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:15], updated_at: ~N[2026-08-21 13:15:15]}} [2026-08-21 13:15:15.691] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-08-21T13:14:49Z", "value" => "online"} [2026-08-21 13:15:15.752] [DEBUG] QUERY OK db=61.4ms idle=140.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-08-21T13:14:49Z", "online", "network", 78191, ~N[2026-08-21 13:15:15], ~N[2026-08-21 13:15:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:15.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795963, itemkey: "network", value: "online", timestamp: "2026-08-21T13:14:49Z", message: "Network connectivity", status_log_id: 78191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:15], updated_at: ~N[2026-08-21 13:15:15]}} [2026-08-21 13:15:15.753] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-08-21 13:15:15.753] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-08-21T13:14:49Z", "value" => "0"} [2026-08-21 13:15:15.817] [DEBUG] QUERY OK db=63.2ms queue=0.1ms idle=63.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-08-21T13:14:49Z", "0", "cpu", 78191, ~N[2026-08-21 13:15:15], ~N[2026-08-21 13:15:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:15.817] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795964, itemkey: "cpu", value: "0", timestamp: "2026-08-21T13:14:49Z", message: "CPU usage percentage", status_log_id: 78191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:15], updated_at: ~N[2026-08-21 13:15:15]}} [2026-08-21 13:15:15.817] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-08-21T13:14:49Z", "value" => "1.0.0"} [2026-08-21 13:15:15.882] [DEBUG] QUERY OK db=63.9ms idle=65.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-08-21T13:14:49Z", "1.0.0", "parameter_config", 78191, ~N[2026-08-21 13:15:15], ~N[2026-08-21 13:15:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:15.882] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795966, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-08-21T13:14:49Z", message: "Current parameters version", status_log_id: 78191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:15], updated_at: ~N[2026-08-21 13:15:15]}} [2026-08-21 13:15:15.882] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-08-21T13:14:49Z", "value" => "1.0.1"} [2026-08-21 13:15:15.958] [DEBUG] QUERY OK db=75.1ms idle=65.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-08-21T13:14:49Z", "1.0.1", "emv_config", 78191, ~N[2026-08-21 13:15:15], ~N[2026-08-21 13:15:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:15.958] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795968, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-08-21T13:14:49Z", message: "Current EMV config version", status_log_id: 78191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:15], updated_at: ~N[2026-08-21 13:15:15]}} [2026-08-21 13:15:15.958] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-08-21T13:14:49Z", "value" => ""} [2026-08-21 13:15:16.086] [DEBUG] QUERY OK db=127.1ms queue=0.7ms idle=76.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-08-21T13:14:49Z", "keys_config", 78191, ~N[2026-08-21 13:15:15], ~N[2026-08-21 13:15:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:16.087] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795970, itemkey: "keys_config", value: nil, timestamp: "2026-08-21T13:14:49Z", message: "Current keys config version", status_log_id: 78191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:15], updated_at: ~N[2026-08-21 13:15:15]}} [2026-08-21 13:15:16.087] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-08-21T13:14:49Z", "value" => "3.8.7.3"} [2026-08-21 13:15:16.127] [DEBUG] QUERY OK db=40.1ms idle=129.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-08-21T13:14:49Z", "3.8.7.3", "application", 78191, ~N[2026-08-21 13:15:16], ~N[2026-08-21 13:15:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:16.128] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795972, itemkey: "application", value: "3.8.7.3", timestamp: "2026-08-21T13:14:49Z", message: "Current application version", status_log_id: 78191, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:16], updated_at: ~N[2026-08-21 13:15:16]}} [2026-08-21 13:15:16.128] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T13:14:49Z"} [2026-08-21 13:15:16.129] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:14:49Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<50, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 27, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:15:30.227] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T13:14:50Z"} [2026-08-21 13:15:35.228] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:14:50Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 28, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:15:35.355] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:15:35.355] [INFO ] Incoming JSON payload: {"oid":"1e74b1c9-c3a4-4afa-8769-0bd0458adf29","sn":"98251226730001","uploadTime":"2026-08-21T13:15:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"ram_free_mb","value":"878","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:15:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:15:35.356] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "1e74b1c9-c3a4-4afa-8769-0bd0458adf29", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:15:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:15:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:15:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:15:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:15:14Z", "value" => "878"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:15:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:15:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:15:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:15:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:15:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:15:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:15:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:15:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:15:14Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:15:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:15:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:15:14Z", "vendor" => "morefun"} [2026-08-21 13:15:35.356] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:15:35.356] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:15:35.356] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:15:35.357] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1692.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-08-21 13:15:35.358] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=690.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-08-21 13:15:35.358] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:15:35.358] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:15:35.359] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:15:35.434] [DEBUG] QUERY OK source="tms_terminals" db=33.7ms queue=41.4ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:15:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:15:35.434] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:15:35.435] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=76.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:697 [2026-08-21 13:15:35.476] [DEBUG] QUERY OK source="tms_terminals" db=40.1ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:15:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:15:35.503] [DEBUG] QUERY OK db=26.5ms idle=40.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "1e74b1c9-c3a4-4afa-8769-0bd0458adf29", "2026-08-21T13:15:14Z", ~N[2026-08-21 13:15:35], ~N[2026-08-21 13:15:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:15:35.503] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78193, oid: "1e74b1c9-c3a4-4afa-8769-0bd0458adf29", upload_time: "2026-08-21T13:15:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:35], updated_at: ~N[2026-08-21 13:15:35]} [2026-08-21 13:15:35.503] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:15:14Z", "value" => "morefun"} [2026-08-21 13:15:35.577] [DEBUG] QUERY OK db=31.9ms queue=42.1ms idle=27.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "morefun", "vendor", 78193, ~N[2026-08-21 13:15:35], ~N[2026-08-21 13:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:35.578] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795985, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:35], updated_at: ~N[2026-08-21 13:15:35]}} [2026-08-21 13:15:35.578] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:15:14Z", "value" => "kiosk_launcher"} [2026-08-21 13:15:35.612] [DEBUG] QUERY OK db=34.3ms idle=75.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "kiosk_launcher", "model", 78193, ~N[2026-08-21 13:15:35], ~N[2026-08-21 13:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:35.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795986, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:35], updated_at: ~N[2026-08-21 13:15:35]}} [2026-08-21 13:15:35.613] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:15:14Z", "value" => "1.0"} [2026-08-21 13:15:35.653] [DEBUG] QUERY OK db=38.9ms queue=0.1ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "1.0", "app_version", 78193, ~N[2026-08-21 13:15:35], ~N[2026-08-21 13:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:35.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795987, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:35], updated_at: ~N[2026-08-21 13:15:35]}} [2026-08-21 13:15:35.653] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:15:14Z", "value" => "13"} [2026-08-21 13:15:35.689] [DEBUG] QUERY OK db=35.7ms idle=41.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "13", "android_version", 78193, ~N[2026-08-21 13:15:35], ~N[2026-08-21 13:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:35.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795988, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:35], updated_at: ~N[2026-08-21 13:15:35]}} [2026-08-21 13:15:35.690] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:15:14Z", "value" => "878"} [2026-08-21 13:15:35.726] [DEBUG] QUERY OK db=35.2ms idle=20.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "878", "ram_free_mb", 78193, ~N[2026-08-21 13:15:35], ~N[2026-08-21 13:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:35.726] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795989, itemkey: "ram_free_mb", value: "878", timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:35], updated_at: ~N[2026-08-21 13:15:35]}} [2026-08-21 13:15:35.726] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:15:14Z", "value" => "WIFI"} [2026-08-21 13:15:35.762] [DEBUG] QUERY OK db=35.8ms queue=0.3ms idle=36.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "WIFI", "network_type", 78193, ~N[2026-08-21 13:15:35], ~N[2026-08-21 13:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:35.763] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795990, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:35], updated_at: ~N[2026-08-21 13:15:35]}} [2026-08-21 13:15:35.763] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:15:14Z", "value" => "true"} [2026-08-21 13:15:35.842] [DEBUG] QUERY OK db=79.1ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "true", "kiosk_active", 78193, ~N[2026-08-21 13:15:35], ~N[2026-08-21 13:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:35.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795991, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:35], updated_at: ~N[2026-08-21 13:15:35]}} [2026-08-21 13:15:35.843] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:15:14Z", "value" => ""} [2026-08-21 13:15:35.920] [DEBUG] QUERY OK db=74.2ms idle=83.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:15:14Z", "sim_operator", 78193, ~N[2026-08-21 13:15:35], ~N[2026-08-21 13:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:35.920] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795992, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:35], updated_at: ~N[2026-08-21 13:15:35]}} [2026-08-21 13:15:35.920] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:15:14Z", "value" => "UNKNOWN"} [2026-08-21 13:15:36.046] [DEBUG] QUERY OK db=125.3ms idle=78.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "UNKNOWN", "sim_number", 78193, ~N[2026-08-21 13:15:35], ~N[2026-08-21 13:15:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:36.046] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795993, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:35], updated_at: ~N[2026-08-21 13:15:35]}} [2026-08-21 13:15:36.046] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:15:14Z", "value" => "UNKNOWN"} [2026-08-21 13:15:36.106] [DEBUG] QUERY OK db=58.6ms idle=127.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "UNKNOWN", "sim_iccid", 78193, ~N[2026-08-21 13:15:36], ~N[2026-08-21 13:15:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:36.106] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795994, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:36], updated_at: ~N[2026-08-21 13:15:36]}} [2026-08-21 13:15:36.106] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:15:14Z", "value" => "UNKNOWN"} [2026-08-21 13:15:36.143] [DEBUG] QUERY OK db=36.3ms idle=60.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "UNKNOWN", "sim_imsi", 78193, ~N[2026-08-21 13:15:36], ~N[2026-08-21 13:15:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:36.143] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795995, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:36], updated_at: ~N[2026-08-21 13:15:36]}} [2026-08-21 13:15:36.143] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:15:14Z", "value" => "UNKNOWN"} [2026-08-21 13:15:36.189] [DEBUG] QUERY OK db=45.8ms idle=37.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "UNKNOWN", "sim_iccid2", 78193, ~N[2026-08-21 13:15:36], ~N[2026-08-21 13:15:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:36.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795996, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:36], updated_at: ~N[2026-08-21 13:15:36]}} [2026-08-21 13:15:36.189] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:15:14Z", "value" => "UNKNOWN"} [2026-08-21 13:15:36.213] [DEBUG] QUERY OK db=22.6ms idle=47.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "UNKNOWN", "sim_imsi2", 78193, ~N[2026-08-21 13:15:36], ~N[2026-08-21 13:15:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:36.213] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795997, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:36], updated_at: ~N[2026-08-21 13:15:36]}} [2026-08-21 13:15:36.213] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:15:14Z", "value" => "37"} [2026-08-21 13:15:36.247] [DEBUG] QUERY OK db=33.9ms idle=24.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "37", "data_usage_mb", 78193, ~N[2026-08-21 13:15:36], ~N[2026-08-21 13:15:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:36.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795998, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:36], updated_at: ~N[2026-08-21 13:15:36]}} [2026-08-21 13:15:36.248] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:15:14Z", "value" => "0"} [2026-08-21 13:15:36.272] [DEBUG] QUERY OK db=23.9ms queue=0.2ms idle=35.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "0", "mobile_data_mb", 78193, ~N[2026-08-21 13:15:36], ~N[2026-08-21 13:15:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:36.272] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 795999, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:36], updated_at: ~N[2026-08-21 13:15:36]}} [2026-08-21 13:15:36.273] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:15:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:15:36.334] [DEBUG] QUERY OK db=59.7ms idle=26.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78193, ~N[2026-08-21 13:15:36], ~N[2026-08-21 13:15:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:36.334] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796000, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:15:14Z", message: nil, status_log_id: 78193, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:36], updated_at: ~N[2026-08-21 13:15:36]}} [2026-08-21 13:15:45.435] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:15:50.436] [INFO ] Incoming JSON payload: {"oid":"5ef6a97b-eaf0-40a1-828d-bc1aee45f137","sn":"98251226730001","uploadTime":"2026-08-21T13:15:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"ram_free_mb","value":"883","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:15:45Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:15:50.437] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5ef6a97b-eaf0-40a1-828d-bc1aee45f137", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:15:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:15:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:15:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:15:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:15:45Z", "value" => "883"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:15:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:15:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:15:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:15:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:15:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:15:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:15:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:15:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:15:45Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:15:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:15:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:15:45Z", "vendor" => "morefun"} [2026-08-21 13:15:50.438] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:15:50.438] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:15:50.438] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:15:50.438] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=777.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-08-21 13:15:50.439] [DEBUG] QUERY OK source="parameter_templates" db=0.2ms idle=610.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-08-21 13:15:50.439] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-08-21 13:15:50.440] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [2026-08-21 13:15:50.440] [INFO ] Terminal updated: 98251226730001 [2026-08-21 13:15:50.522] [DEBUG] QUERY OK source="tms_terminals" db=39.3ms queue=42.0ms idle=1.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-08-21 13:15:50], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:122 [2026-08-21 13:15:50.523] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-08-21 13:15:50.524] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=83.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_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-08-21 13:15:50.569] [DEBUG] QUERY OK source="tms_terminals" db=44.2ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-08-21 13:15:50], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:132 [2026-08-21 13:15:50.628] [DEBUG] QUERY OK db=58.0ms queue=0.4ms idle=45.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "5ef6a97b-eaf0-40a1-828d-bc1aee45f137", "2026-08-21T13:15:45Z", ~N[2026-08-21 13:15:50], ~N[2026-08-21 13:15:50]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:134 [2026-08-21 13:15:50.629] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 78195, oid: "5ef6a97b-eaf0-40a1-828d-bc1aee45f137", upload_time: "2026-08-21T13:15:45Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:50], updated_at: ~N[2026-08-21 13:15:50]} [2026-08-21 13:15:50.629] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:15:45Z", "value" => "morefun"} [2026-08-21 13:15:50.680] [DEBUG] QUERY OK db=50.5ms idle=60.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "morefun", "vendor", 78195, ~N[2026-08-21 13:15:50], ~N[2026-08-21 13:15:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:50.680] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796017, itemkey: "vendor", value: "morefun", timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:50], updated_at: ~N[2026-08-21 13:15:50]}} [2026-08-21 13:15:50.680] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-08-21T13:15:45Z", "value" => "kiosk_launcher"} [2026-08-21 13:15:50.729] [DEBUG] QUERY OK db=48.6ms idle=51.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "kiosk_launcher", "model", 78195, ~N[2026-08-21 13:15:50], ~N[2026-08-21 13:15:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:50.729] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796018, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:50], updated_at: ~N[2026-08-21 13:15:50]}} [2026-08-21 13:15:50.729] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:15:45Z", "value" => "1.0"} [2026-08-21 13:15:50.825] [DEBUG] QUERY OK db=95.0ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "1.0", "app_version", 78195, ~N[2026-08-21 13:15:50], ~N[2026-08-21 13:15:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:50.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796019, itemkey: "app_version", value: "1.0", timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:50], updated_at: ~N[2026-08-21 13:15:50]}} [2026-08-21 13:15:50.825] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:15:45Z", "value" => "13"} [2026-08-21 13:15:50.872] [DEBUG] QUERY OK db=46.1ms idle=96.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "13", "android_version", 78195, ~N[2026-08-21 13:15:50], ~N[2026-08-21 13:15:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:50.872] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796020, itemkey: "android_version", value: "13", timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:50], updated_at: ~N[2026-08-21 13:15:50]}} [2026-08-21 13:15:50.872] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:15:45Z", "value" => "883"} [2026-08-21 13:15:50.924] [DEBUG] QUERY OK db=51.3ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "883", "ram_free_mb", 78195, ~N[2026-08-21 13:15:50], ~N[2026-08-21 13:15:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:50.924] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796021, itemkey: "ram_free_mb", value: "883", timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:50], updated_at: ~N[2026-08-21 13:15:50]}} [2026-08-21 13:15:50.925] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:15:45Z", "value" => "WIFI"} [2026-08-21 13:15:50.949] [DEBUG] QUERY OK db=23.0ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "WIFI", "network_type", 78195, ~N[2026-08-21 13:15:50], ~N[2026-08-21 13:15:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:50.949] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796022, itemkey: "network_type", value: "WIFI", timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:50], updated_at: ~N[2026-08-21 13:15:50]}} [2026-08-21 13:15:50.949] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:15:45Z", "value" => "true"} [2026-08-21 13:15:51.013] [DEBUG] QUERY OK db=63.9ms idle=25.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "true", "kiosk_active", 78195, ~N[2026-08-21 13:15:50], ~N[2026-08-21 13:15:50]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:51.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796023, itemkey: "kiosk_active", value: "true", timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:50], updated_at: ~N[2026-08-21 13:15:50]}} [2026-08-21 13:15:51.014] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:15:45Z", "value" => ""} [2026-08-21 13:15:51.076] [DEBUG] QUERY OK db=61.0ms queue=0.5ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-08-21T13:15:45Z", "sim_operator", 78195, ~N[2026-08-21 13:15:51], ~N[2026-08-21 13:15:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:51.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796024, itemkey: "sim_operator", value: nil, timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:51], updated_at: ~N[2026-08-21 13:15:51]}} [2026-08-21 13:15:51.076] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:15:45Z", "value" => "UNKNOWN"} [2026-08-21 13:15:51.134] [DEBUG] QUERY OK db=57.2ms idle=62.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "UNKNOWN", "sim_number", 78195, ~N[2026-08-21 13:15:51], ~N[2026-08-21 13:15:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:51.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796025, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:51], updated_at: ~N[2026-08-21 13:15:51]}} [2026-08-21 13:15:51.134] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:15:45Z", "value" => "UNKNOWN"} [2026-08-21 13:15:51.157] [DEBUG] QUERY OK db=22.3ms queue=0.1ms idle=58.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "UNKNOWN", "sim_iccid", 78195, ~N[2026-08-21 13:15:51], ~N[2026-08-21 13:15:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:51.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796026, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:51], updated_at: ~N[2026-08-21 13:15:51]}} [2026-08-21 13:15:51.157] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:15:45Z", "value" => "UNKNOWN"} [2026-08-21 13:15:51.232] [DEBUG] QUERY OK db=74.2ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "UNKNOWN", "sim_imsi", 78195, ~N[2026-08-21 13:15:51], ~N[2026-08-21 13:15:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:51.232] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796027, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:51], updated_at: ~N[2026-08-21 13:15:51]}} [2026-08-21 13:15:51.232] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:15:45Z", "value" => "UNKNOWN"} [2026-08-21 13:15:51.273] [DEBUG] QUERY OK db=40.0ms idle=75.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "UNKNOWN", "sim_iccid2", 78195, ~N[2026-08-21 13:15:51], ~N[2026-08-21 13:15:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:51.273] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796028, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:51], updated_at: ~N[2026-08-21 13:15:51]}} [2026-08-21 13:15:51.273] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:15:45Z", "value" => "UNKNOWN"} [2026-08-21 13:15:51.307] [DEBUG] QUERY OK db=33.7ms idle=41.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "UNKNOWN", "sim_imsi2", 78195, ~N[2026-08-21 13:15:51], ~N[2026-08-21 13:15:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:51.308] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796029, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:51], updated_at: ~N[2026-08-21 13:15:51]}} [2026-08-21 13:15:51.308] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:15:45Z", "value" => "37"} [2026-08-21 13:15:51.348] [DEBUG] QUERY OK db=40.1ms idle=35.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "37", "data_usage_mb", 78195, ~N[2026-08-21 13:15:51], ~N[2026-08-21 13:15:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:51.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796030, itemkey: "data_usage_mb", value: "37", timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:51], updated_at: ~N[2026-08-21 13:15:51]}} [2026-08-21 13:15:51.349] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:15:45Z", "value" => "0"} [2026-08-21 13:15:51.381] [DEBUG] QUERY OK db=31.9ms idle=41.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "0", "mobile_data_mb", 78195, ~N[2026-08-21 13:15:51], ~N[2026-08-21 13:15:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:51.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796031, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:51], updated_at: ~N[2026-08-21 13:15:51]}} [2026-08-21 13:15:51.382] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:15:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-08-21 13:15:51.432] [DEBUG] QUERY OK db=48.6ms idle=34.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-08-21T13:15:45Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 78195, ~N[2026-08-21 13:15:51], ~N[2026-08-21 13:15:51]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:144 [2026-08-21 13:15:51.433] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 796032, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-08-21T13:15:45Z", message: nil, status_log_id: 78195, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-08-21 13:15:51], updated_at: ~N[2026-08-21 13:15:51]}} [2026-08-21 13:15:51.433] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-08-21T13:14:50Z"} [2026-08-21 13:15:51.435] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:14:50Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 153, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 29, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:16:10.411] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-08-21T13:14:50Z"} [2026-08-21 13:16:10.412] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_1"}} terminating ** (CaseClauseError) no case clause matching: {:ok, %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-08-21T13:14:50Z"}} (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:39: DaProductApp.MQTT.Handler.handle_message/3 (tortoise 0.10.0) lib/tortoise/handler.ex:348: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:254: Tortoise.Connection.Controller.handle_package/2 (stdlib 5.2.3.2) gen_server.erl:1121: :gen_server.try_handle_cast/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {:"$gen_cast", {:incoming, <<58, 156, 1, 0, 22, 111, 116, 97, 47, 97, 99, 107, 47, 57, 56, 50, 53, 49, 50, 50, 54, 55, 51, 48, 48, 48, 49, 0, 30, 123, 34, 111, 105, 100, 34, 58, 34, 34, 44, 34, 115, 110, 34, 58, 34, 57, ...>>}} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_1", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_1", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_1"]}} [2026-08-21 13:16:15.558] [INFO ] Received status update for terminal 98251226730001 [2026-08-21 13:16:15.558] [INFO ] Incoming JSON payload: {"oid":"f87b70dd-0ba0-45fa-9060-d1499d1b1efd","sn":"98251226730001","uploadTime":"2026-08-21T13:16:15Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-08-21T13:16:15Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-08-21T13:16:15Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-08-21T13:16:15Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-08-21T13:16:15Z"},{"itemkey":"ram_free_mb","value":"881","timestamp":"2026-08-21T13:16:15Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-08-21T13:16:15Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-08-21T13:16:15Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-08-21T13:16:15Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-08-21T13:16:15Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-08-21T13:16:15Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-08-21T13:16:15Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-08-21T13:16:15Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-08-21T13:16:15Z"},{"itemkey":"data_usage_mb","value":"37","timestamp":"2026-08-21T13:16:15Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-08-21T13:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-08-21 13:16:15.559] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f87b70dd-0ba0-45fa-9060-d1499d1b1efd", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-08-21T13:16:15Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-08-21T13:16:15Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-08-21T13:16:15Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-08-21T13:16:15Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-08-21T13:16:15Z", "value" => "881"}, %{"itemkey" => "network_type", "timestamp" => "2026-08-21T13:16:15Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-08-21T13:16:15Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-08-21T13:16:15Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-08-21T13:16:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-08-21T13:16:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-08-21T13:16:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-08-21T13:16:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-08-21T13:16:15Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-08-21T13:16:15Z", "value" => "37"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-08-21T13:16:15Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-08-21T13:16: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 Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-08-21T13:16:15Z", "vendor" => "morefun"} [2026-08-21 13:16:15.560] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-08-21 13:16:15.560] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-08-21 13:16:15.560] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-08-21 13:16:15.565] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms queue=2.5ms 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-08-21 13:16:15.570] [DEBUG] QUERY OK source="parameter_templates" db=3.4ms idle=609.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